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

 
 
> Помогите с реализацией Манчестерского кода, Для односторонней связи 2-х AVR
hd44780
сообщение Jan 27 2008, 09:55
Сообщение #1


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

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Начитался всякой доки, примеров по RC-5 ...
ничего пока не получилось.

Передатчик у меня - Mega8515L, приемник - Mega32.
Сигнальный провод повесил на INT1 Mega32, прерывание возникает (светодиод моргает, на LCD сообщения правильные идут), таймер запускается, а потом - пропасть. Такое ощущение, что где-то я во временных интервалах путаюсь.
На LCD все сообщения выводит главная программа, а не обработчики.

Нет ли у кого готовой реализации или чего?

Спасибо.


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
hd44780
сообщение Jan 29 2008, 10:22
Сообщение #2


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

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Да согласен я.

Но любой радиообмен этим чреват.


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 29 2008, 10:54
Сообщение #3


дятел
*****

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



Цитата(hd44780 @ Jan 29 2008, 13:22) *
Да согласен я.
Но любой радиообмен этим чреват.

Одно дело терять 1% пакетов и совсем другое 50% или еще хуже.
Вы смотрели что творится на приемнике когда нет передачи ?
Посмотрите, очень позновательно...

Если все же решите делать прием через UART, то можете попробовать следующее:
первый байт отправлять типа 0b00001111 а за ним отправлять уже значимую часть
на приеме изначально UART выключен на прием и нога RX сконфигурированна как
вход с подтяжкой
первый байт(0b00001111) принимаете ручками(прерываниями) как просто
импульс 0 длинной 5бит(4+1старт) отсчитывая время таймером
если импульс такой(чуть меньшей) длинны был принят, за время пока идут 1111
включаете прием UART на RX и всю значащую последовательность принимаете UARTом.

Только нужно иметь в виду что 0 на UART должен быть активным уровнем для
передатчика/приемника, те возможно понадобятся инверторы
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jan 29 2008, 11:12
Сообщение #4


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(singlskv @ Jan 29 2008, 10:54) *
...если импульс такой (чуть меньшей) длины был принят, за время пока идут 1111, включаете прием UART на RX и всю значащую последовательность принимаете UARTом

Тоже плохо. Кто мешает помехе налететь, пока идут эти 1111 или даже когда идёт стоп-бит? Уарт зацепится за ложный старт-бит и весь байт, а с ним и весь пакет- псу под хвост.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 29 2008, 11:21
Сообщение #5


дятел
*****

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



Цитата(=GM= @ Jan 29 2008, 14:12) *
Тоже плохо. Кто мешает помехе налететь, пока идут эти 1111 или даже когда идёт стоп-бит? Уарт зацепится за ложный старт-бит и весь байт, а с ним и весь пакет- псу под хвост.
Мешает АРУ, который за время 00000 настроится на наш сигнал и уже не будет
ловить маломощные помехи со всей округи на полном усилении.
Конечно это не панацея и при наличии других передатчиков в зоне видимости
пакеты все равно будут пропадать, но такой настроечный байт позволит уменьшить вероятность
пропадания пакетов в разы.
А по хорошему конечно нужно ловить каждый битик отдельно.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jan 29 2008, 12:35
Сообщение #6


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(singlskv @ Jan 29 2008, 11:21) *
Мешает АРУ, который за время 00000 настроится на наш сигнал и уже не будет ловить маломощные помехи со всей округи на полном усилении

Похоже вы хотите бороться только с шумами, которые вытягивает ару, когда нет сигнала. Но в жизни всё не совсем так происходит. Ещё есть помехи, сопоставимые по уровню с вашим сигналом, они легко пролезут на выход приёмника, и никакое ару ничего с ними поделать не сможет. Выглядеть это будет так: идёт уровень логической 1, потом вдруг, раз, и врезка, и вы получаете ложный стартовый бит и так много раз.

Подавитель импульсных помех, о котором я писал, легко подавляет такие врезки и вырезки, потерь пакетов будет 0,1% или меньше...Подавитель тоже не панацея, но гораздо лучше, чем передавать 0х07 в начале пакета и, тем более, манчестер под рс-232. Конечно, лучше всего сделать согласованный или корреляционный фильтр с решающим устройством, но на атмеловском мк это сложная задача, хотя и подъёмная.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 29 2008, 13:34
Сообщение #7


дятел
*****

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



