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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Манчестер для Avr
Семён
сообщение Jan 12 2007, 12:21
Сообщение #31


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

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



приветствую всех. извиняюсь за долгое отсутствие не было инета. Свой вариант приема постораюсь опубликовать на следующей недели.


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 12 2007, 16:58
Сообщение #32


дятел
*****

Группа: Свой
Сообщений: 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
Сообщение #33


Участник
*

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



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


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


дятел
*****

Группа: Свой
Сообщений: 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 мс

Ну или опишите поподробнее в чем конкретно Ваша задача и тогда можно
будет рассчитывать на более точный ответ
Go to the top of the page
 
+Quote Post
dvm11111111
сообщение Jan 13 2007, 03:24
Сообщение #35


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #36


Участник
*

Группа: Новичок
Сообщений: 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
Сообщение #37


дятел
*****

Группа: Свой
Сообщений: 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
=GM=
сообщение Jan 15 2007, 14:19
Сообщение #38


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 больше периода сигнала, выход используете, как обычно. Схема хорошо подавляет именно импульсные помехи меньшие половины периода сигнала. При желании счетчик можно легко реализовать программно.


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


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(singlskv @ Jan 15 2007, 01:24) *
уровень помех в RF (особенно 433 Mhz) очень высокий.

Используйте ЧМ(FM)
Go to the top of the page
 
+Quote Post
GDI
сообщение Jan 15 2007, 15:37
Сообщение #40


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

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Давно, года 4 назад, покупал для клиентов пульт ДУ ИК+RF433 и приемник к нему. в приемнике 433 превращалось в ИК и подавалось на светодиод. Пульт был многосистемный программируемый. Покупалось все это в www.conrad.spb.ru, на сайте я сейчас этого пульта не нашел, но он был в бумажном каталоге на немецком языке.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
ReM37
сообщение Jan 15 2007, 22:05
Сообщение #41


Участник
*

Группа: Новичок
Сообщений: 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
Сообщение #42


дятел
*****

Группа: Свой
Сообщений: 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
ReM37
сообщение Jan 28 2007, 18:00
Сообщение #43


Участник
*

Группа: Новичок
Сообщений: 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.
В чем может быть дело?
Go to the top of the page
 
+Quote Post

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

 


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


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