До этого времени обходился без применения i2c шины. Решил разобраться с ней и застопорился. Для начала хочу просто записать/прочитать байт в 24С128. Написал вот такой код.
СТАРТ выводится нормально, код подтверждения (0x08) приходит, потом пихаю в TWDR адрес устройства + W, и даю команду на передачу, и ничего не происходит. В регистре TWSR остаётся код 0x08, а в TWCR - 0xEC (11101100)
Подскажите где я туплю??
Код:
TWSR=0x00; //
TWBR=0x20; // СКОРОСТЬ 100.000 КГЦ
TWCR=0b01000100; // ВКЛЮЧАЮ МОДУЛЬ TWI
ПОТОМ В ОСНОВНОМ ЦИКЛЕ
TWCR |= 0x20; // ВЫДАТЬ В ЛИНИЮ СТАРТ
TWCR |= 0x80; // СБРАСЫВАЕМ TWINT
while (TWCR & 0x80 ) {}// ЖДЕМ УСТАНОВКИ ФЛАГА TWINT
if (TWSR==0x08) // ЕСЛИ КОД ПОДТВЕРЖДЕНИЯ РАВЕН 0x08
{
TWDR=0b10100000; // ЗАГРУЖАЕМ АДРЕС УСТРОЙСТВА К КОТОРОМУ ОБРАЩАЕМСЯ (SLA+W)
TWCR |= 0x40; // ИНИЦИАЛИЗАЦИЯ ПЕРЕДАЧИ
TWCR |= 0x80; // СБРАСЫВАЕМ TWINT
while(TWCR & 0x80){}// ЖДЕМ УСТАНОВКИ ФЛАГА TWINT
}
Пробую в железе.
