The EEPROM on the mainboard is an ATMEL AT24C04, 4k bit, two wire (I2C) serial EEPROM. The datasheet for it can be found here. This EEPROM is used to store the V2s programs. If you want to interface to the EEPROM I would recommend building the "Easy I2C Bus Interface" which can be found here, you can see the simple schematic for it here. You don't need the two 4.7k pullup resistors since the pins are already pulled up. Its very easy to read out the contents using PonyProg, as opposed to the way I did it, which was programing a microcontroller to do the talking for me.it seems that all the device address pins are grounded.
Positional Programs
The Positional programs all use an 8 byte instruction code that represents the state of the V2 at each step. The first instruction always represents the state of the V2 when it entered the programing mode. The last byte of the range (0x038, 0x071 or 0xE3) represents the number of instructions in the program (0x00 - 0x06 for the Right and Left Positional programs and 0x00 - 0x0D), when the program is cleared the instructions are not erased, rather the number of instructions is set to 0x00.
I am still working on interpreting the 8 byte instruction code, so what follows is not to be considered entirely accurate.
8 Byte Instruction Code |
|
|
Byte
|
Function |
| 1st | The 1st byte of the instruction represents the state of the feet touch sensors. The first four bits are always 0, the last four bits are all active low (ie, 0 when pressed, 1 otherwise) and represent the Front Right, Back Right, Front Left and Back Left buttons. |
| 2nd | The 2nd byte of the instruction represents the position of the Right Wrist encoder. |
| 3rd | The 3rd byte of the instruction represents the position of the Left Wrist encoder. |
| 4th | The 4th byte of the instruction represents the position of the Right Shoulder pot. |
| 5th | The 5th byte of the instruction represents the position of the Left Shoulder pot. |
| 6th | The 6th byte of the instruction represents the position of the Waist Rotate Left / Right pot |
| 7th | The 7th byte of the instruction represents the position of the Waist Tilt Forward / Backward pot |
| 8th | The 8th byte of the instruction represents the position of the Waist Tilt Left / Right encoder. |
Controller Programs
The Controller programs all use a 2 byte instruction code. The first byte is the same as the IR signal for the button pressed without the 0x3 prefix. These can be found here. The second byte of the instruction is a repetition code (valid range of 0x0 - 0x1D), which I beleive may be specific to functions involving the right stick. Otherwise the second byte is always 0x0. The first byte in the range (0x100, 0x130 or 0x160) represents the number of instructions in the program (0x00 - 0x14), and like the Positional programs, when the program is cleared the instructions are not erased, rather the number of instructions is set to 0x00.