Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Вопрос по TWI slave в AVR
Отправлено
fmishin (95.86.232.17) 26 июля 2010, г. 15:22
Всем добрый день! Может, кто сталкивался со следующей ситуацией:
Есть соединённые по i2c (оптически развязан, SCL в одну сторону, SDA в обе) mega64 (master) и mega88 (slave). В мастере работа организована линейно - команда, ждём установки TWINT, следующая, ну и так далее. В слейве - по прерываниям, стандартный switch и смотрим в TWSR код операции.
Проблема заключается в следующем - и чтение, и запись почему-то проходят только в первый раз. После формирования мастером STOP слейв наглухо прижимает SCL к земле и разбудить его может только перезагрузка. В чём может быть причина? Отладка показала, что команду STOP слейв чувствует, т.е. TWSR становится как положено 0xA0, а при дальнейшей записи TWCR = (1<<TWSTO)|(1<<TWINT)|(1<<TWEN)|(1<<TWIE); виснет и жмёт к земле SCL.
Составить ответ | Вернуться на конференцию
Ответы