|
|
 |
Ответов
|
Feb 28 2009, 16:19
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250

|
Господа знатоки ATMeg !
Есть ли способ вывести из зависа slave TWI atmega48 ?
Симптом такой - вдруг на SLA+W выдает NACK, потом SDA (или оба сигнала) залипает в 0. Импульсы по SCL не помогают - SDA переходит в 1, но после включения мастера SCL снова сваливается в 0 - сразу. Мастер не виноват - если slave сбросить, работа восстанавливается.
Cама 48 продолжает работать во время зависа, просто не видит аварии на порту - нет прерывания.
Причина повисания - spike на шине. Установлено почти достоверно.
Есть ли возможность изнутри 48 выяснить факт аварии на шине, и что-нибудь сделать ? Снаружи, как я понимаю, ничего ее не проймет.
--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
|
|
|
|
|
Feb 28 2009, 17:16
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(DS @ Feb 28 2009, 18:19)  Есть ли способ вывести из зависа slave TWI atmega48 ? Сбросить TWI модуль: TWCR = (1 << TWINT); и заново инициализировать через некоторое время (сам инициализирую через 1ms после сброса). Цитата Есть ли возможность изнутри 48 выяснить факт аварии на шине, и что-нибудь сделать ? Должно было быть прерывание со статусом 0. Но если его действительно нет, можно привязаться к таймауту.
|
|
|
|
|
Feb 28 2009, 17:26
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250

|
Цитата(defunct @ Feb 28 2009, 20:16)  Сбросить TWI модуль:
TWCR = (1 << TWINT);
Должно было быть прерывание со статусом 0. Но если его действительно нет, можно привязаться к таймауту. Чтобы сбросить, надо узнать, что есть проблема. А прерывание не вырабатывается, я так и этак проверял, похоже статус остается F8. Таймаут не от чего отсчитывать - он же не реагирует на SLA+W, соответственно, не знает, что к нему обратились. Разве что мониторить состояния пинов, но тут тоже возникает сложность - а если мастер просто шину для себя придержал ?
--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
|
|
|
|
|
Feb 28 2009, 17:30
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(DS @ Feb 28 2009, 19:26)  Таймаут не от чего отсчитывать - он же не реагирует на SLA+W, соответственно, не знает, что к нему обратились. Таймаут можно считать от последнего прерывания, и от инициализации TWI. Цитата а если мастер просто шину для себя придержал ? то сброс TWI модуля этого slave никак не повлияет на текущую транзакцию к другому slave'у.
|
|
|
|
Сообщений в этой теме
zoddy вопрос по работе TWI Feb 18 2009, 04:53 ARV Цитата(zoddy @ Feb 18 2009, 07:53) Всем д... Feb 18 2009, 06:19 zoddy Цитата(ARV @ Feb 18 2009, 11:19) а разве ... Feb 18 2009, 06:54  Maik-vs Цитата(zoddy @ Feb 18 2009, 09:54) ... В... Feb 18 2009, 10:18   zoddy Цитата(Maik-vs @ Feb 18 2009, 15:18)... Feb 18 2009, 11:29    Maik-vs Цитата(zoddy @ Feb 18 2009, 14:29) Гм... ... Feb 19 2009, 10:20     zoddy Цитата(Maik-vs @ Feb 19 2009, 15:20)... Feb 19 2009, 11:04      haker_fox Цитата(zoddy @ Feb 19 2009, 19:04) Все ко... Feb 19 2009, 12:41       defunct Цитата(haker_fox @ Feb 19 2009, 14:41) По... Feb 19 2009, 23:18        VladimirYU Цитата(defunct @ Feb 20 2009, 02:18) ....... Feb 20 2009, 06:27         zoddy Цитата(VladimirYU @ Feb 20 2009, 11:27) М... Feb 20 2009, 07:43          haker_fox Цитата(zoddy @ Feb 20 2009, 15:43) Огромн... Feb 20 2009, 09:38           Maik-vs Рад, что мой пост так оживил тему!
Собственно,... Feb 20 2009, 13:38            VladimirYU Цитата(Maik-vs @ Feb 20 2009, 16:38)... Feb 21 2009, 07:05        ReAl Цитата(defunct @ Feb 20 2009, 01:18) Авто... Feb 26 2009, 21:07         defunct Цитата(ReAl @ Feb 26 2009, 23:07) Я, как ... Feb 27 2009, 00:34          ReAl Цитата(defunct @ Feb 27 2009, 02:34) Рези... Feb 27 2009, 10:26           defunct Цитата(ReAl @ Feb 27 2009, 12:26) Что тож... Feb 27 2009, 12:02            ReAl Цитата(defunct @ Feb 27 2009, 14:02) Согл... Feb 27 2009, 13:43 demiurg_spb Чем выше скорость тем резче должны быть фронты. На... Feb 18 2009, 09:06 IgorKossak zoddy, Вам уже напоминали о резисторах подтяжки. 1... Feb 18 2009, 17:44 zoddy Цитата(IgorKossak @ Feb 18 2009, 22:44) z... Feb 19 2009, 08:01    DS Цитата(defunct @ Feb 28 2009, 20:30) Тайм... Feb 28 2009, 17:32     defunct Цитата(DS @ Feb 28 2009, 19:32) А как узн... Feb 28 2009, 17:45      DS Цитата(defunct @ Feb 28 2009, 20:45) В сл... Feb 28 2009, 18:01 singlskv Цитата(DS @ Feb 28 2009, 19:19) Господа з... Feb 28 2009, 18:08  DS Цитата(singlskv @ Feb 28 2009, 21:08) Пок... Feb 28 2009, 19:02   singlskv Цитата(DS @ Feb 28 2009, 22:02) Вот так п... Feb 28 2009, 19:59    DS Цитата(singlskv @ Feb 28 2009, 22:59) Кар... Feb 28 2009, 20:07     singlskv Цитата(DS @ Feb 28 2009, 23:07) Слэйв дер... Feb 28 2009, 20:35 DS А не может ли вызывать завис изменение режима SPI ... Mar 1 2009, 00:13 defunct ЦитатаА не может ли вызывать завис изменение режим... Mar 1 2009, 01:06 DS Цитата(defunct @ Mar 1 2009, 04:06) Не до... Mar 1 2009, 09:43 DS Вот код, который вызывает неадекватное поведение 4... Mar 1 2009, 11:46 DS Блин, классическое "сам дурак" - Наводки... Mar 1 2009, 13:00 SasaVitebsk Цитата(DS @ Mar 1 2009, 17:00) Так и рожд... Mar 1 2009, 16:34
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|