??? 02/23/09 21:04 Read: times Msg Score: +1 +1 Good Answer/Helpful |
#162722 - It took me ages ! Responding to: ???'s previous message |
There are two problems with your code:
The i2c_read(char ack) function needs to force SDA high before the bits are clocked in. So that SDA is an high impedance input. And the bit that drove me mad: You have *buf++ = read(NACK) followed by buf[1] = read(ACK) You meant to have: buf[0] = read(NACK); ... buf[1] = read(ACK); ... buf[20] = read(NACK); Also you use a uint8_t for addr instead of a uint16_t. You won't get far on a 24C512 with a uint8_t ! David. |
Topic | Author | Date |
AT24C512 Sequential Read failed!! | 01/01/70 00:00 | |
the IIC engine is identical ... | 01/01/70 00:00 | |
Sample code | 01/01/70 00:00 | |
what are the symptoms? | 01/01/70 00:00 | |
symptoms | 01/01/70 00:00 | |
A common mistake... | 01/01/70 00:00 | |
Your code looks fine | 01/01/70 00:00 | |
It took me ages ! | 01/01/70 00:00 | |
uint8_t range | 01/01/70 00:00 | |
confusion | 01/01/70 00:00 | |
you use uint8_t in your read_seq () | 01/01/70 00:00 | |
Do you want the full corrected source code ? | 01/01/70 00:00 | |
my own code | 01/01/70 00:00 | |
An explanation | 01/01/70 00:00 | |
code update | 01/01/70 00:00 | |
diff is your friend | 01/01/70 00:00 | |
size -1 | 01/01/70 00:00 | |
write program, rather than code... | 01/01/70 00:00 | |
It's Working![]() | 01/01/70 00:00 |