реклама на сайте
подробности

 
 
> twi(i2c)-интерфейс, обеспечение надежности передачи
namelos
сообщение Nov 22 2007, 15:04
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324



Доброе время суток всем.
Разрабатываю систему измерения и контроля температуры на 36 датчиков, состоящую из 3 контроллеров(slaves) на 12 датчиков(опрос, контроль, вкл./выкл. реле) и контроллера(master) отображения информации на GLCD и ввода данных на рабочие контроллеры(запись в eeprom). Коммуникация главного контроллера осуществляется по twi(i2c)-интерфейсу.
Пока работаю с макеткой. Нашел bug при обрывaнии линии twi, зависает главный контроллер, т.к. TWI Interrupt не был обнулен, т.е не произошло нормального завершения передачи информации.
Вопрос такой, уважаемые эмбеддеры, для контроля работы twi обязательно использовать еще таймер, который при зависании квитирует Interrupt?
И еще, slaves посылают пакеты в 40 байт, обязательна ли при такой длине пакета crc проверка?
Заранее всем спасибо.

Сообщение отредактировал namelos - Nov 22 2007, 15:05
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
namelos
сообщение Nov 23 2007, 19:34
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324



Цитата(bodja74 @ Nov 23 2007, 23:00) *
3 Со стопом там тоже не все чисто ,так как проверки флага там нет стоит сделать задержку не менее одного такта шины,или обеспечить таковую между пакетами ,вставив какую нибудь обработку кода.В противном случае легко перейдем в ступор.Хотя может в новых камнях это продебажили - незнаю.

несовсем понятно...начало transreceive пакета реализуется только в случае недействительного TWI Interrupt (TWIE =0)
Цитата(bodja74 @ Nov 23 2007, 23:00) *
4 Зависон у Вас от того ,что Вы пропустили пару раз подряд НАСК и никак на это не отреагировали.

Почему не отреагировал, вот :
Код
TWCR = (1<<TWEN)|                          // TWI Interface enabled
             (0<<TWIE)|(1<<TWINT)|                  // Disable TWI Interrupt and clear the flag
             (0<<TWEA)|(0<<TWSTA)|(1<<TWSTO)|       // Initiate a STOP condition. TWSTO reset
             (0<<TWWC);

Контроллер не зависает, он из состояния interrupt не выходит, а точнее выходит, но TWIE не обнуляет.

Сообщение отредактировал namelos - Nov 23 2007, 19:40
Go to the top of the page
 
+Quote Post
singlskv
сообщение Nov 23 2007, 20:19
Сообщение #3


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(namelos @ Nov 23 2007, 22:34) *
Контроллер не зависает, он из состояния interrupt не выходит, а точнее выходит, но TWIE не обнуляет.

Покажите полный код работы с i2c на мастере.

ИМХО, в ситуациях обрыва/коротыша на линиях i2c, иногда без таймаутов не
обойтись...
Это касается только мастера...
Слейву пофиг на обрыва/коротыш если обработаны все состояния внутреннего i2c автомата...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- namelos   twi(i2c)-интерфейс   Nov 22 2007, 15:04
- - umup   да, TWI на АВР часто глухо виснет при замыканиях/о...   Nov 22 2007, 15:29
|- - defunct   Цитата(umup @ Nov 22 2007, 18:29) да, TWI...   Nov 22 2007, 17:23
- - namelos   Цитата(umup @ Nov 22 2007, 19:29) да, TWI...   Nov 22 2007, 15:41
|- - Dog Pawlowa   Цитата(namelos @ Nov 22 2007, 19:41) umup...   Nov 22 2007, 17:02
- - umup   defunct никак не могу понять - как отловить заверш...   Nov 22 2007, 20:08
|- - IgorKossak   Цитата(umup @ Nov 22 2007, 22:08) defunct...   Nov 22 2007, 20:37
- - namelos   Спасибо, defunct. A как насчет crc-проверки после ...   Nov 22 2007, 20:50
|- - defunct   Цитата(namelos @ Nov 22 2007, 23:50) A ка...   Nov 23 2007, 10:35
- - umup   IgorKossak а если нужно отловить момент завершения...   Nov 23 2007, 11:12
|- - defunct   Цитата(umup @ Nov 23 2007, 14:12) а если ...   Nov 23 2007, 11:29
|- - IgorKossak   Цитата(umup @ Nov 23 2007, 13:12) IgorKos...   Nov 23 2007, 13:43
- - namelos   Цитата(IgorKossak @ Nov 23 2007, 17:43) П...   Nov 23 2007, 18:16
|- - bodja74   Цитата(namelos @ Nov 23 2007, 21:16) А ка...   Nov 23 2007, 19:00
|- - bodja74   Цитата(namelos @ Nov 23 2007, 22:34) несо...   Nov 23 2007, 20:33
|- - bodja74   Все ,что может быть понято неправильно ,понимается...   Nov 23 2007, 21:16
- - namelos   Код ISR (TWI_vect) { static uint8_t twi_...   Nov 23 2007, 20:30
- - namelos   Цитата(bodja74 @ Nov 24 2007, 00:33) Не п...   Nov 23 2007, 20:38
|- - bodja74   Цитата(namelos @ Nov 23 2007, 23:38) Код ...   Nov 23 2007, 20:46
- - namelos   Повторюсь, пакета данных. Если вы посмотрите на In...   Nov 23 2007, 20:52


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 17:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016