Тут у меня небольшая проблемка: Прилепил к меге 16 память 24с256.
Но чё-то не заработало. Использовал программный i2c из кодэвижена.
Раньше работал с ds1307. Всё нормально.
Процедуры работы с памятью от termostat из примера 8535 и 24с256.
Памяти много перепробовал. Программатором читаются.
#asm
.equ __i2c_port=0x1b ;PORTA
.equ __scl_bit=0 ;
.equ __sda_bit=1 ;
#endasm
#define EEPROM_BUS_ADDRESS 0xa0(ноги на минус)
void write_byte_eeprom (unsigned int address, unsigned char data)
{
unsigned char sSREG;
sSREG = SREG; // ?aaeno? Noaoona IE
#asm ("cli")
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | ((unsigned char)(address>>8)<<1));
i2c_write((unsigned char)address);
i2c_write(data);
i2c_stop();
SREG = sSREG;
delay_ms(10);
}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
unsigned char read_byte_eeprom (unsigned int address)
{
unsigned char data;
unsigned char sSREG;
sSREG = SREG;
#asm ("cli")
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | ((unsigned char)(address>>8)<<1));
i2c_write((unsigned char)address);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | ((unsigned char)(address>>8)<<1) | 1);
data = i2c_read(0);
i2c_stop();
SREG = sSREG;
return data;
}