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

 
 
> NACK in TWI_SR, как отловиь NACK?
Terrabyte
сообщение Dec 25 2007, 09:16
Сообщение #1


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

Группа: Свой
Сообщений: 124
Регистрация: 2-01-07
Из: Russia
Пользователь №: 24 042



Здравствуйте господа, прочитал несколько "хороших" отзывов о модуле twi в sam7, но так и не нашёл ответа на следующее:
Как отловить прерывание по NACK?

Но про бит TXRDY сказано что он устанавливается, если данные перенесены из TWI_THR в internal shifter or if a NACK error is detected !!! и TXRDY бит устанавливается одновременно с TXCOMP и NACK – это что?! , значит что по `NACK` формируется STOP?

В Errata сказано !!!!!!!, что если регистр TWI_SR читать перед установкой TXCOMP, то:
the NACK bit is not set ! Решение проблемы описано: user должен ожидать прерывания от TXCOMP, и не должен читать TWI_SR, пока “transmission is not completed”. Но тогда получается, что я не могу реагировать на TXRDY,
т.е. - как тогда ловить TXRDY, если нельзя читать TWI_SR до TXCOMP
( TXCOMP устанавливается когда : “..both holding and shifter registers are empty and STOP condition has been sent..”).

Единственный выход – попробовать проверять NACK по TXRDY , интересно, что в стартовом коде вообще не проверяется NACK бит, и программа работает не по прерываниям, да и в форуме я ни у кого не увидел проверку NACK. Как кто делал посоветуйте
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 9)
singlskv
сообщение Dec 25 2007, 14:06
Сообщение #2


дятел
*****

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



Цитата(Terrabyte @ Dec 25 2007, 12:16) *
значит что по `NACK` формируется STOP?
Да.

Посмотрите вот этот документик:
Прикрепленные файлы
Прикрепленный файл  TWI___Two_Wire_Interface.ppt ( 752 килобайт ) Кол-во скачиваний: 1014
 
Go to the top of the page
 
+Quote Post
Terrabyte
сообщение Dec 26 2007, 09:23
Сообщение #3


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

Группа: Свой
Сообщений: 124
Регистрация: 2-01-07
Из: Russia
Пользователь №: 24 042



спасибо, документ очень помог, если это atmel -овский док., почему я его раньше ни где не видел, хорошо бы иметь такой док на каждый аппаратный узел.
остался только один вопрос...
по обслуживанию NACK при посылке bed address, понятно т.е. устанавливается TXRDY одновременно с NACK, и автоматом посылается STOP,
а как тогда быть с no ask во время передачи блока данных? - произойдёт тоже самое что и при передпче адреса? т.е. STOP будет послан не зависимо от того был он разрешён в TWI_CR или нет, так?
Go to the top of the page
 
+Quote Post
singlskv
сообщение Dec 26 2007, 10:38
Сообщение #4


дятел
*****

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



Цитата(Terrabyte @ Dec 26 2007, 12:23) *
остался только один вопрос...
по обслуживанию NACK при посылке bed address, понятно т.е. устанавливается TXRDY одновременно с NACK, и автоматом посылается STOP,
а как тогда быть с no ask во время передачи блока данных? - произойдёт тоже самое что и при передпче адреса? т.е. STOP будет послан не зависимо от того был он разрешён в TWI_CR или нет, так?
Да, после NACK стоп будет послан всегда.
Цитата
спасибо, документ очень помог, если это atmel -овский док., почему я его раньше ни где не видел, хорошо бы иметь такой док на каждый аппаратный узел.
Они скрывают правду от народа crying.gif

Ловите ссылку:
Описание модулей SAM

Сам несколько дней эту инфу искал, когда с TWI разбирался.

P.S. Если кому будет не лень, перекиньте файлы в закрома...
Go to the top of the page
 
+Quote Post
Terrabyte
сообщение Dec 26 2007, 11:18
Сообщение #5


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

