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

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Программный UART в AVR, Помехоустойчивость
Daisy
сообщение Aug 18 2005, 12:30
Сообщение #1


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

Группа: Свой
Сообщений: 96
Регистрация: 29-04-05
Из: г. Жуковский
Пользователь №: 4 606



Программный УАРТ работает на скорости 115200 в режиме приема. Обмен группами по 4 байта (от Cygnal к AVR), один раз в 700 мс.
Однако, где-то один раз в час проскакивает помеха. В результате один байт из 4-х неверен. Помеху можно убрать поставив RC-цепочку на линию передачи. Но ставить не хочется, ибо серия.
Какие есть варианты программной фильтрации? Или может быть ещё какие-то идеи?
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Aug 18 2005, 12:41
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Обычно на каждый бит делается три выборки и оценивается по мажоритарному принципу (чего больше, нулей или единиц).
Go to the top of the page
 
+Quote Post
Daisy
сообщение Aug 18 2005, 13:00
Сообщение #3


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

Группа: Свой
Сообщений: 96
Регистрация: 29-04-05
Из: г. Жуковский
Пользователь №: 4 606



Цитата(IgorKossak @ Aug 18 2005, 15:41)
Обычно на каждый бит делается три выборки и оценивается по мажоритарному принципу (чего больше, нулей или единиц).
*

Три делаю - не помогает. На большее число выборок времени не хватает.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Aug 18 2005, 13:22
Сообщение #4


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Проверьте с аппаратным UARTом.
Если не поможет, то, видать, помеха уж очень длительная.
Go to the top of the page
 
+Quote Post
nml
сообщение Aug 18 2005, 14:05
Сообщение #5


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

Группа: Свой
Сообщений: 86
Регистрация: 13-06-04
Из: Minsk
Пользователь №: 29



Цитата(Daisy @ Aug 18 2005, 15:30)
Какие есть варианты программной фильтрации? Или может быть ещё какие-то идеи?
*

Помеха может быть всегда, идеального ничего не бывает... Наверное, тут и не в программном/аппаратном дело.
Я при обмене по USART всегда использую блок типа:
Служебный,N байт информации, контр.сумма
Вот это уже на порядок надежнее. Хотя и не 100% - как то пришлось передавать RS232 через радиомодули (махонькие такие, 433 МГц) - так вот при отсутствии сигнала с передатчика - по сути, приемник ловит белый шум - примерно раз в полминуты проскакивал прием посылки - то есть не только 4 байта подряд корректно ловились старты-стопы, но и контрольная сумма совпадала! Кстати, принималось на аппаратный USART.

Я был крайне удивлен сам... Хорошо что у тех радиомодулей была линия "есть сигнал" - иначе пришлось бы наверное усложнять суммирование...
Go to the top of the page
 
+Quote Post
CDT
сообщение Aug 19 2005, 02:38
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 303
Регистрация: 3-03-05
Пользователь №: 3 044



Цитата
Помеха может быть всегда, идеального ничего не бывает...

Совершенно верно.
Простые программные фильтры (увеличение числа выборок, например,) есть эквивалент RC цепочки. Видимо ее надо ставить.
Можно контролировать правильность приема (контрольная сумма, CRC) и при ошибке перезапрашивать.
Еще можно несколько раз передавать весь блок (или в одном блоке несколько раз данные), а в приемнике решать, какой вариант принят правильно.
Но это время.


--------------------
Опыт - чудесная вещь: легко использовать, можно продать, трудно пропить.
Go to the top of the page
 
+Quote Post
bzx
сообщение Aug 22 2005, 06:20
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 482
Регистрация: 5-07-05
Из: Санкт-Петербург
Пользователь №: 6 528



Цитата(Daisy @ Aug 18 2005, 15:30)
Программный УАРТ работает на скорости 115200 в режиме приема.
*

Синхронизацию по старт биту делаете в программном усарте?


--------------------
Для связи email: info собака qbit.su
Go to the top of the page
 
+Quote Post
Daisy
сообщение Aug 22 2005, 07:04
Сообщение #8


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

Группа: Свой
Сообщений: 96
Регистрация: 29-04-05
Из: г. Жуковский
Пользователь №: 4 606



