|
|
  |
вопрос по работе TWI |
|
|
|
Feb 20 2009, 13:38
|
Местный
  
Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101

|
Рад, что мой пост так оживил тему! Собственно, мне нетрудно было дать и ссылку, и объяснить всё простыми словами. Но вот товарищ zoddy мне пишет: "Если Вы, многоуважаемый, хоть раз читали мануал ... " ну вот я и не стал напрягать не менее многоуважаемого, а если бы он хоть раз читал руководство по I2C ... ну, понятно. Вместо этого огребаю пост №10... Кстати, VladimirVU, пресловутый Tbuf находится в I2C_BUS.pdf просто на раз, во многих местах. Хотя я предпочитаю пользоваться документацией от разработчика стандарта, есть такой документ UM10204 на сайте NXP. Моему советчику Zoddy только могу процитировать его же, с небольшой поправкой: "ничего личного, но если уж даешь совет задаёшь вопрос, то пиши конкретно и корректно, а не "важничай"..." Удачи всем.
|
|
|
|
|
Feb 21 2009, 07:05
|
Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782

|
Цитата(Maik-vs @ Feb 20 2009, 16:38)  Рад, что мой пост так оживил тему! Собственно, мне нетрудно было дать и ссылку, и объяснить всё простыми словами... Кстати, VladimirVU, пресловутый Tbuf находится в I2C_BUS.pdf просто на раз, во многих местах. Хотя я предпочитаю пользоваться документацией от разработчика стандарта, есть такой документ UM10204 на сайте NXP.Удачи всем. Да никто же с этим не спорит, это по поводу Tbuf. Речь ведь о другом, ссылаясь в посте на документ неплохо дать ссылку на него, или хотя бы дать информацию о том где и как его найти. Это, кстати, Вы сейчас и сделали. Мне, например, тоже интересно появились ли там изменения. Хотя не думаю, что NXP "родительское наследство" станет менять. Но жизнь не стоит на месте. Взаимно, удачи всем.
|
|
|
|
|
Feb 26 2009, 21:07
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(defunct @ Feb 20 2009, 01:18)  Автор нигде не дал повода полагать обратное. С документацией по TWI модулю он ознакомился. ... Пишем программу, но она работает нестабильно на высоких частотах. Приходим на форум, задаем вопрос по TWI (насколько можно настолько точно описав что делаем и как подключаем), а тут пишут - с места в карьер - а tbuf на рисунке фирменной документации I2C учел? Ну и... хоть стой, хоть падай - глобальный конфуз  Я, как это часто бывает, позанудничаю. С одной стороны оно так. А с другой... Если "с документацией по TWI модулю ознакомился", то должен был видеть в ней параметр t BUF "Bus free time between a STOP and START condition". Раздел Electrical Characterisitcs, подраздел 2-wire Serial Interface Characteristics. Для меги168 это таблица 28-5 на странице 309 и картинка 28-4 на следующей странице. (версия документа 2545M). На мой взгляд, тема, поднятая не в "для начинающих", предполагает предарительное внимательное прочтение хотя бы "док на AVR". А уже потом "Плюс с юмором ;>" обижаться на то, что подсказали название параметра, который был в этой "док на AVR", но до него читалка недочитала.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Feb 27 2009, 00:34
|

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

|
Цитата(ReAl @ Feb 26 2009, 23:07)  Я, как это часто бывает, позанудничаю. С одной стороны оно так. А с другой... ... А уже потом "Плюс с юмором ;>" обижаться на то, что подсказали название параметра Попытаюсь обратить Ваше внимание на то, что название параметра всплыло, к сожалению, только после того как вопрос был решен. Если бы он всплыл "до".... А так, право же, нет повода для занудствования  Цитата который был в этой "док на AVR", но до него читалка недочитала Резисторы решили проблему - значит автор учел упомянутый "Bus free time between a STOP and START condition" сразу, стало быть читалка дочитала?
|
|
|
|
|
Feb 27 2009, 10:26
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(defunct @ Feb 27 2009, 02:34)  Резисторы решили проблему - значит автор учел упомянутый "Bus free time between a STOP and START condition" сразу, стало быть читалка дочитала? Ах, извините, значит читалка недочитала про резисторы. Что тоже довольно странно - на всех картинках номиналы не даны, так что можно было бы и задуматься - так какие же нужны? И полезть в ту же таблицу, где про t BUF и прочесть допустимые границы изменения сопротивления этих резисторов - минимум исходя из V CC и допустимого тока, максимум - исходя из характерных времён для класса частоты шины и C b - ёмкости шины. Так чта... Извиниться могу только за неправильно указанное "до чего" читалка недочитала. Впрочем, недочитывающие читалки достаточно распространены, часто именно про резисторы.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Feb 27 2009, 13:43
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(defunct @ Feb 27 2009, 14:02)  Согласен, вопрос правильный. Но это уже (IMHO) не читалка, а думалка и опыт. Логика думалки ведь может быть и такой: раз не даны - значит любые. А форум как раз и создан для того чтобы помогать направлять думалку в нужную сторону. Так даны! В таблицах допустимых параметров, причём даже в том же документе, а не в отдельном. Только читалка таки недочитала до того места, потому думалка и думает, что не даны. О том же и я толкую - надо направлять в нужную сторону. Только читалку перед думалкой. Или думалку учить сначала пинать свою читалку. Иначе думалка скоро начнёт думать, что номиналы резисторов и всё такое прочее - это из области чёрной магии и прочего тайного знания, читать документацию внимательно и всю нет смысла, всё равно ответ может быть только от посвящённых, имеющих другие источники знаний. Либо просто читалка заявит думалке "а нафига читать, проще на форуме спросить" - так тогда и думалка атрофируется, только другой дорогой. (сейчас уже поутихло, а лет пять-семь назад мне сравнительо часто приходили письма с просьбой выслать те документы, по которым я присал avreal - так вот это начинается с вот таких резисторов)
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
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'у.
|
|
|
|
|
Feb 28 2009, 17:32
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250

|
Цитата(defunct @ Feb 28 2009, 20:30)  Таймаут можно считать от последнего прерывания, и от инициализации TWI. А как узнать, что интерфейс в раскоряченном состоянии ? Обращения непереодичные, поэтому понять внутри 48, что он начал пропускать что-то, нет возможности.
--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
|
|
|
|
|
Feb 28 2009, 18:01
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250

|
Цитата(defunct @ Feb 28 2009, 20:45)  В случае если нет прерывания со статусом 0 - "сбой шины" - никак  , кроме монитора линии через GPIO.. На шине один slave или несколько? Есть возможность к этому слейву протянуть от мастера еще один провод? Периодически отключать/включать модуль (с поправкой на текущую транзакцию) не пойдет? Не ждали мы такого скотства от Atmel. Лишний провод не годится, а про переодический перезапуск при неправильном состоянии шины буду думать.
--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|