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

 
 
> Манчестер для Avr
Семён
сообщение Nov 7 2006, 11:33
Сообщение #1


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

Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922



Всем добрый день. Вопрос, следующий кто небудь может поделиться исходником приема Манчестерского кода для AVR


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Jan 5 2007, 04:14
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Отсутствие постоянной составляющей выполняется простой операцией, аналогичной формированию CRC. Называется скрэмблирование. Это скремблирование + 11 протоколов типа манчестер находятся в главе два той книги по модемам которую я выкладывал на FTP. В частности есть даже ISDN.
Прикрепленные файлы
Прикрепленный файл  27.zip ( 116.97 килобайт ) Кол-во скачиваний: 3176
 
Go to the top of the page
 
+Quote Post
ReM37
сообщение Jan 11 2007, 23:51
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 3-11-06
Пользователь №: 21 954



Это запись одной команды с пульта управления ТВ. Кто может сказать где какой бит? Вроде должен быть RC5, но по моему что-то здесь не так...

http://rem-blog.net/tmp/rc5.gif
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 12 2007, 16:58
Сообщение #4


дятел
*****

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



Цитата(ReM37 @ Jan 11 2007, 23:51) *
Это запись одной команды с пульта управления ТВ. Кто может сказать где какой бит? Вроде должен быть RC5, но по моему что-то здесь не так...

http://rem-blog.net/tmp/rc5.gif


Если все еще интересно то это код 011000010000
Go to the top of the page
 
+Quote Post
ReM37
сообщение Jan 12 2007, 20:22
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 3-11-06
Пользователь №: 21 954



Цитата(singlskv @ Jan 12 2007, 15:58) *
Если все еще интересно то это код 011000010000


Возможно. Т.е. короткий импульс = 0, длинный = 1. Просто и не хуже Манчестера.
Go to the top of the page
 
+Quote Post
dvm11111111
сообщение Jan 13 2007, 03:24
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 25-01-06
Пользователь №: 13 567



Цитата(ReM37 @ Jan 12 2007, 20:22) *
Цитата(singlskv @ Jan 12 2007, 15:58) *


Если все еще интересно то это код 011000010000


Возможно. Т.е. короткий импульс = 0, длинный = 1. Просто и не хуже Манчестера.


Для передачи 2-х байт на прямой видимости по IR, возможно и проще. А для передачи 120 байт по RF не покатит однозначно.

Да кстати в современных пультах для помехозащизенности введен инверсный избыточный код, тоесть посылка в 2 раза больше.
Go to the top of the page
 
+Quote Post
ReM37
сообщение Jan 13 2007, 13:52
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 3-11-06
Пользователь №: 21 954



Цитата(dvm11111111 @ Jan 13 2007, 02:24) *
Для передачи 2-х байт на прямой видимости по IR, возможно и проще. А для передачи 120 байт по RF не покатит однозначно.


Можно узнать почему?
Я нашел один пульт, который передает точно RC5. Для экпериментов сойдет. Все же цель у меня перадать не меньше 32 байт по радио каналу (433 Mhz).

Сообщение отредактировал ReM37 - Jan 13 2007, 13:53
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 15 2007, 01:24
Сообщение #8


дятел
*****

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



Цитата(ReM37 @ Jan 13 2007, 13:52) *
Цитата(dvm11111111 @ Jan 13 2007, 02:24) *

Для передачи 2-х байт на прямой видимости по IR, возможно и проще. А для передачи 120 байт по RF не покатит однозначно.

Можно узнать почему?
Я нашел один пульт, который передает точно RC5. Для экпериментов сойдет. Все же цель у меня перадать не меньше 32 байт по радио каналу (433 Mhz).
Потому что уровень помех в RF (особенно 433 Mhz) очень высокий.
Передать то 32 байта вы сможете без проблем, а вот с получением этих 32-х байт придется
повозиться. По крайней мере вам понадобится точный контроль длительности стартового бита
c точностью примерно 0,2%. Ну или (что вероятно проще в данном случае, учитывая
длинну передачи ) некий адаптивный контроль длительности каждого бита с
например 10% точностью.

