|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 42)
|
Nov 9 2006, 04:50
|
Группа: Новичок
Сообщений: 12
Регистрация: 30-09-06
Пользователь №: 20 840

|
Посмотри апнот AVR410 на их сайте - это манчестер применённый к стандарту RC5 (на асме)
|
|
|
|
|
Nov 9 2006, 07:11
|
Частый гость
 
Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922

|
Пишу сам. Тема закрыта.
--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
|
|
|
|
|
Dec 27 2006, 03:29
|
Участник

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

|
Цитата(Семён @ Nov 9 2006, 07:11)  Пишу сам. Тема закрыта. Если не жалко, сообщи о результатах, тоже интересует данная тема, вот только с самосинхронизацией загвоздка, как ее реализовать.
|
|
|
|
|
Dec 27 2006, 03:43
|

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

|
Цитата(dvm11111111 @ Dec 27 2006, 00:29)  Цитата(Семён @ Nov 9 2006, 07:11)  Пишу сам. Тема закрыта.
Если не жалко, сообщи о результатах, тоже интересует данная тема, вот только с самосинхронизацией загвоздка, как ее реализовать. Манчестер - самосинхронизированный код. Вгрубе алгоритм такой 1) Ждёте перепада 0-1 или 1-0 в середине бита (вот вам и синхронизация), 2) Определяете какой бит пришел и запоминаете его (вдвигаете в регистр), 3) Пропускаете 3/4 периода и переходите к пункту 1. В начале сообщения должно быть кодовое слово, по которому вы синхронизируете первый бит. Вот и всё.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Dec 27 2006, 08:05
|
Участник

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

|
а не слишком ли навороченно получается? да кстати нашел вот такую весчь, только все ника побороть немогу.
Сообщение отредактировал dvm11111111 - Dec 27 2006, 08:13
|
|
|
|
|
Dec 27 2006, 10:39
|
Местный
  
Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064

|
Цитата(dvm11111111 @ Dec 27 2006, 09:05)  а не слишком ли навороченно получается? да кстати нашел вот такую весчь, только все ника побороть немогу. Если искать простые пути, то можно посмотреть сдесь www.atmel.com/dyn/resources/prod_documents/doc3a78163c4000a.pdf
|
|
|
|
|
Dec 27 2006, 16:08
|
Местный
  
Группа: Участник
Сообщений: 270
Регистрация: 29-06-06
Пользователь №: 18 445

|
Цитата(dvm11111111 @ Dec 27 2006, 08:05)  а не слишком ли навороченно получается? Наворочено - это когда ФАПЧа для строба и адаптивный порог для импульса.
|
|
|
|
|
Dec 28 2006, 02:40
|
Участник

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

|
Цитата(&-rey @ Dec 27 2006, 10:39)  Цитата(dvm11111111 @ Dec 27 2006, 09:05)  а не слишком ли навороченно получается? да кстати нашел вот такую весчь, только все ника побороть немогу.
Если искать простые пути, то можно посмотреть сдесь www.atmel.com/dyn/resources/prod_documents/doc3a78163c4000a.pdf Про использование INT0 и таймера эт я знаю, только это подходит для приема RC5 с его 12 битами, а вот если принимать таким способом 112 бит, то выяснилось, что расчетные значения задержек несовсем подходят. Сбой считываемых значений начинается гдето на 8-10 байте, что несовсем подходит. Сейчас и передатчи и приемник работают от кварцев, а планируется использовать передатчик от внутреннего RC (да еще и несколько передатчиков, соответственно уход длительности импульсов будет и в плюс, и в минус), а так ввообще получится плюс-минус пол километра. Вот меня и интересует алгоритм с синхронизацией. Цитата(pokos @ Dec 27 2006, 16:08)  Цитата(dvm11111111 @ Dec 27 2006, 08:05)  а не слишком ли навороченно получается?
Наворочено - это когда ФАПЧа для строба и адаптивный порог для импульса. а по подробней, с исходником на С?
|
|
|
|
|
Dec 28 2006, 10:13
|
Местный
  
Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064

