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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> вопрос по работе TWI
Maik-vs
сообщение Feb 20 2009, 13:38
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101



Рад, что мой пост так оживил тему!
Собственно, мне нетрудно было дать и ссылку, и объяснить всё простыми словами. Но вот товарищ zoddy мне пишет: "Если Вы, многоуважаемый, хоть раз читали мануал ... " ну вот я и не стал напрягать не менее многоуважаемого, а если бы он хоть раз читал руководство по I2C ... ну, понятно. Вместо этого огребаю пост №10...
Кстати, VladimirVU, пресловутый Tbuf находится в I2C_BUS.pdf просто на раз, во многих местах. Хотя я предпочитаю пользоваться документацией от разработчика стандарта, есть такой документ UM10204 на сайте NXP.
Моему советчику Zoddy только могу процитировать его же, с небольшой поправкой: "ничего личного, но если уж даешь совет задаёшь вопрос, то пиши конкретно и корректно, а не "важничай"..."
Удачи всем.
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение Feb 21 2009, 07:05
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



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

Да никто же с этим не спорит, это по поводу Tbuf. Речь ведь о другом, ссылаясь в посте на документ неплохо дать ссылку на него, или хотя бы дать информацию о том где и как его найти. Это, кстати, Вы сейчас и сделали. Мне, например, тоже интересно появились ли там изменения. Хотя не думаю, что NXP "родительское наследство" станет менять. Но жизнь не стоит на месте.
Взаимно, удачи всем.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Feb 26 2009, 21:07
Сообщение #18


Нечётный пользователь.
******

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



Цитата(defunct @ Feb 20 2009, 01:18) *
Автор нигде не дал повода полагать обратное. С документацией по TWI модулю он ознакомился.
...
Пишем программу, но она работает нестабильно на высоких частотах. Приходим на форум, задаем вопрос по TWI (насколько можно настолько точно описав что делаем и как подключаем), а тут пишут - с места в карьер - а tbuf на рисунке фирменной документации I2C учел? Ну и... хоть стой, хоть падай - глобальный конфуз smile.gif
Я, как это часто бывает, позанудничаю.
С одной стороны оно так. А с другой...
Если "с документацией по TWI модулю ознакомился", то должен был видеть в ней параметр tBUF "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", но до него читалка недочитала.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 27 2009, 00:34
Сообщение #19


кекс
******

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



Цитата(ReAl @ Feb 26 2009, 23:07) *
Я, как это часто бывает, позанудничаю.
С одной стороны оно так. А с другой...
...
А уже потом "Плюс с юмором ;>" обижаться на то, что подсказали название параметра

Попытаюсь обратить Ваше внимание на то, что название параметра всплыло, к сожалению, только после того как вопрос был решен.
Если бы он всплыл "до".... А так, право же, нет повода для занудствования wink.gif

Цитата
который был в этой "док на AVR", но до него читалка недочитала

Резисторы решили проблему - значит автор учел упомянутый "Bus free time between a STOP and START condition" сразу, стало быть читалка дочитала?
Go to the top of the page
 
+Quote Post
ReAl
сообщение Feb 27 2009, 10:26
Сообщение #20


Нечётный пользователь.
******

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



Цитата(defunct @ Feb 27 2009, 02:34) *
Резисторы решили проблему - значит автор учел упомянутый "Bus free time between a STOP and START condition" сразу, стало быть читалка дочитала?
Ах, извините, значит читалка недочитала про резисторы.
Что тоже довольно странно - на всех картинках номиналы не даны, так что можно было бы и задуматься - так какие же нужны?
И полезть в ту же таблицу, где про tBUF и прочесть допустимые границы изменения сопротивления этих резисторов - минимум исходя из VCC и допустимого тока, максимум - исходя из характерных времён для класса частоты шины и Cb - ёмкости шины.
Так чта... Извиниться могу только за неправильно указанное "до чего" читалка недочитала.

Впрочем, недочитывающие читалки достаточно распространены, часто именно про резисторы.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 27 2009, 12:02
Сообщение #21


кекс
******

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



Цитата(ReAl @ Feb 27 2009, 12:26) *
Что тоже довольно странно - на всех картинках номиналы не даны, так что можно было бы и задуматься - так какие же нужны?
И полезть в ту же таблицу, где про tBUF и прочесть допустимые границы изменения сопротивления этих резисторов - минимум исходя из VCC и допустимого тока, максимум - исходя из характерных времён для класса частоты шины и Cb - ёмкости шины.

Согласен, вопрос правильный. Но это уже (IMHO) не читалка, а думалка и опыт. Логика думалки ведь может быть и такой: раз не даны - значит любые.
А форум как раз и создан для того чтобы помогать направлять думалку в нужную сторону.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Feb 27 2009, 13:43
Сообщение #22


Нечётный пользователь.
******

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



Цитата(defunct @ Feb 27 2009, 14:02) *
Согласен, вопрос правильный. Но это уже (IMHO) не читалка, а думалка и опыт. Логика думалки ведь может быть и такой: раз не даны - значит любые.
А форум как раз и создан для того чтобы помогать направлять думалку в нужную сторону.

