|
|
  |
Программный UART в AVR, Помехоустойчивость |
|
|
|
Aug 18 2005, 13:00
|
Частый гость
 
Группа: Свой
Сообщений: 96
Регистрация: 29-04-05
Из: г. Жуковский
Пользователь №: 4 606

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

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

|
Цитата(Daisy @ Aug 18 2005, 15:30) Какие есть варианты программной фильтрации? Или может быть ещё какие-то идеи? Помеха может быть всегда, идеального ничего не бывает... Наверное, тут и не в программном/аппаратном дело. Я при обмене по USART всегда использую блок типа: Служебный,N байт информации, контр.суммаВот это уже на порядок надежнее. Хотя и не 100% - как то пришлось передавать RS232 через радиомодули (махонькие такие, 433 МГц) - так вот при отсутствии сигнала с передатчика - по сути, приемник ловит белый шум - примерно раз в полминуты проскакивал прием посылки - то есть не только 4 байта подряд корректно ловились старты-стопы, но и контрольная сумма совпадала! Кстати, принималось на аппаратный USART. Я был крайне удивлен сам... Хорошо что у тех радиомодулей была линия "есть сигнал" - иначе пришлось бы наверное усложнять суммирование...
|
|
|
|
|
Aug 19 2005, 02:38
|
Местный
  
Группа: Свой
Сообщений: 303
Регистрация: 3-03-05
Пользователь №: 3 044

|
Цитата Помеха может быть всегда, идеального ничего не бывает... Совершенно верно. Простые программные фильтры (увеличение числа выборок, например,) есть эквивалент RC цепочки. Видимо ее надо ставить. Можно контролировать правильность приема (контрольная сумма, CRC) и при ошибке перезапрашивать. Еще можно несколько раз передавать весь блок (или в одном блоке несколько раз данные), а в приемнике решать, какой вариант принят правильно. Но это время.
--------------------
Опыт - чудесная вещь: легко использовать, можно продать, трудно пропить.
|
|
|
|
|
Aug 22 2005, 06:20
|

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

|
Цитата(Daisy @ Aug 18 2005, 15:30) Программный УАРТ работает на скорости 115200 в режиме приема. Синхронизацию по старт биту делаете в программном усарте?
--------------------
Для связи email: info собака qbit.su
|
|
|
|
|
Aug 22 2005, 07:04
|
Частый гость
 
Группа: Свой
Сообщений: 96
Регистрация: 29-04-05
Из: г. Жуковский
Пользователь №: 4 606

|
Цитата(bzx @ Aug 22 2005, 09:20) Цитата(Daisy @ Aug 18 2005, 15:30) Программный УАРТ работает на скорости 115200 в режиме приема. Синхронизацию по старт биту делаете в программном усарте? Да, по старт-биту. Принцип действия как в атмельском апноуте AVR304.
|
|
|
|
|
Aug 22 2005, 09:12
|
Частый гость
 
Группа: Свой
Сообщений: 96
Регистрация: 29-04-05
Из: г. Жуковский
Пользователь №: 4 606

|
Цитата(bzx @ Aug 22 2005, 10:43) А поставить простенькую контрольную сумму есть возможность? Только если в крайнем случае. За выдачу данных отвечает другой человек. Он против контрольных сумм. :-) Перепишу программу на асме. Там должно влезть пять выборок на бит. Больше не знаю, что делать.
|
|
|
|
|
Aug 22 2005, 09:23
|

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

|
Цитата(Daisy @ Aug 18 2005, 16:30) Программный УАРТ работает на скорости 115200 в режиме приема. Обмен группами по 4 байта (от Cygnal к AVR), один раз в 700 мс. Однако, где-то один раз в час проскакивает помеха. В результате один байт из 4-х неверен. Помеху можно убрать поставив RC-цепочку на линию передачи. Но ставить не хочется, ибо серия. Какие есть варианты программной фильтрации? Или может быть ещё какие-то идеи? Попробуйте передавать вместо 4-х 5-байт, где первый из пяти является ключ-байтом передачи полезной информации. Тогда прием на помеху срабатывать не будет.
--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
|
|
|
|
|
Aug 23 2005, 05:08
|
Частый гость
 
Группа: Свой
Сообщений: 96
Регистрация: 29-04-05
Из: г. Жуковский
Пользователь №: 4 606

|
Цитата(Alexandr @ Aug 22 2005, 21:42) А Вы уверены что это именно помеха, а не сбой в передатчике, связанный хотя бы с нестабильностью частоты его герератора. Да передачик вроде в порядке, во всяком случае на счет частоты. Данные с него заводились непосредственно на COM-порт компьютера. Никаких сбоев не наблюдалось. То есть компьютер эту помеху фильтрует.
|
|
|
|
|
Aug 23 2005, 11:30
|
Местный
  
Группа: Свой
Сообщений: 303
Регистрация: 3-03-05
Пользователь №: 3 044

|
Цитата(BVU @ Aug 23 2005, 08:23) Если помеха все-же имеет место возможно происходят сбои задающего генератора контроллера, которые естественно влекут за собой сбой в приемнике UART. А может просто в программе есть местечко, которое иногда работает дольше чем предполагается или что-нибудь запускается (прерывание, WDT) и сбивает приемник с ритма?
--------------------
Опыт - чудесная вещь: легко использовать, можно продать, трудно пропить.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|