??? 10/27/08 13:13 Read: times |
#159384 - Re: david Responding to: ???'s previous message |
Thanx for reply David,
David Prentice said:
From your postings it appears that the 24C16 does not ACK its slave address. ( 0xA0 write / 0xA1 read ).
If you really are getting the correct SDA and SCL signals on the [b]actual chip[/b], but the eeprom is not responding then you are probably using an inappropriate slave address. You can read and write the DS1307 RAM registers so the basic i2c code must be ok with slave address 0xD0/0xD1. I would guess that you are using a solderless white breadboard. David. Both DS1307 & AT24C16 are DIP & are on an IC Socket which is soledered on PCB. voltages are measured & waveforms are checked at the pins where it enters IC. I have a routine that determines timeout if ACK is not recieved for a slave address, (here program looks like getting hanged for 10secs). But when I am addressing 24c16 it doesnot show this behaviour (if I remove EEPROM from PCB then this kind of behaviour is observed). Addresses 0xA0, 0xA1, 0xD0 & 0xD1 are #defined as EEPROM_WR, EEPROM_RD, RTC_WR & RTC_RD. The same are used while calling read/write routines. Also pattern of 0xA0 is observed on oscilloscope while writing to 24c16. (similarly 0xA1 is observed during read [precaution of dummy write of address is also taken before read]) Regards, Mahesh |