|
Цитата(dvm11111111 @ Dec 28 2006, 03:40)  Про использование INT0 и таймера эт я знаю, только это подходит для приема RC5 с его 12 битами, а вот если принимать таким способом 112 бит, то выяснилось, что расчетные значения задержек несовсем подходят. Сбой считываемых значений начинается гдето на 8-10 байте, что несовсем подходит. Сейчас и передатчи и приемник работают от кварцев, а планируется использовать передатчик от внутреннего RC (да еще и несколько передатчиков, соответственно уход длительности импульсов будет и в плюс, и в минус), а так ввообще получится плюс-минус пол километра. Вот меня и интересует алгоритм с синхронизацией. насколько я помню там нет упоминания об INT и TMR, просто описан алгоритм приема манчестера, с синхронизацией по длинному импульсу (это когда импульсы идут потоком и нужно выловить пакет определенной длительности) что же касается сбоев то во первых для таких вещей обычно пользуют Capture (ICR1), а во вторых точка привязки (или точка отсчета) должна быть не в начале приема, а перемещаться после каждого фронта (или периода синхросигнала), тогда точность будет определять погрешность в пределах 1-го периода синхронизации.
|
|
|
|
|
Dec 29 2006, 17:34
|
Участник

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

|
А если через UART, но с манчестером? Т.е. из одного байта получаем два.
|
|
|
|
|
Dec 29 2006, 21:54
|
Участник

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

|
Цитата(Kovrov @ Dec 29 2006, 18:14)  да! как давно это было..... синхробайт E6 итд. E6 - 11100110. Почему именно E6? Радио86РК - помню. МИКРО-80 нет...
|
|
|
|
|
Dec 30 2006, 14:25
|
Участник

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

|
Цитата(sensor_ua @ Dec 30 2006, 11:04)  Отсутствие постоянной составляющей можно получить как в AN43 от RFM - табличка оттуда Значит один байт превращаеться в 12 бит. Но будет 3 одинаковых бита подряд. В манчестере не больше 2. Когда можно считать, что постоянной составляющей нет?
|
|
|
|
|
Dec 30 2006, 16:02
|

За битами по регистрам гоняюсь
  
Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446

|
Цитата(muravei @ Dec 30 2006, 10:31)  ... помоему , то называлось "Без возвращения к нулю" Совершенно верно, но в ТЕ времена называть код манчестерским "не рекомендовалось"  . Но, тем не менее, вполне работоспособная схема и программа. И сейчас кассеты прекрасно считываются на той-же МИКРО-80.
--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
|
|
|
|
|
Dec 31 2006, 12:24
|

За битами по регистрам гоняюсь
  
Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446

|
Цитата(=GM= @ Dec 31 2006, 02:50)  ... Ну почему, был такой код, назывался манчестер-2, работал на скорости 1 мбод. Ну да, код-то был (как в том анекдоте про Вовочку - предмет есть, а слова нет  ) а вот в документации всё должно быть отечественным !!!
--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
|
|
|
|
|
Jan 5 2007, 01:45
|

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

|
Цитата(muravei @ Jan 3 2007, 17:23)  Цитата(=GM= @ Dec 31 2006, 02:50)  Выпускались даже приемник и передатчик в виде микросхем.
И сейчас выпускаются:К1889ВА1Ф А раньше была такая серия 588. 588ВГ6 - передатчик, 588ВА3 - усилитель-ограничитель, вроде та же светлана выпускала.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Jan 11 2007, 23:51
|
Участник

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

|
Это запись одной команды с пульта управления ТВ. Кто может сказать где какой бит? Вроде должен быть RC5, но по моему что-то здесь не так... http://rem-blog.net/tmp/rc5.gif
|
|
|
|
|
Jan 12 2007, 02:14
|
Участник

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

|
Цитата(ReM37 @ Jan 11 2007, 23:51)  Это запись одной команды с пульта управления ТВ. Кто может сказать где какой бит? Вроде должен быть RC5, но по моему что-то здесь не так... http://rem-blog.net/tmp/rc5.gifЭт ШИМ в чистом виде.
|
|
|
|
|
Jan 12 2007, 03:14
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(ReM37 @ Jan 11 2007, 23:51)  Это запись одной команды с пульта управления ТВ. Кто может сказать где какой бит? Вроде должен быть RC5, но по моему что-то здесь не так... http://rem-blog.net/tmp/rc5.gifда это не похоже на RC5 вот такого П__П__П куска в RC5 ИМХО быть не должно посмотрите в сторону кодов когда 1= П__ а 0= П_ ну или как-то наоборот похожие коды у Panasonic, но там вроде П___ и П_ Цитата(dvm11111111 @ Jan 12 2007, 02:14)  Цитата(ReM37 @ Jan 11 2007, 23:51)  Это запись одной команды с пульта управления ТВ. Кто может сказать где какой бит? Вроде должен быть RC5, но по моему что-то здесь не так... http://rem-blog.net/tmp/rc5.gifЭт ШИМ в чистом виде. Конечно это ШИМ. Более того если посмотреть на временную диаграму движения Вашей вилки к Вашему рту в процессе еды, от состояния сильного голода к состоянию полного обжорства то Вы с удивлением обнаружите что это ТОЖЕ ШИМ, причем с полными признаками плавного регулирования
|
|
|
|
|
Jan 12 2007, 11:38
|
Участник

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

