I am making some progress on this.

I have all of the I2C code an an ISRASM. I attached the current code in case anyone else wishes to follow along and or better yet improve/fix it.
The code for saving bytes from the Atom Pro to the Nano appears to be working pretty well. So far I have only tested it to save one byte at a time... Here is a logic trace of a simple write:
Attachment:
Trace-Nano-I2C-write.jpg [ 16.2 KiB | Viewed 876 times ]
The code to query data from the Nano to the the pro works some of the times, especially if I only do one byte. If I do multiple bytes something gets confused, I am still playing around with the different state flags to see what works for what... Here is a trace of two reads done in a row:
Attachment:
Trace-Nano-I2c-Read.jpg [ 16.64 KiB | Viewed 876 times ]
Not sure why it thinks it is trying to go to ID 47?
The simple Atom Pro test code is simply:
Code:
; simple test to loop I2c Outputs... to try to see what the Nano sees.
i2creg var byte
i2cval var byte
i2cdatain var byte(4)
i2creg = 0
i2cval = 0
Main:
toggle p12
I2cout p0, p1, 0x42, [i2creg, i2cval]
i2cval = i2cval + 1
if i2creg >= 9 then
i2creg = 0
toggle p13
; lets try reading several of them back...
i2cout p0, p1, 0x42, [0]
i2cin p0, p1, 0x42, [i2cdatain(0)]
i2cin p0, p1, 0x42, [i2cdatain(1)]
; i2cin p0, p1, 0x42, [i2cdatain(0), i2cdatain(1), i2cdatain(2), i2cdatain(3)]
serout s_out, i9600, [hex i2cdatain(0), " ", hex i2cdatain(1), " ", hex i2cdatain(2), " ", hex i2cdatain(3), 13]
pause 150
else
i2creg = i2creg + 1
endif
pause 25
goto main
That's all for now. It may be a few days before I play some more with this, I am now rebuilding my hex robot...
Kurt
P.S - I forgot to mention, please forgive my programming here, this is the first time I ever looked at a PIC microprocessor. Took me a little while to figure out how to do things like address an array. Also not always sure how often I need to do bank selects...