Прилепил к меге 24с256. Адресные ноги подтянуты к земле. Но попытки чтения и записи в память не увенчались успехом. Пишу в КодеВижен. Доэтого работал с ds1307. Работает нормально.
Использую встроенный в компилятор I2C. #define EEPROM_BUS_ADDRESS 0xA0
bit i2c_error;
unsigned char at24c08_read(unsigned int address) { unsigned char data; unsigned char temp_i; temp_i = SREG.7; #asm("cli")
i2c_error=0; data = ((unsigned char)(address>>7))&0x0e; if (!(i2c_start()&& i2c_write(EEPROM_BUS_ADDRESS | data)&& i2c_write((unsigned char)(address))&& i2c_start()&& i2c_write(EEPROM_BUS_ADDRESS | data | 1))) { i2c_error=1; } else data=i2c_read(0); i2c_stop(); SREG.7 = temp_i; return data; }
void at24c08_write(unsigned int address, unsigned char data) { unsigned char temp_i; temp_i = SREG.7; #asm("cli") i2c_error=0;
if (!(i2c_start()&& i2c_write(EEPROM_BUS_ADDRESS | (((unsigned char)(address>>7))&0x0e))&& i2c_write((unsigned char)(address))&& i2c_write(data))) { i2c_error=1; } i2c_stop();
delay_ms(10); SREG.7 = temp_i; }
--------------------
<<Первая производная от чужой идеи - уже твоя идея.>>
|