|
twi(i2c)-интерфейс, обеспечение надежности передачи |
|
|
|
Nov 22 2007, 15:04
|
Частый гость
 
Группа: Свой
Сообщений: 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
|
|
|
|
|
 |
Ответов
|
Nov 23 2007, 19:34
|
Частый гость
 
Группа: Свой
Сообщений: 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
|
|
|
|
|
Nov 23 2007, 20:33
|
Знающий
   
Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984

|
Цитата(namelos @ Nov 23 2007, 22:34)  несовсем понятно...начало transreceive пакета реализуется только в случае недействительного TWI Interrupt (TWIE =0) Не путайте TWIE с TWINT  В момент записи TWINT=1 ,TWINT сбрасываетя в 0 ,и дожидаемся на нем 1 как завершение выполнения команды или можем перейти на прерывание. Цитата Контроллер не зависает, он из состояния interrupt не выходит, а точнее выходит, но TWIE не обнуляет. Ну прям сказки  (0<<TWIE) и при этом ,постоянно залетает в прерывание  ,скорее всего эта команда и не обрабатывается .
|
|
|
|
Сообщений в этой теме
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 singlskv Цитата(namelos @ Nov 23 2007, 22:34) Конт... Nov 23 2007, 20:19 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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|