For the really last time, i'm still sure your SDA/SCL are reverted and/or you don't have the right Pull-Up resistors on SDA & SCL, and i also endorse the A<2:0> setting.
OK why i stick to it ?
1. Because i already used something like that in one of my Radio Decode Dongle to confirm the end-user haven't swap the SDA/SCL line when reading in circuit the target I2C EEprom inside the radio.
2. Let's say i use a at24c1024 here with the following...
I got the expected..Code:CONT CON %10100000 ADDR VAR WORD ByteA VAR BYTE SDA var PORTC.4 SCL var PORTC.3 PAUSE 500 Start: for addr = 0 to 10 ByteA=ADDR.LOWBYTE I2CWRITE SDA,SCL,CONT,ADDR,[ByteA] PAUSE 20 NEXT FOR ADDR=0 TO 10 I2CREAD SDA,SCL,CONT,ADDR,[ByteA] HSEROUT ["ADDR=", DEC ADDR,_ " ByteA=", DEC ByteA,13,10] NEXT
But now if in my code i swap the SDA, SCL definition to...Code:ADDR=0 ByteA=0 ADDR=1 ByteA=1 ADDR=2 ByteA=2 ADDR=3 ByteA=3 ADDR=4 ByteA=4 ADDR=5 ByteA=5 ADDR=6 ByteA=6 ADDR=7 ByteA=7 ADDR=8 ByteA=8 ADDR=9 ByteA=9 ADDR=10 ByteA=10
i got...Code:SDA var PORTC.3 SCL var PORTC.4
Amazing how close to your problem it is huh?Code:ADDR=0 ByteA=8 ADDR=1 ByteA=8 ADDR=2 ByteA=8 ADDR=3 ByteA=8 ADDR=4 ByteA=8 ADDR=5 ByteA=8 ADDR=6 ByteA=8 ADDR=7 ByteA=8 ADDR=8 ByteA=8 ADDR=9 ByteA=8 ADDR=10 ByteA=8
Let's do it much funky now... let's totally remove the EEPROM from the circuit. With the pull-up installed i still have all those 8, without pull-up i got all 0.
Now, with the right code, but the EEPROM have the wrong A<2:0> setting...
i got all 16, reverted... all 8.
Enjoy!




Bookmarks