ЗЫ. Подключите модуль приемника и посмотрите на осциле что у него творится на выходе.
Многое сразу же станет понятно.

ЗЫЫ. RC5 вполне подходит для передачи по RF.
Go to the top of the page
 
+Quote Post
ReM37
сообщение Jan 15 2007, 22:05
Сообщение #9


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 3-11-06
Пользователь №: 21 954



Цитата(singlskv @ Jan 15 2007, 00:24) *
Передать то 32 байта вы сможете без проблем, а вот с получением этих 32-х байт придется
повозиться. По крайней мере вам понадобится точный контроль длительности стартового бита
c точностью примерно 0,2%. Ну или (что вероятно проще в данном случае, учитывая
длинну передачи ) некий адаптивный контроль длительности каждого бита с
например 10% точностью.

ЗЫ. Подключите модуль приемника и посмотрите на осциле что у него творится на выходе.
Многое сразу же станет понятно.

ЗЫЫ. RC5 вполне подходит для передачи по RF.


Я попробовал так:

Цитата
имеем внешнее прерывание по любому изменению
в прерывании смотрим чего насчитал таймер...
и обнуляем счетчик таймера для след изменеия по входу ExtINT
(получается типа ICP только захват счетчика таймера по любому изменению уровня)
Определяем минимальную длит импульса =Tmin.
;----
далее, с каждым прерыванием по Ext INT, смотрим что натикало (пусть будет T)и сверяемся с таблицой истинности:
1) T=2Tmin & __--- => bit=1
2) T=2Tmin & --__ => bit=0
3) T=Tmin & --__ & lastbit=1 => skip
4) T=Tmin & --__ & lastbit=0 => bit=0
5) T=Tmin & __-- & lastbit=0 => skip
6) T=Tmin & __-- & lastbit=1 => bit=1
;----


В Proteus все работает без проблем. Но реально неработает. Кстати, впервые неработает то, что работает в Proteus. smile.gif
Сделал чтобы можно было видеть длительность импульсов в LCD. Оказалось, что насчитывает бред какой то. В чем причина пока не понял. sad.gif
Что творится на выходе модуля приемника я смотрел. Когда передатчик ничего не передает - ужас. biggrin.gif Но когда передает - все очень четко.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 16 2007, 02:06
Сообщение #10


дятел
*****

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



Цитата
Я попробовал так:

имеем внешнее прерывание по любому изменению
в прерывании смотрим чего насчитал таймер...

Пока ловим стартовый бит настраиваем внешнее прерывание только на переход 0->1

запускаем таймер с прерыванием на время 3/8 длинны стартового бита
если раньше произошло новое внешнее прерывание то сбрасываем таймер и
продолжаем считать

если оказались в прерывании таймера,
перестраиваем внешнее прерывание на ловлю любого перехода,
перестраиваем прерывание таймера на 1/4 длительности бита (не выключая таймер)

при первом переходе 1->0 после срабатывания прерывания таймера запоминаем значение
длительности стартовой единички T=3/8(базовой длинны бита)+TCNT
сбрасываем TCNT
перестраиваем таймер на 5/8T

далее просто ловим переходы, при каждом переходе считываем значение TCNT
сравниваем с 3/8 необходимой длительности бита
если TCNT < 3/8 , ошибка, начинаем все с начала
если оказались в прерывании таймера то проверяем на соответствие RC5 (четный нечетный бит)
если ошибка начинаем все с начала
если все в порядке перестраиваем таймер на 1/2 бита
если все в порядке, сбрасываем TCNT и продолжаем ловить новые битики

ну и конечно по ходу не забываем записывать что же мы там напринимали

