USB ИК-приемник

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Gust2002
Родился
Сообщения: 17
Зарегистрирован: Чт дек 15, 2011 09:54:56

USB ИК-приемник

Сообщение Gust2002 »

Добрый день!

Хочу собрать ИК-приемник для ноута. В радиотехнике слабоват (силен в программировании), есть пара вопросов по факту анализа нескольких схем таких устройств:
1) Для чего ставят кварц (встречался на 12 МГц)? Можно ли обойтись без него?
2) Пока не смотрел исходники прошивок, но насколько мощным должен быть контроллер, чтобы обработать нажатие нескольких кнопок на пульте (мне нужно где-то 5 разных команд)? Подойдет ли для этих целей ATTiny13A?
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: USB ИК-приемник

Сообщение Engineer_Keen »

Что будет делать контроллер? Принимать ИК и передавать по USB? Если да, то:
Gust2002 писал(а):1) Для чего ставят кварц (встречался на 12 МГц)? Можно ли обойтись без него?

Кварц для стабильности, кроме того, в случае с АВР, для работы на более высоких частотах, т.к. встроенного RC-генератора на 8 (или 9.6) МГц для протокола USB не хватит.
Gust2002 писал(а):2) Пока не смотрел исходники прошивок, но насколько мощным должен быть контроллер, чтобы обработать нажатие нескольких кнопок на пульте (мне нужно где-то 5 разных команд)? Подойдет ли для этих целей ATTiny13A?

Для обработки клавиш никакой мощности не нужно, это сделает любой контроллер, другое дело USB, тут либо контроллер со встроенным USB, либо например использование библиотек типа V-USB, причем последняя просто не влезет в тини13, т.к. ей нужно 2К флеша минимум (+обработка ваших кнопок)
Gust2002
Родился
Сообщения: 17
Зарегистрирован: Чт дек 15, 2011 09:54:56

Re: USB ИК-приемник

Сообщение Gust2002 »

Engineer_Keen писал(а):Что будет делать контроллер? Принимать ИК и передавать по USB? Если да, то:

Именно это он и будет делать.
Engineer_Keen писал(а):Кварц для стабильности, кроме того, в случае с АВР, для работы на более высоких частотах, т.к. встроенного RC-генератора на 8 (или 9.6) МГц для протокола USB не хватит.

Протокол USB (если верить Агурову и его книге "Практика программирования, 2006") имеет несколько режимов передачи данных. При этом USB-устройства опрашиваются хостом, частота хоста может меняться. Для устройств типа мышки используется передача по прерываниям с частотой 10-255 мс. Вы про это написали "..на 8 (или 9.6) МГц для протокола USB не хватит"? Учитывая небольшой объем (не больше байта) передаваемых данных можно использовать другие типы передачи данных (изохронный с частотой опроса 1мс)? Или все упирается в наличие готовых библиотек?
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: USB ИК-приемник

Сообщение Engineer_Keen »

Даже при передаче одного байта данных, кроме него посылается куча дополнительной информации, всю ее надо успеть обрабатывать и извлекать полезные данные, это все-таки не ком-порт. Если у вас получится написать свой обработчик, не используя стандартные библиотеки, может быть и можно будет впихнуть в тини13. Я правда в этом сомневаюсь...
Gust2002
Родился
Сообщения: 17
Зарегистрирован: Чт дек 15, 2011 09:54:56

Re: USB ИК-приемник

Сообщение Gust2002 »