Цитата(bzx @ Aug 22 2005, 09:20)
Цитата(Daisy @ Aug 18 2005, 15:30)
Программный УАРТ работает на скорости 115200 в режиме приема.
*

Синхронизацию по старт биту делаете в программном усарте?
*



Да, по старт-биту. Принцип действия как в атмельском апноуте AVR304.
Go to the top of the page
 
+Quote Post
bzx
сообщение Aug 22 2005, 07:43
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 482
Регистрация: 5-07-05
Из: Санкт-Петербург
Пользователь №: 6 528



А поставить простенькую контрольную сумму есть возможность?


--------------------
Для связи email: info собака qbit.su
Go to the top of the page
 
+Quote Post
Daisy
сообщение Aug 22 2005, 09:12
Сообщение #10


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

Группа: Свой
Сообщений: 96
Регистрация: 29-04-05
Из: г. Жуковский
Пользователь №: 4 606



Цитата(bzx @ Aug 22 2005, 10:43)
А поставить простенькую контрольную сумму есть возможность?
*

Только если в крайнем случае. За выдачу данных отвечает другой человек. Он против контрольных сумм. :-)
Перепишу программу на асме. Там должно влезть пять выборок на бит. Больше не знаю, что делать.
Go to the top of the page
 
+Quote Post
BVU
сообщение Aug 22 2005, 09:23
Сообщение #11


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

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(Daisy @ Aug 18 2005, 16:30)
Программный УАРТ работает на скорости 115200 в режиме приема. Обмен группами по 4 байта (от Cygnal к AVR), один раз в 700 мс.
Однако, где-то один раз в час проскакивает помеха. В результате один байт из 4-х неверен. Помеху можно убрать поставив RC-цепочку на линию передачи. Но ставить не хочется, ибо серия.
Какие есть варианты программной фильтрации? Или может быть ещё какие-то идеи?
*


Попробуйте передавать вместо 4-х 5-байт, где первый из пяти является ключ-байтом передачи полезной информации. Тогда прием на помеху срабатывать не будет.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
Alexandr
сообщение Aug 22 2005, 18:42
Сообщение #12


Знающий
****

Группа: Модераторы
Сообщений: 804
Регистрация: 1-12-04
Пользователь №: 1 283



А Вы уверены что это именно помеха, а не сбой в передатчике, связанный хотя бы с нестабильностью частоты его герератора.


--------------------
Иван Сусанин - первый полупроводник
Go to the top of the page
 
+Quote Post
Daisy
сообщение Aug 23 2005, 05:08
Сообщение #13


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

Группа: Свой
Сообщений: 96
Регистрация: 29-04-05
Из: г. Жуковский
Пользователь №: 4 606



Цитата(Alexandr @ Aug 22 2005, 21:42)
А Вы уверены что это именно помеха, а не сбой в передатчике, связанный хотя бы с нестабильностью частоты его герератора.
*


Да передачик вроде в порядке, во всяком случае на счет частоты. Данные с него заводились непосредственно на COM-порт компьютера. Никаких сбоев не наблюдалось. То есть компьютер эту помеху фильтрует.
Go to the top of the page
 
+Quote Post
BVU
сообщение Aug 23 2005, 05:23
Сообщение #14


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

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Если помеха все-же имеет место возможно происходят сбои задающего генератора контроллера, которые естественно влекут за собой сбой в приемнике UART. Попробуйте проанализировать этот вариант. Если это так - панацею обсудим после.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
CDT
сообщение Aug 23 2005, 11:30
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 303
Регистрация: 3-03-05
Пользователь №: 3 044



Цитата(BVU @ Aug 23 2005, 08:23)
Если помеха все-же имеет место возможно происходят сбои задающего генератора контроллера, которые естественно влекут за собой сбой в приемнике UART.
*

А может просто в программе есть местечко, которое иногда работает дольше чем предполагается или что-нибудь запускается (прерывание, WDT) и сбивает приемник с ритма?


--------------------
Опыт - чудесная вещь: легко использовать, можно продать, трудно пропить.
Go to the top of the page
 
+Quote Post

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

 


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


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