Перейти к содержанию
    

I2C ATTiny214

Искал я чип для очень простой задачи и обнаружил новые ATTiny серий 0 и 1. Вроде ATTiny214 как раз мне подойдет. Там есть аппаратная поддержка I2C, но в даташите больше не публикуют примеров использования. А драйвер I2C на сайте весьма громозкий - поддерживает multiple masters, lost arbitration и т.д. что мне ни к чему. Один мастер, один слейв.

 

Кто нибуть видел примеры очень простого драйвера I2C для этих чипов?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробовал совсем простой код.

// write addr to start write op
TWI0.MADDR                    = slave_adr << 1;
while((TWI0_MSTATUS & TWI_WIF_bm) == 0); // wait to write done
TWI0.MDATA = 0; // addr 0
while((TWI0_MSTATUS & TWI_WIF_bm) == 0); // wait to write done
TWI0.MCTRLB |= TWI_ACKACT_NACK_gc; //?
TWI0.MADDR                    = slave_adr << 1 | 1; // addr to read
while((TWI0_MSTATUS & TWI_RIF_bm) == 0); // wait for read done
data = TWI0.MDATA;
TWI0.MCTRLB |= TWI_ACKACT_NACK_gc;
TWI0.MCTRLB |= TWI_MCMD_STOP_gc;


// end
TWI0.MSTATUS |= (TWI_RIF_bm | TWI_WIF_bm);
TWI0.MCTRLA &= ~(TWI_RIEN_bm | TWI_WIEN_bm);


 

Даже работает. Понятно что бесконечных циклов делать не следует, но вроде флаги WIF и RIF всегда устанавливаются. При одном клиенте на линии вроде бы ошибок ждать не приходится. А если совсем зависнет, Watchdog все равно перезапустит. Господа гуру: какие подводные камни ожидать?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...