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

 
 
> UART в AT91SAM7S, Синхронизация
Bovolk
сообщение Nov 8 2008, 12:37
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 6-09-06
Из: Украина/Киев
Пользователь №: 20 145



На входе протокол "DMX-512". Суть его такова, что есть сигнал "Break"=0 и длительностью не менее 88 мкс (22 символа) за которым идет сигнал "MaB"=1 и длительностью не менее 2-х символов. В общем, проблема в этом "Break". Ловлю его по Прерыванию "RXBRK" но вся беда в том, что UART после этого не дожидается высокого уровня MaB, а сразу переходит на прием, ведь "Break" еще продолжается. Из положения вышел так: После ловли "RXBRK" отключаю UART и включаю RX-pin на внешнее прерывание ожидая прихода "MaB". По приходу "MaB" снова перехожу на прием. Все идеально работает-- проблема решена, но камень на душе остался. UART должен ждать стопа после прихода "RXBRK" или "Frame Error", или же если на линии продолжаестя низкий уровень начинать новый прием???
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Sergey'F
сообщение Jul 9 2009, 11:38
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 17-09-05
Из: Москва
Пользователь №: 8 660



По поводу DMX еще одно дополнение. Отчасти проблема с формированием RXBRK была рассмотрена здесь:
Странности Usart0 в at91rm9200.

Но ситуация еще интереснее. Читаем Errata:
When timeguard is 0, RXBRK is not set when the break character is located just after the Stop
bit. FRAME (Frame Error) is set instead.
Problem Fix/Workaround
Timeguard should be > 0.


Смею утверждать, что это относится к внешнему устройству, которое должно вставлять свой таймгард перед break. Явно в этом абзаце это не прописано. Надо было написать так:
Если внешнее устройство шлет break сразу после стоп-бита предыдущего слова, RXBRK не выставляется.

Такая ситуация возникла, я об нее споткнулся, докопался до errata, включил timeguard. 1, 2, 3, 4... не помогает. Все равно детектирует FRAME. Думаю, ну каким боком модуль передатчика влияет на приемник? Снял DMX тестер, хороший тестер, Artistic Licence, но он шлет break сразу после завершения предыдущего кадра. Поставил свое устройство с небольшой задержкой перед посылкой break нового кадра и все стало нормально.

То есть, надо проверять, есть ли RXBRK или есть ли FRAME и при этом данные в регистре приемника равны нулю...
Go to the top of the page
 
+Quote Post



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

 


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


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