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

 
 
 
Reply to this topicStart new topic
> SAM7SE: TWI Overrun Error
kichkine
сообщение Nov 8 2010, 06:03
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 3-11-06
Из: Kiev
Пользователь №: 21 933



Правильно ли я понимаю, что в polling mode, если я не буду успевать читать TWI_RHR, я получу OVRE (Overrun Error).
Иными словами, TWI просто гонит частоту и не следит успеваю я читать или нет.

SAM7 настроен как мастер.

Спасибо.
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Nov 9 2010, 06:10
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(kichkine @ Nov 8 2010, 10:03) *
Правильно ли я понимаю, что в polling mode, если я не буду успевать читать TWI_RHR, я получу OVRE (Overrun Error).
Иными словами, TWI просто гонит частоту и не следит успеваю я читать или нет.

SAM7 настроен как мастер.

Спасибо.


Именно так, Флаг OVRE и предназначен для указания потери данных.
Go to the top of the page
 
+Quote Post
kichkine
сообщение Nov 21 2010, 06:24
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 3-11-06
Из: Kiev
Пользователь №: 21 933



Если в случае OVRE прекратить чтение, поставив STOP в CR, то следующее чтение возвращает мусор.
При этом, если в начале чтения прочесть TWI_RHR этого (мусора) не случается. Похоже, что TWI считает, что я не прочел
RHR в предыдущем (когда был OVRE) чтении и предлагает мне его читать в последующем чтении. Тем, более, что когда я делаю
dummy read регистра состояния, там стоит RHR_READY.

Atmel сказал, что:
You can refer to AT91SAM7SE software package 'basic-twi-eeprom-project-at91sam7se-ek'. In this sample, before a read procedure is started, there actually is a dummy read operation for TWI_RHR register, in order to reset the TWI. Also you can refer to page 363 of AT91SAM7SE datasheets for TWI read operation flow.

т.е. они подтверждают, что TWI_RHR надо dummy-читать перед инициацией TWI-обмена, - "чтоб сбросить TWI".

В доке на чип этого не описано, хоть они на него и ссылаются.

Видел ли кто-то такое поведение и действительно ли имеет надо читать TWI_RHR наряду с регистром состояния, чтоб сбросить их?
Go to the top of the page
 
+Quote Post
singlskv
сообщение Nov 21 2010, 11:16
Сообщение #4


дятел
*****

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



Цитата(kichkine @ Nov 21 2010, 09:24) *
Видел ли кто-то такое поведение и действительно ли имеет надо читать TWI_RHR наряду с регистром состояния, чтоб сбросить их?
да, в некоторых случаях это необходимо, и поэтому лучше это делать всегда.
Go to the top of the page
 
+Quote Post
PICMaestro
сообщение Nov 21 2010, 13:31
Сообщение #5





Группа: Участник
Сообщений: 13
Регистрация: 18-09-05
Из: Львов, Украина
Пользователь №: 8 692



Если случился оверран, то вычитка приемного регистра просто обязательна для сброса флага принятого байта. Если этого не сделать, то принимаемые данные будут попадать только в шифт-регистр, а в ресивный регистр так не скопируются, пока не сбросится флаг готовности принятых данных - это логично. Потому у Вас там мусор в ресивном регистре, вернее даже не мусор , а данные принятые перед оверраном smile.gif это и есть рут-коз в Вашем случае.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 26th June 2025 - 10:43
Рейтинг@Mail.ru


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