Группа: Свой
Сообщений: 124
Регистрация: 2-01-07
Из: Russia
Пользователь №: 24 042



большущее спасибо! удачи вам ! beer.gif
Go to the top of the page
 
+Quote Post
Terrabyte
сообщение Dec 26 2007, 15:26
Сообщение #6


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

Группа: Свой
Сообщений: 124
Регистрация: 2-01-07
Из: Russia
Пользователь №: 24 042



а TXRDY и RXRDY не сбрасываются при чтении TWI_SR ?

если сбрасываются, тогда у меня наверное автоматом не сформируется STOP после принятия последнего быйта,
и тогда нужно будет либо самому формировать стопы, либо, чтоб не читать TWI_SR:
при приёме ждать ПРЕДпоследнего: читать его, разр. стоп, вырубать прерывание по RXRDY и ждать TXCOMP.
а при передаче так же ждать ПРЕДпоследнего: записывать последний, разреш. стоп, вырубать TXRDY и ждать TXCOMP.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Dec 26 2007, 15:42
Сообщение #7


дятел
*****

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



Цитата(Terrabyte @ Dec 26 2007, 18:26) *
при приёме ждать ПРЕДпоследнего: читать его, разр. стоп, вырубать прерывание по RXRDY и ждать TXCOMP.
а при передаче так же ждать ПРЕДпоследнего: записывать последний, разреш. стоп, вырубать TXRDY и ждать TXCOMP.
Именно так и нужно.
И еще, в каждый момент разрешайте только 1 прерывание.
Go to the top of the page
 
+Quote Post
Terrabyte
сообщение Dec 29 2007, 11:23
Сообщение #8


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

Группа: Свой
Сообщений: 124
Регистрация: 2-01-07
Из: Russia
Пользователь №: 24 042



Ещё вопросик, можно ли сформировать restart, без предварительного stop?
И интересно как ведёт себя TXCOMP: при посылке start он сбрасывается, до тех пор пока не будет выдан stop, а рестарт скорее всего, не влияет на TXCOMP , да?
Как то странно, после настройки TWI, если все прерывания запрещены, биты TXRDY и TXCOMP взведены, а после окончания передачи все биты TWI_SR сброшены..

Сообщение отредактировал Terrabyte - Dec 29 2007, 12:11
Go to the top of the page
 
+Quote Post
singlskv
сообщение Dec 29 2007, 13:30
Сообщение #9


дятел
*****

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



Цитата(Terrabyte @ Dec 29 2007, 14:23) *
Ещё вопросик, можно ли сформировать restart, без предварительного stop?
И интересно как ведёт себя TXCOMP: при посылке start он сбрасывается, до тех пор пока не будет выдан stop, а рестарт скорее всего, не влияет на TXCOMP , да?
про рестарт точно не скажу, но думаю, учитывая все проблеммы с TWI,
рестарт не очень работоспособен...
Цитата
Как то странно, после настройки TWI, если все прерывания запрещены, биты TXRDY и TXCOMP взведены, а после окончания передачи все биты TWI_SR сброшены..

Все правильно, TXRDY и TXCOMP взводятся в момент настройки TWI,
поэтому прерывания должны быть в этот момент запрещены.
Более того, лучше всего разрешать прерывания TXRDY и RXRDY только после начала
передачи/приема.
Go to the top of the page
 
+Quote Post
Terrabyte
сообщение Jan 6 2014, 10:48
Сообщение #10


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

Группа: Свой
Сообщений: 124
Регистрация: 2-01-07
Из: Russia
Пользователь №: 24 042



Вопрос с TWI был решен, извиняюсь за стиль.
С микросхемой часов PCF__ TWI работает, благодаря документации находящейся по ссылке "Описание модулей SAM".
В последних версиях at91 с I2C не должно быть проблем.
Go to the top of the page
 
+Quote Post

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

 


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


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