Так даны! В таблицах допустимых параметров, причём даже в том же документе, а не в отдельном. Только читалка таки недочитала до того места, потому думалка и думает, что не даны.
О том же и я толкую - надо направлять в нужную сторону. Только читалку перед думалкой. Или думалку учить сначала пинать свою читалку. Иначе думалка скоро начнёт думать, что номиналы резисторов и всё такое прочее - это из области чёрной магии и прочего тайного знания, читать документацию внимательно и всю нет смысла, всё равно ответ может быть только от посвящённых, имеющих другие источники знаний.
Либо просто читалка заявит думалке "а нафига читать, проще на форуме спросить" - так тогда и думалка атрофируется, только другой дорогой.

(сейчас уже поутихло, а лет пять-семь назад мне сравнительо часто приходили письма с просьбой выслать те документы, по которым я присал avreal - так вот это начинается с вот таких резисторов)


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
DS
сообщение Feb 28 2009, 16:19
Сообщение #23


Гуру
******

Группа: СуперМодераторы
Сообщений: 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 выяснить факт аварии на шине, и что-нибудь сделать ? Снаружи, как я понимаю, ничего ее не проймет.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 28 2009, 17:16
Сообщение #24


кекс
******

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



Цитата(DS @ Feb 28 2009, 18:19) *
Есть ли способ вывести из зависа slave TWI atmega48 ?

Сбросить TWI модуль:
TWCR = (1 << TWINT);

и заново инициализировать через некоторое время (сам инициализирую через 1ms после сброса).

Цитата
Есть ли возможность изнутри 48 выяснить факт аварии на шине, и что-нибудь сделать ?

Должно было быть прерывание со статусом 0.
Но если его действительно нет, можно привязаться к таймауту.
Go to the top of the page
 
+Quote Post
DS
сообщение Feb 28 2009, 17:26
Сообщение #25


Гуру
******

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



Цитата(defunct @ Feb 28 2009, 20:16) *
Сбросить TWI модуль:

TWCR = (1 << TWINT);


Должно было быть прерывание со статусом 0.
Но если его действительно нет, можно привязаться к таймауту.


Чтобы сбросить, надо узнать, что есть проблема. А прерывание не вырабатывается, я так и этак проверял, похоже статус остается F8. Таймаут не от чего отсчитывать - он же не реагирует на SLA+W, соответственно, не знает, что к нему обратились.
Разве что мониторить состояния пинов, но тут тоже возникает сложность - а если мастер просто шину для себя придержал ?


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 28 2009, 17:30
Сообщение #26


кекс
******

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



Цитата(DS @ Feb 28 2009, 19:26) *
Таймаут не от чего отсчитывать - он же не реагирует на SLA+W, соответственно, не знает, что к нему обратились.

Таймаут можно считать от последнего прерывания, и от инициализации TWI.

Цитата
а если мастер просто шину для себя придержал ?

то сброс TWI модуля этого slave никак не повлияет на текущую транзакцию к другому slave'у.
Go to the top of the page
 
+Quote Post
DS
сообщение Feb 28 2009, 17:32
Сообщение #27


Гуру
******

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



Цитата(defunct @ Feb 28 2009, 20:30) *
Таймаут можно считать от последнего прерывания, и от инициализации TWI.


А как узнать, что интерфейс в раскоряченном состоянии ? Обращения непереодичные, поэтому понять внутри 48, что он начал пропускать что-то, нет возможности.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 28 2009, 17:45
Сообщение #28


кекс
******

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



Цитата(DS @ Feb 28 2009, 19:32) *
А как узнать, что интерфейс в раскоряченном состоянии ? Обращения непереодичные, поэтому понять внутри 48, что он начал пропускать что-то, нет возможности.

В случае если нет прерывания со статусом 0 - "сбой шины" - никак sad.gif, кроме монитора линии через GPIO..
На шине один slave или несколько? Есть возможность к этому слейву протянуть от мастера еще один провод?
Периодически отключать/включать модуль (с поправкой на текущую транзакцию) не пойдет?
Go to the top of the page
 
+Quote Post
DS
сообщение Feb 28 2009, 18:01
Сообщение #29


Гуру
******

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



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


Не ждали мы такого скотства от Atmel. sad.gif
Лишний провод не годится, а про переодический перезапуск при неправильном состоянии шины буду думать.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Feb 28 2009, 18:08
Сообщение #30


дятел
*****

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



Цитата(DS @ Feb 28 2009, 19:19) *
Господа знатоки ATMeg !

Есть ли способ вывести из зависа slave TWI atmega48 ?

Симптом такой - вдруг на SLA+W выдает NACK, потом SDA (или оба сигнала) залипает в 0. Импульсы по SCL не помогают - SDA переходит в 1, но после включения мастера SCL снова сваливается в 0 - сразу. Мастер не виноват - если slave сбросить, работа восстанавливается.
Покажите обработчик прерываний на меге.
И инфу о том кто мастер, какая скорость какие пулапы итд...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 22:22
Рейтинг@Mail.ru


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