Макетная плата AVR-USB-TINY45 |
Добавил(а) microsin | |||||||||||||||||||||||||||||
Макетная плата AVR-USB-TINY45 позволяет разрабатывать на основе микроконтроллера ATtiny45 (или ATtiny85) и открытой библиотеки V-USB (старое название AVR-USB, см. Википедию) простые и маленькие USB-устройства. Размеры платы с макетным полем 42.4 x 12.3 мм, без макетного поля 23.4 x 12.3 мм (для уменьшения размеров макетное поле можно отрезать). Толщина платы вместе с монтажом 11.5 мм (определяется самым высоким элементом на плате - ISP коннектором, он выступает над поверхностью TOP платы на 9 мм). На плате есть необходимый минимум для макетирования и отладки - разведено макетное поле и разъем ISP для программирования микроконтроллера ATtiny45. Плата спроектирована таким образом, что по окончании разработки ненужные части платы (USB-коннектор, коннектор ISP, и даже макетное поле) можно обрезать, уменьшив тем самым габариты устройства. Хороший пример использования макетной платы AVR-USB-TINY45 - USB-устройство, которое работает как USB-HID клавиатура и посылает время от времени случайные нажатия. Незаметно вставив такое устройство в порт USB, можно неплохо над кем-нибудь подшутить (если что, я этого Вам не советовал =). Код и схема взяты из проекта [5], идея [6]. Исходный код и прошивку, слегка подправленную мной (я увеличил скорость выдачи случайных нажатий) можно также скачать по ссылке [7]. [Дополнительные возможности портов ввода-вывода ATtiny85 (ATtiny45)] Все порты микроконтроллера ATtiny85 могут работать не только как простые ножки ввода вывода GPIO. Они также могут нести дополнительные функции, привязанные к богатой внутренней аппаратуре ядра AVR. В таблице ниже представлено краткое описание этих функций (полное описание см. в даташите на микроконтроллер ATtiny85).
Примечания: (1) Если задействовано подключение к USB, то порты PB0 и PB2 использовать нельзя, потому что они обслуживают сигналы USB D- и D+ соответственно. Сигналы совпадения таймера OC0A, ~OC1A, OC0B, OC1A, ~OC1B, OC1B могут использоваться для генерации постоянного аналогового уровня и звуковых сигналов с помощью ШИМ (PWM). Сигнал совпадения выдается, когда содержимое счетчика таймера совпало с предопределенным заранее значением. Подробнее см. статью - "ATmega16 - PWM с помощью T/C0, T/C1, T/C2" и даташит на ATtiny85. [Обработка USB bus reset] Часто пользователи спрашивают - "почему после перезагрузки компьютера, если макетная плата была воткнута, то операционная система её не видит?". Это происходит потому, что со стороны платы был некорректно обработан спецсигнал от хоста USB - так называемый сигнал USB bus reset, сигнал сброса по шине USB. Он нужен для того, чтобы заново провести энумерацию всех устройств на шине USB. Устройство USB должно обнаружить этот сигнал, и правильно отвечать на него - временно отключившись от шины USB. Чтобы такое отключение можно было осуществить программно (библиотека V-USB это поддерживает), микроконтроллер должен иметь возможность отключать нагрузочный резистор от +питания (для AVR-USB-TINY45 это верхний конец резистора R1). Николай Москалюк предложил сделать соответствующую доработку схемы. К сожалению, для этого придется задействовать драгоценный порт микроконтроллера ATtiny85. Дословно цитирую письмо Николая: Высылаю схему моей модификации (в прикрепленном файле). Нужно всего-то отсоединить R1 от VCC и подключить его ко второй ножке контроллера (PB3). Таким образом, резистор не всегда будет сидеть на плюсе, а только тогда, когда укажет драйвер AVR-USB. Для этого в нем реализованы все необходимые функции, которые, кстати, выполняются автоматически, ничего в твоей прошивке (кроме двух параметров файла usbconfig.h) менять не надо. В конфигурационном файле usbconfig.h обязательно нужно указать два параметра: #define USB_CFG_PULLUP_IOPORTNAME B
#define USB_CFG_PULLUP_BIT 3
Т.е. мы всего лишь указываем драйверу какая ножка контроллера будет управлять резистором R1. [Ссылки] 1. Projects Based on V-USB site:obdev.at - проекты, основанные на библиотеке V-USB. Здесь можно найти много интересного, связанного с разработкой USB-устройств на основе библиотеки AVR-USB. |