Почитал по теме, походу "ноги растут" отсюда, причем почему он выбрал именно 12 MHz так и не ясно. Потом это плавно перешло в V-USB. Поправьте меня, если я не прав. У USB есть три скорости передачи данных: 1.5, 12 и 450 Mb/s. V-USB поддерживает low-speed устройства, т.е. скорость передачи данных 1.5 MHz Берем макс. частоту чипа 9 Mhz, так мы получаем 6 тактов ядра на 1 принятый бит. Вроде этого должно хватить на запись бита в память (скорость выполнения команд еще не изучал). Анализ данных можно проводить после приема данных, а в момент анализа данные можно не принимать. Объем передаваемых данных должен уложиться в 20-30 байт (бегло оценил исходя из описания каждой области пакета). По идее должно хватить всего 2 вида пакетов: токен IN от USB хоста и ответ от контроллера. Объем ОЗУ критичен только при приеме, т.к. ответ можно закодировать в области кода.
Я не собираюсь писать библиотеку для поддержки всего протокола, мне нужна реализация только одной конкретной задачи. Буду рад за конструктивную критику. Мотивация следующая: в моем случае трудно доставать комплектующие, т.к. у нас всего один нормальный магазин, но там купить можно не все. Остальное приходится заказывать в инете, а тут или единичный экземпляр заказывать в чипдипе или за те же деньги (плюс стоимость доставки) покупать что-то еще в нагрузку, т.к. есть ограничения на сумму минимального заказа, и потом еще сидеть ждать 3-4 недели.
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Re: USB ИК-приемник

Сообщение Goodefine »

Можете взглянуть еще на мой вариант
...причем почему он выбрал именно 12 MHz так и не ясно...

Выбор 12 МГц обусловлен, насколько помню, тем, что из нее удобно получаются тайминги (жесткие) физических сигналов USB порта.
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: USB ИК-приемник

Сообщение Engineer_Keen »

Gust2002 писал(а):Берем макс. частоту чипа 9 Mhz, так мы получаем 6 тактов ядра на 1 принятый бит. Вроде этого должно хватить на запись бита в память (скорость выполнения команд еще не изучал)

Обработка данных в регистре 1 такт, запись/чтение в/из памяти в регистр - 2 такта.
По USB не подскажу, только если по ассемблеру...
Gust2002
Родился
Сообщения: 17
Зарегистрирован: Чт дек 15, 2011 09:54:56

Re: USB ИК-приемник

Сообщение Gust2002 »

Goodefine писал(а):Можете взглянуть еще на мой вариант

В статье написано, что драйвер есть только под WinXP 32 bit. Однако здесь и здесь пишут, что есть поддержка всех ОС начиная с XP (включая x64) с версии 1.2.0.0, которая вышла летом 2010. Статья старая или действительно работает только под x32? Спрашиваю, потому что собираюсь подключать к win 7 x64.
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Re: USB ИК-приемник

Сообщение Goodefine »

Microsoft Windows operating systems (Windows 2000, Windows XP, Windows Vista and Windows 7; Windows 98 SE and Windows ME for versions up to 0.1.12.2 )

Если Вы обратите внимание, в статье версия драйвера 0.1.12.1. На тот момент, когда прикручивался вариант с HID, это был последняя версия. Я специально заострил на этом внимание, поскольку на x64 ОС наблюдались проблемы. Похоже доработали. Если авторы не изменили интерфейс библиотеки, работать должно и с новой.
Есть еще вариант с CDC классом, но под Win7 требуется доработать серверное приложение на ПК - само железо работает, в виртуальный порт приходит все верно, но не корректно обрабатываются данные самой программой. Как Поставлю Win7 на второй винт, погляжу почему.
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: USB ИК-приемник

Сообщение Kavka »

Gust2002
Gust2002 писал(а):У USB есть три скорости передачи данных: 1.5, 12 и 450 Mb/s.
Во первых, последняя цифра 480. И если быть точными, то "мегабит в секунду".
Gust2002 писал(а):Берем макс. частоту чипа 9 Mhz, так мы получаем 6 тактов ядра на 1 принятый бит.
Во вторых, сигнальчики "бегающие" по USB не совсем простые, поэтому вам не мешало бы ознакомиться с существующими наработками, чтобы не изобретать велосипеда (на 9-ти мегагерцах :) ).
Удачи!
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Gust2002
Родился
Сообщения: 17
Зарегистрирован: Чт дек 15, 2011 09:54:56

Re: USB ИК-приемник

Сообщение Gust2002 »

Спасибо, а есть что-нибудь про encoding?
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Re: USB ИК-приемник

Сообщение Goodefine »

encoding чего?
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Gust2002
Родился
Сообщения: 17
Зарегистрирован: Чт дек 15, 2011 09:54:56

