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

 
 
> 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
Ответов
Terrabyte
сообщение Dec 29 2007, 11:23
Сообщение #2


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

Группа: Свой
Сообщений: 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
Сообщение #3


дятел
*****

Группа: Свой
Сообщений: 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
Сообщение #4


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

Группа: Свой
Сообщений: 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 Текстовая версия Сейчас: 22nd July 2025 - 04:30
Рейтинг@Mail.ru


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