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

 
 
 
Reply to this topicStart new topic
> SAM7S и DMX-512
beer_warrior
сообщение Dec 29 2006, 14:42
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Всплыла проблема в старой разработке. Сбоит прием.

Вкратце о протоколе:
Физически это RS-485.
Логически - поток байт на скорости 250 Кбит/с. Каждый фрейм начинается с двух символов BREAK (т.е. линия в нуле в течении двух байтовых интервалов), потом кратковременная единица (защитный интервал), за ней идут значащие байты.
Решено это следующим образом - прием ведется по PDC. BREAK ловится по прерыванию RX_BRK.
Строго говоря таких прерывания два - первое по приему полностью пустого байта, второе - по поялению в линии единицы. (31.6.3.15 Receive Break в даташите). Таким образом по нечетному прерыванию данные изымаются из буфера приема и переинициализируется PDC. Четные прерывания игнорируются.

И вот после некоторого времени эксплуатации выясняется - при интенсивной загрузке процессора некоторые фрэймы принимаются сразу со второго байта. Поднятие прерывания USART на самый высокий уровень проблемы не решает. Складывается впечетление, что либо первый байт после BREAK просто не принимается, либо PDC не успевает вытянуть его в память. В пользу первого говорит то, что источник сигнала с бОльшим защитным интервалом сбоит гораздо реже. В пользу второго - очевидная связь между качеством приема и загрузкой процессора вычислениями.

Проблема решена в лоб - анализом фрэймов и отбрасыванием заведомо сбойных.
Тем не менее хотелось бы услышать мнение уважаемого ОЛЛа по по поводу этой проблемы.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post

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

 


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


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