Re: USB ИК-приемник

Сообщение Gust2002 »

В статье по ссылке от Kavka описывается алгоритм приема данных. Мне еще интересно как отправлять. В описаниях про USB написано, что сигнал идет по двум контактам с противоположными напряжениями. Для меня пока не понятно, как выдавать на вывод контроллера отрицательное напряжение, чтобы выполнить условие. Поверхностно читал про UART, но он вроде медленный для USB.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: USB ИК-приемник

Сообщение Engineer_Keen »

Gust2002 писал(а):сигнал идет по двум контактам с противоположными напряжениями. Для меня пока не понятно, как выдавать на вывод контроллера отрицательное напряжение, чтобы выполнить условие.

Противоположные это не + и -, это 1 и 0.
Gust2002 писал(а):Поверхностно читал про UART, но он вроде медленный для USB.

Это вообще совершенно разные интерфейсы, и по скорости и по физическому принципу и с точки зрения программы.
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Re: USB ИК-приемник

Сообщение Goodefine »

Gust2002 писал(а): Для меня пока не понятно, как выдавать на вывод контроллера отрицательное напряжение, чтобы выполнить условие...

Туда и не надо выдавать отрицательное напряжение. Когда на одной линии лог. 1 - на другой лог. 0, и наоборот. Непонятно что вы хотите изобрести, с нуля подымать драйвер, так это на десятки месяцев работа. А если взять существующие, нафига тогда заморачиваться физическим интерфейсом..
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: USB ИК-приемник

Сообщение Kavka »

Gust2002 писал(а):Мне еще интересно как отправлять. В описаниях про USB написано, что сигнал идет по двум контактам с противоположными напряжениями. Для меня пока не понятно, как выдавать на вывод контроллера отрицательное напряжение, чтобы выполнить условие.
Вы схемы типовые смотрели для V-USB? Вы видели там где-нибудь отрицательное напряжение? Просто внимательное "глядение" на схему, обычно, снимает кучу вопросов. :)) Если вы осилили страничку по той ссылочке, о каком кодировании вы говорите? Там есть все нужные слова (для поиска). А по ссылочкам можно найти исходники и документацию.

Ещё раз повторюсь - ознакомьтесь хорошенько с существующими наработками.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Gust2002
Родился
Сообщения: 17
Зарегистрирован: Чт дек 15, 2011 09:54:56

Re: USB ИК-приемник

Сообщение Gust2002 »

Да, наверно с чем-то перепутал (по крайней мере не смог найти источник). Где-то читал, что передача идет по двум проводам, на одном +2,5В, на другом - 2,5В, в итоге достигается разность потенциалов в 5В. Про USB все верно: при передаче подается напряжение на один из двух пинов.
Аватара пользователя
Dnepr_1186
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт мар 26, 2009 20:53:27
Откуда: Беларусь.Минская обл.

Re: USB ИК-приемник

Сообщение Dnepr_1186 »

делал поэтой схеме http://ra4nal.qrz.ru/irkbd.shtml работает отлично, не требует установки программ
Gust2002
Родился
Сообщения: 17
Зарегистрирован: Чт дек 15, 2011 09:54:56

Re: USB ИК-приемник

Сообщение Gust2002 »

Dnepr_1186 писал(а):делал поэтой схеме http://ra4nal.qrz.ru/irkbd.shtml работает отлично, не требует установки программ

Спасибо, как раз было интересно увидеть решение на ассемблере, т.к. в этом случая я лучше понимаю, что происходит.

Немного поигрался со светодиодами. Теперь буду изучать существующие решения. Пока есть один вопрос о том как можно протестировать создаваемую прошивку в каком-нибудь эмуляторе. Я сейчас использую AVR Studio. С точки зрения процесса отладки кода вопросов нет. Не понятно как можно проэмулировать отправку сигнала контроллеру извне, чтобы это по возможности не затронуло код самой прошивки.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: USB ИК-приемник

Сообщение Engineer_Keen »

Proteus помимо всего прочего эмулирует работу контроллеров AVR. Но USB эмулируется только встроенные в МК.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»