Форум

Радиолюбительский форум.

Если у Вас возникли вопросы, задавайте их на форуме.

В сети

Пользователей: 126
Из них просматривают:
Аналоги: 31. Даташиты: 44. Инструкции: 2. Новости: 16. Остальное: 3. Программы: 1. Производители: 2. Профиль пользователя: 6. Расчёты: 2. Теги: 2. Форум: 17.
Участников: 2
Гостей: 124

Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.

1 ... 28 29 30 31


Re: Проблема с декодером
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
Дело в что 16 битный таймер занят.
Я написал след. образом:
1) иниц. внешн. прерыв. по люб. лог. уровню и 2-го таймера 8-ми битного по переполнению каждые 12 мкС.
2) Если прих. 0: запуск таймера счета для вычисления длины импульса при помощи переменной timecount(в прерывании использую только timecount++) и уст. флаг.
3)если прих. 1: ост. таймер и сброс флага
4)Если сброшен флаг и есть счет(timecount): то провер. счет, если в одном диапазоне для 1 мС, то в 16 символьный массив с опред. индексом(buffer[wr]) помещаем 0; а если в дипазоне для 2 мС, то ... 1.
5) увелич индекс wr и сравн. его с размером массива 16, если равен, то обнул. wr
6)увелич индекс counter и сравн. его с размером массива 16, если равен, то обнул. counter.
7) пишим макрос:
а. объявляем перем. дата для хранения
б. ждем пока counter равен 0
в. как только counter не равен 0, то data=buffer[rd]
г. увелич индекс rd и сравн. его с размером массива 16, если равен, то обнул. rd.
д. запрещ. все прерыв.; пониж. счетчик; разреш. прерыв;
е. возвращ. в ф-ю data (return data).
8) Дальше просто последов. провер:
Например, если передаю 0х6F = ob01101111, то проверяю так
if (getchar() ==0 && getchar() ==1 && getchar() ==1 && getchar() ==0 ... ) PORTC.2=1; // выкл. LED

P.S. если оставишь мыло свое, то могу скинуть код.
Писал на С



Re: Проблема с декодером
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
Извините, что пишу не сразу все. Вопросы постепенно лезут)))
Не могу понять зачем другой таймер и для чего 2.5 мС?



Re: Проблема с декодером
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
И еще вопрос. Как реализовать буфер для чтения принятых данных?



Re: Проблема с декодером
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
Спасибо более понятнее стало!
В смысле:"если произошло"? И как проверить не RC5 code?



Проблема с декодером
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
Я вот разрабатываю приемник и передатчик по ИК каналу. Сейчас разрабатываю свой протокол по Т, 2Т сони технологии.
Т, 2Т. Т-0, 2Т-1. Передаю 2 бита старта. 8 бит адреса и 8 бит данных.
Декодер я делал по прерыванию 8 битного таймера. По переполнению считает низкий уровень и битовый флаг 1. Как только высокий уровень флаг в 0. Проверяет условие. Определяет время, сравнивая с константой. Кладет его в буфер типа FIFO. Отту в основной прогр. Сравнивает все и выполняет событие если истина. Все это реализовываю в таймере. Да кстати 1 - 2мС, 0- 1м, старт бит - 500 мкС.
Таймер оказывается все не успевает делать. Если по внешнему прерыванию делать, то я пока что- то не совсем понимаю. Перегрев)))
Помогите пожалуйста. Как правильно и лучше это реализовать.
А то я уже совсем запутался
Может у кого пример кода есть.
P.S. Программирую на С. В азме только проверяю как выглядит код




1 ... 28 29 30 31




Разное

Интересно

Во время ремонта телевизора не ставьте настольную лампу на его корпус.
Она обязательно упадёт и отобьёт горловину кинескопа.