??? 05/29/07 11:07 Read: times |
#139963 - OOPS wrong logic Responding to: ???'s previous message |
OOPS should have been:-
polling sequence of: for (attempts = 10; attempts-- && (!i2c_start() || !i2c_putbyte(0xAE)); ) delay_ms(1); return (attempts != 0); I would also suggest that you put debug macro statements in to record the value of "state" for every primitive. David. David Prentice said:
Philippe,
Your primitive functions look fine to me. No I have not run the code on a real chip. However I would suggest that you actually use the return values from the primitive functions. i.e. if !i2c_start() then the bus is NOT free. and since a i2c_putbyte(c) is normally followed by looking for an ACK, why not combine with readACK() and make it: bit i2c_putbyte(c) and use the result. So after you have sent i2c_stop() to initiate a page-write on your EEPROM, the device will no longer acknowledge a i2c_putbyte(SLAVE_ADS) until it is ready. Either just wait for 5 mS for the write to finish, or use a polling sequence of: for (attempts = 10; attempts-- && !i2c_start() && !i2c_putbyte(0xAE); ) delay_ms(1); return (attempts != 0); In practice these EEPROMS have typical write times of about 3mS unless you are using a very low Vcc. HTH David. |
Topic | Author | Date |
I2C eeprom 24c02 byte write stuck in ack | 01/01/70 00:00 | |
timing | 01/01/70 00:00 | |
timing | 01/01/70 00:00 | |
what\'s the problem, exactly? | 01/01/70 00:00 | |
timing | 01/01/70 00:00 | |
how do you know that? | 01/01/70 00:00 | |
How do you know that? | 01/01/70 00:00 | |
do you have some other version of code? | 01/01/70 00:00 | |
do you have some other version of code? | 01/01/70 00:00 | |
A work around For That | 01/01/70 00:00 | |
work around For That | 01/01/70 00:00 | |
Well in my guess, you have same problem:-) as mine | 01/01/70 00:00 | |
Polling the 24C02 EEPROM for ready | 01/01/70 00:00 | |
OOPS wrong logic | 01/01/70 00:00 | |
I thought that I should try your code | 01/01/70 00:00 | |
Polling the 24C02 EEPROM for ready | 01/01/70 00:00 | |
great, but do not forget to mention | 01/01/70 00:00 | |
The Clock | 01/01/70 00:00 | |
addition - show the full picture - 'edit' to above![]() | 01/01/70 00:00 | |
i2c function signatures | 01/01/70 00:00 | |
hello friend | 01/01/70 00:00 |