|
Цитата(singlskv @ Jan 12 2007, 02:14)  Цитата да это не похоже на RC5 вот такого П__П__П куска в RC5 ИМХО быть не должно По моему такого точно не должно быть. Потому и просил разобрать по битам. Мне не получилось. Это не Манчестер. Попробовал все пульты, которые у меня есть. RC5 не нашел.  Цитата Эт ШИМ в чистом виде.  TV управляеться ШИМ? Это SONY.
|
|
|
|
|
Jan 12 2007, 12:21
|
Частый гость
 
Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922

|
приветствую всех. извиняюсь за долгое отсутствие не было инета. Свой вариант приема постораюсь опубликовать на следующей недели.
--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
|
|
|
|
|
Jan 12 2007, 20:22
|
Участник

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

|
Цитата(singlskv @ Jan 12 2007, 15:58)  Если все еще интересно то это код 011000010000 Возможно. Т.е. короткий импульс = 0, длинный = 1. Просто и не хуже Манчестера.
|
|
|
|
|
Jan 12 2007, 23:03
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(ReM37 @ Jan 12 2007, 20:22)  Цитата(singlskv @ Jan 12 2007, 15:58) 
Если все еще интересно то это код 011000010000
Возможно. Т.е. короткий импульс = 0, длинный = 1. Просто и не хуже Манчестера. ну во первых не возможно, а так оно и есть если у Вас таки SONY 1T отрицательный импульс = 0 2T отрицательный импульс = 1 3T отрицательный импульс = стартовый бит (насчет точно 3T не могу сейчас сказать точно) T=550мкс кажись повтор при нажатой кнопке кажеться через 20-30 мс Ну или опишите поподробнее в чем конкретно Ваша задача и тогда можно будет рассчитывать на более точный ответ
|
|
|
|
|
Jan 13 2007, 03:24
|
Участник

Группа: Участник
Сообщений: 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 раза больше.
|
|
|
|
|
Jan 13 2007, 13:52
|
Участник

Группа: Новичок
Сообщений: 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
|
|
|
|
|
Jan 15 2007, 01:24
|
дятел
    
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Jan 15 2007, 14:19
|

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

|
Цитата(singlskv @ Jan 14 2007, 22:24)  Цитата(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. При передаче по радиоканалу возникают такие специфические импульсные помехи, как врезки(иголки) и вырезки, которые возникают вследствие работы ару/ограничителей. Борьба с ними достаточно проста, до определенного предела, разумеется. Ставите на выходе радиоканала счетчик на 16-32-64...с залипанием на макс/мин, сигнал подаете на D-вход, на счетный вход подаете меандр с периодом в 16-32-64 больше периода сигнала, выход используете, как обычно. Схема хорошо подавляет именно импульсные помехи меньшие половины периода сигнала. При желании счетчик можно легко реализовать программно.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Jan 15 2007, 22:05
|
Участник

Группа: Новичок
Сообщений: 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. Сделал чтобы можно было видеть длительность импульсов в LCD. Оказалось, что насчитывает бред какой то. В чем причина пока не понял. Что творится на выходе модуля приемника я смотрел. Когда передатчик ничего не передает - ужас.  Но когда передает - все очень четко.
|
|
|
|
|
Jan 16 2007, 02:06
|
дятел
    
Группа: Свой
Сообщений: 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 тактов
|
|
|
|
|
Jan 28 2007, 18:00
|
Участник

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

|
Все же не могу разобраться почему в Proteus работает а реально нет.
Упрощенный код:
interrupt [TIM1_CAPT] void timer1_capt_isr(void) { tmp=ICR1;
if (CAPTURE_FRONT) { TCCR1B = 0b10000101; //switch to falling edge CAPTURE_FRONT = 0; } //if
else { TCCR1B = 0b11000101; //switch to rising edge CAPTURE_FRONT = 1; } // else
При каждом прерываний смотрю чему равно tmp. Proteus показывает, что увеличиваеться на ~1800 (самый короткий импульс в RC5). Посмотрел что насчитывает реально. Оказываеться, что увеличиваеться только на 7. Тактовая частота 8 MHz. В чем может быть дело?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|