Программирование BASCOM
Меню сайта
Категории каталога
Мои статьи [115]
Наш опрос
Оцените мой сайт
Всего ответов: 1292
Главная » Статьи » Мои статьи

RC5 для USB
Вдохновлённый предыдущими проектами, подключил к USB RC5 пульт. Практического применения можно добиться, поправив ПО для компьютера под свои нужды. А пока выводится код принятой команды, переключаются кнопки от клавиш "0 - 9" и регулируется прогресс-бар кнопками "CH+" и "CH-". Вообщем есть от чего оттолкнутся пытливому уму!
 
 
Не долго думая, добавил на макетку с предыдущим проектом (USB-LCD) ИК приёмник, поправил код со стороны контроллера и компьютера, и всё ОК!
 
 
ЖКИ здесь скорее для отладки, чем для практических целей.
В первую строку контроллер выводит код распознанной команды,
а во вторую - время, полученное из ПК. LED2 вспышками сигнализирует, что сигнал ИК-приёмником получен.
С чем пришлось столкнутся - в новых версиях Баскома, начиная с 1.11.9.8 есть возможность устанавливать задержку сигнала для конфигурации RC5 с помощью Wait. По умолчанию, без указания, она равна 100. У меня заработало при 109.  Есть ещё одна проблема, которую пока не решил - нелинейность принятия комманд. То всё чётко принимает, то с небольшими паузами. Но команды распознаёт уверенно, без ошибок. Связано это скорее всего с задержками на обработку кода ЮСБ. Правда, код принятия сигнала RC5 стоит в главном цикле, нужно попробовать повесить на прерывание, но первой командой в их обработчике должна быть SEI (разрешить прерывания). Однако в последнем случае надежность работы снизится. Ещё вариант - отключить ЖКИ и перевести девайс на более мелкий по ногам контроллер, например - Tiny461 или идеально Tiny45 (не меньше, чем 4К памяти).
 
 
В архиве - исходники на BASCOM и VBNET2008.
Благодарность господам Ollopa и Пётр за предоставленные библиотеки!
 
Если кто-то заинтересуется проектом и улучшит его, не забывайте поделится кодом!!!
Категория: Мои статьи | Добавил: bascom (01.08.2010)
Просмотров: 9564 | Комментарии: 17
Всего комментариев: 171 2 »
16 КИМ-сервис  
1
А не подскажите для atmega325-16u.

15 sepulka  
1
Как редактировать свои сообщения ?
Гораздо "осмысленнее" можно было-бы писать.

14 sepulka  
1
Добавил ожидание нулевого адреса, как в Хелпе Bascom.
И все работает (wait по умолчанию).
Но не понятно.
А если у меня пульт, допустим, не от телевизора (адрес 0), а от кассетного плеера (адрес 5), то его команды никогда не распознают. Не смотря на то, что они тоже в коде RC5.

17 batsunden  
0
...в RC5 первые идут 2 "1" потом 0 или 1 , а только потом код устройства 5 бит и команда.... поэтому он всегда знает где начало кода,  после получения каждого байта отслеживает середину периода, чтобы четко понимать в каком такте он находится... поэтому ошибок быть не должно... если все правильно запилено....

13 sepulka  
1
"...подбирать по стабильному срабатыванию, в версиях начиная с 1.11.9.9", а у меня 1.11.9.8 .
Может в этом дело ?

10 sepulka  
1
Теперь это сообщение (на которое ссылался) имеет номер 3.

9 sepulka  
1
Проблема аналогичная описанной в сообщении 2.
Переменную Wait менял : 100, 110, 200. Результат не меняется - не анализирует код пульта и тут же возвращает в переменную Address - 255, а в переменную Command - 127. Хотя при симуляции четко останавливается и ждет команду с пульта.
(Bascom - AVR 1.11.9.8)
(Code:
$regfile = "m8def.dat"
$crystal = 8000000 'внутренний генератор
$lib "lcd4.lbx"
$lib "mcsbyte.lbx" 'Подключаем библиотеку функций
'$sim
Config Rc5 = Pind.2 , Wait = 200 ' *Wait - подбирать по стабильному срабатыванию, в версиях начиная с 1.11.9.9
Enable Interrupts 'Разрешаем прерывания
Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7
Config Lcd = 16 * 2
Dim Address As Byte 'байт адреса
Dim Command As Byte 'байт команды

Cursor Off 'Выключить курсор

Do
Getrc5(address , Command) 'Принять команду с ИК - пульта

Command = Command And &B01111111
Locate 1 , 6
Lcd "Adr.: " ; Address
Locate 2 , 5
Lcd " Cmd: " ; Command
Waitms 300
Loop
End
)


11 bascom  
0
А пульт точно с протоколом RC5?

12 sepulka  
0
До пульта даже дело не доходит.
Правда я убрал ожидание нулевого адреса.
Может в этом я не прав ? Работает только с нулевым адресом ?

6 bascom  
0
На красном светодиоде происходит падение напряжения около 1,7 - 2 вольта в зависимости от экземпляра. И это он выдаёт +3,3 вольта, а не его питают этим напряжением. Он служит для согласования уровней контроллера и ЮСБ. На сайте есть соответствующая статья. Вместо светодиода можно 2 последовательных диода поставить.

7 sepulka  
1
С красным понятно, но это LED1.
А как насчет LED2 ?

8 bascom  
0
LED2 на схеме указан наоборот. Ошибочка вышла...

4 Павел  
0
А где взять библиотеку для USB? Без нее программа не компилируется.

5 bascom  
0
swusb.LBX из архива положите в папку LIB BASCOMa.

3 and_lk  
1
Попробовал собрать сначала по схеме без подключения к USB на ATMega8. Оператор Getrc5(address , Command) упорно возвращает в переменную address - 255, а в переменную Command - 127. При этом с сигнальной ножки TSOP36 идут импульсы от пульта. Не подскажете в чем может быть проблема ?
Ответ: Посмотрите переменную Wait.

2 bascom  
0
На PureBasic исходника нет. Но его нетрудно получить, основываясь на предыдущих проектах с USB и VBNET - коде этого проекта.

1-10 11-11
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright Radan Studio © 2024