| ??? 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 |