P.S. Может чего и накосячил но вроде примерно так
ЗЫЫ 3/8 и 5/8 желательно брать не точные значения а что-то типа 3/8+20тактов ЦП и
5/8- 20 тактов
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Семён   Манчестер для Avr   Nov 7 2006, 11:33
- - #alex_   Посмотри апнот AVR410 на их сайте - это манчестер ...   Nov 9 2006, 04:50
|- - Семён   Пишу сам. Тема закрыта.   Nov 9 2006, 07:11
|- - dvm11111111   Цитата(Семён @ Nov 9 2006, 07:11) Пишу са...   Dec 27 2006, 03:29
|- - =GM=   Цитата(dvm11111111 @ Dec 27 2006, 00:29) ...   Dec 27 2006, 03:43
|- - dvm11111111   а не слишком ли навороченно получается? да кстати ...   Dec 27 2006, 08:05
|- - &-rey   Цитата(dvm11111111 @ Dec 27 2006, 09:05) ...   Dec 27 2006, 10:39
||- - dvm11111111   Цитата(&-rey @ Dec 27 2006, 10:3...   Dec 28 2006, 02:40
||- - &-rey   Цитата(dvm11111111 @ Dec 28 2006, 03:40) ...   Dec 28 2006, 10:13
|- - pokos   Цитата(dvm11111111 @ Dec 27 2006, 08:05) ...   Dec 27 2006, 16:08
- - Kovrov   А что если сделать вот так... имеем внешнее прерыв...   Dec 28 2006, 13:40
|- - ReM37   А если через UART, но с манчестером? Т.е. из одног...   Dec 29 2006, 17:34
|- - =GM=   Цитата(ReM37 @ Dec 29 2006, 14:34) А если...   Dec 29 2006, 19:06
|- - muravei   Цитата(ReM37 @ Dec 29 2006, 17:34) А если...   Dec 30 2006, 10:31
|- - Nanobyte   Цитата(muravei @ Dec 30 2006, 10:31) ... ...   Dec 30 2006, 16:02
|- - =GM=   Цитата(Nanobyte @ Dec 30 2006, 13:02) Сов...   Dec 31 2006, 02:50
|- - Nanobyte   Цитата(=GM= @ Dec 31 2006, 02:50) ... Ну ...   Dec 31 2006, 12:24
|- - muravei   Цитата(=GM= @ Dec 31 2006, 02:50) Выпуска...   Jan 3 2007, 20:23
|- - =GM=   Цитата(muravei @ Jan 3 2007, 17:23) Цитат...   Jan 5 2007, 01:45
- - Nanobyte   В журнале "Радио" за 1983 год было описа...   Dec 29 2006, 19:11
- - Kovrov   да! как давно это было..... синхробайт E6 итд.   Dec 29 2006, 19:14
|- - ReM37   Цитата(Kovrov @ Dec 29 2006, 18:14) да...   Dec 29 2006, 21:54
- - Nanobyte   Можно просто переписать программу на AVR, правда т...   Dec 29 2006, 23:04
- - sensor_ua   Отсутствие постоянной составляющей можно получить ...   Dec 30 2006, 12:04
|- - ReM37   Цитата(sensor_ua @ Dec 30 2006, 11:04) От...   Dec 30 2006, 14:25
|- - dvm11111111   Цитата(ReM37 @ Jan 11 2007, 23:51) Это за...   Jan 12 2007, 02:14
|- - singlskv   Цитата(ReM37 @ Jan 12 2007, 20:22) Цитата...   Jan 12 2007, 23:03
|- - =GM=   Цитата(singlskv @ Jan 14 2007, 22:24) Цит...   Jan 15 2007, 14:19
|- - muravei   Цитата(singlskv @ Jan 15 2007, 01:24) уро...   Jan 15 2007, 15:19
|- - ReM37   Все же не могу разобраться почему в Proteus работа...   Jan 28 2007, 18:00
- - singlskv   Цитата(ReM37 @ Jan 11 2007, 23:51) Это за...   Jan 12 2007, 03:14
|- - ReM37   Цитата(singlskv @ Jan 12 2007, 02:14) Цит...   Jan 12 2007, 11:38
|- - Семён   приветствую всех. извиняюсь за долгое отсутствие н...   Jan 12 2007, 12:21
- - GDI   Давно, года 4 назад, покупал для клиентов пульт ДУ...   Jan 15 2007, 15:37


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

 


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


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