Цитата(=GM= @ Jan 29 2008, 15:35) *
Похоже вы хотите бороться только с шумами, которые вытягивает ару, когда нет сигнала. Но в жизни всё не совсем так происходит. Ещё есть помехи, сопоставимые по уровню с вашим сигналом, они легко пролезут на выход приёмника, и никакое ару ничего с ними поделать не сможет. Выглядеть это будет так: идёт уровень логической 1, потом вдруг, раз, и врезка, и вы получаете ложный стартовый бит и так много раз.
Не только бороться с шумами, но и еще точно определять момент включения UART на
прием. Если его включение будет в районе 5%длительности бита от начала предполагаемой
посылки то вероятность поймать шум становится очень маленькой.
Цитата
Подавитель импульсных помех, о котором я писал, легко подавляет такие врезки и вырезки, потерь пакетов будет 0,1% или меньше...
Такой фильтр у меня стоит в каждой проге, например как подавитель дребезга кнопок,
дискретных входов, итд
Цитата
Подавитель тоже не панацея, но гораздо лучше, чем передавать 0х07 в начале пакета и, тем более, манчестер под рс-232. Конечно, лучше всего сделать согласованный или корреляционный фильтр с решающим устройством, но на атмеловском мк это сложная задача, хотя и подъёмная.
Посылка 0x07 это только как вариант прикручивания всего к UART, и использовать
его нужно совместно с манчестером.
Кстати, не забывайте что у UART тоже голосующая схема работы, так что на небольших скоростях
все должно быть Ok.

Ну а сам я реализовывал все чуть по другому...
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jan 29 2008, 14:05
Сообщение #8


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(singlskv @ Jan 29 2008, 13:34) *
Кстати, не забывайте что у UART тоже голосующая схема работы, так что на небольших скоростях все должно быть Ok.
Ну а сам я реализовывал все чуть по другому...

Голосующая схема останется ни при чём, если уарт захватился за ложный старт-бит.

Честная реализация должна быть такой: преамбула-подходящая модуляция (бпск, кпск,...), снятие допплера-модем, фазовый пуск, свёрточное декодирование, перемежение, блочное декодирование, данные-контрсумма. Ну это, конечно, для серьёзных задач, типа 256 каналов, два скачка до исз,...и не по зубам авр.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 29 2008, 19:35
Сообщение #9


дятел
*****

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



Цитата(=GM= @ Jan 29 2008, 17:05) *
Голосующая схема останется ни при чём, если уарт захватился за ложный старт-бит.
Возможно Вы не до конца меня поняли, ложных стартовых битов почти не будет,
все время после 00000 пока идет 11111 мы вобще ничего не принимаем, приемник UART
включается по таймеру только непосредственно перед началом стартового бита реальных
данных. Таким образом мы уменьшаем вероятность ловли ложного стартового бита
примерно в 100 раз. Мешать нам будут только 2 вида помех, помеха присосавшаяся к импульсу
00000 и изменившая ее длинну и помеха успевшая проскочить между включением приемника
UART и реальным началом передачи.
Нет никаких оснований не сделать эти периоды <1/100 от длительности приема
одного байта например...

Так что голосующая схема уарта вполне в деле...
Нужно только как можно точнее определять момент возможного начала передачи.
Ну и научиться реагировать на каждый переход 1->0 для того что бы не пропустить начало
нашего 0x07.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- hd44780   Помогите с реализацией Манчестерского кода   Jan 27 2008, 09:55
- - =VRA=   Я все понимаю - бывает очень нужно, но зачем траха...   Jan 27 2008, 10:37
- - hd44780   Да радиомодули есть самодельные (http://cxem.net/r...   Jan 27 2008, 10:42
|- - AVR   Цитата(hd44780 @ Jan 27 2008, 13:42) Да р...   Jan 27 2008, 11:20
|- - mrKirill   Цитата(AVR @ Jan 27 2008, 16:20) Прошу пр...   Jan 27 2008, 19:08
- - =VRA=   Тоже не шибко оптимально - лучше уж бы FSK тогда, ...   Jan 27 2008, 11:05
- - hd44780   Почитаю, спасибо.   Jan 27 2008, 11:11
- - hd44780   Народ пишет, что работает нормально. Насчет упрощ...   Jan 27 2008, 13:40
- - Kuzmi4   2 hd44780 - посмотрив в теме "Исходники прог...   Jan 28 2008, 14:47
- - hd44780   Да, я видел. Но тут в интернете заманчивое решени...   Jan 29 2008, 08:07
|- - singlskv   Цитата(hd44780 @ Jan 29 2008, 11:07) Но т...   Jan 29 2008, 09:16
- - hd44780   Не знаю пока. Хоть через UART, он тоже может всяк...   Jan 29 2008, 09:41
|- - singlskv   Цитата(hd44780 @ Jan 29 2008, 12:41) Пока...   Jan 29 2008, 09:58
|- - =GM=   Цитата(hd44780 @ Jan 29 2008, 08:07) Но т...   Jan 29 2008, 10:47
- - hd44780   Спасибо, когда начну экспериментировать - проверю ...   Jan 29 2008, 11:11
- - GDI   Если есть он, этот АРУ.... Я вот тут в другом сооб...   Jan 29 2008, 11:33
- - _Pasha   Вставлю и свои 5 коп. 1. Преамбула(продувка канала...   Jan 29 2008, 20:41


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 19:47
Рейтинг@Mail.ru


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