• I






      
           

Научно-популярный образовательный ресурс для юных и начинающих радиолюбителей - Popular science educational resource for young and novice hams

Основы электричества, учебные материалы и опыт профессионалов - Basics of electricity, educational materials and professional experience

КОНКУРС
language
 
Поиск junradio

Радиодетали
ОК
Сервисы

Stock Images
Покупка - продажа
Фото и изображений


 
Выгодный обмен
электронных валют

Друзья JR



JUNIOR RADIO





USB для микроконтроллеров Atmel ATtiny. Часть1



Статьи публикуются по мере поступления. Для упорядоченного тематического
поиска воспользуйтесь блоком  "Карта сайта"







USBtiny - это программная реализация низкоскоростного протокола USB для микроконтроллеров Atmel ATtiny. Конечно, он также будет работать на серии ATmega. Программное обеспечение написано для AVR с тактовой частотой 12 МГц. На этой частоте каждый бит на шине USB занимает 8 тактов, и с большим количеством обмана можно декодировать и кодировать сигналы USB по программному обеспечению. Для драйвера USB требуется примерно от 1250 до 1350 байтов флэш-памяти (за исключением необязательных идентификационных строк), в зависимости от конфигурации и версии компилятора, и 46 байт ОЗУ (исключая пространство стека). Интерфейс C состоит из 3 - 5 функций, в зависимости от конфигурации. USB использует два дифференциальных сигнала данных, D + и D-, которые обычно дополняют друг друга. Однако конец пакета сигнализируется путем вытягивания обоих сигналов на низком уровне. Данные не передаются непосредственно на шину USB, сначала кодируется NRZI. Это означает, что бит «0» кодируется как изменение бита, а бит «1» кодируется как изменение бита. После 6 бит «1» происходит «набивка бит», чтобы принудительно изменить сигнальные линии USB. Программное обеспечение прерывается: запуск USB-пакета вызывает прерывание. Обработчик прерываний синхронизируется с байтом синхронизации, удаляет кодировку NRZI и заполнение битов и сохраняет упакованные в один из двух буферов RAM. Используются два буфера, так что следующий пакет может быть принят, пока текущий обрабатывается. В зависимости от типа пакета ответ упакованный может быть немедленно отправлен в обработчик прерываний. Остальная часть драйвера USB написана на C. Функция usb_poll () должна периодически вызываться для опроса входящих пакетов. В настоящий момент поддерживается только одна конечная точка. Стандартные запросы управления напрямую обрабатываются драйвером USB. Другие запросы SETUP пересылаются в пользовательскую функцию usb_setup (). Поддержка больших ответов и запросов управления OUT необязательна, см. Usbtiny.h. Чтобы использовать драйвер USB в своем приложении, вам необходимо настроить макросы в usbtiny.h и предоставить функцию usb_setup () для обработки пакетов управления SETUP. При желании вам необходимо предоставить функции usb_in () и usb_out (). Ваш код должен вызывать функцию инициализации usb_init () при запуске программы и usb_poll () через регулярные промежутки времени. Тип устройства AVR и команда загрузки должны быть настроены в верхней части Makefile. Код IgorPlugUSB и более ранние версии кода obdev имели ограничение на то, что сигнал D + должен быть подключен к бит 0 порта ввода-вывода, в дополнение к входу прерывания. Это означает, что для таких устройств, как ATtiny2313, для управления шиной USB требуется три контакта ввода / вывода. Одна из причин, по которой я написал USBtiny, заключалась в том, чтобы иметь больше свободы, по которой контакты ввода / вывода используются для сигналов D + и D-USB. Единственным ограничением является то, что оба сигнала должны находиться на одном и том же порту ввода-вывода. Когда вы выбираете контакт для D +, который также может генерировать прерывание, требуется только два вывода ввода / вывода. Более поздние версии кода obdev также удалили это ограничение. Прерывание смены знака намеренно не используется, поэтому оно остается доступным для других целей. Другим усовершенствованием является опциональный более быстрый расчет CRC, который использует таблицу поиска для вычисления 4 бит за раз. Помимо этих преимуществ, я считаю, что мой код более читабельный и более простой в настройке, но это впечатление может быть вызвано легкой формой синдрома NIH, от которого я страдаю. В любом случае, я много узнал о USB-протоколе, и писать обработчик прерывания было приятной загадкой. Проект USBtinyISP является встроенным программным обеспечением AVR на базе USBtiny. AVR должен быть синхронизирован с внешним кристаллом 12 МГц. Для ATtiny2313 это означает, что байт с низким предохранителем должен быть перепрограммирован, например, до 0xef. Я также рекомендую включить схему BOD, когда она доступна. Для ATtiny2313 это означает, что программирование байта с высоким предохранителем до 0xdb (уровень BOD равен 2,7 В). Сигналы данных USB задаются при напряжении 3,3 В. Самый простой способ добиться этого - использовать источник питания 3,3 В для AVR. Однако вождение USB-сигналов с напряжением 5 В, по-видимому, также работает в большинстве случаев, что может быть более удобным, когда вам необходимо подключиться к периферийным устройствам 5 В. Согласно спецификации USB, устройство не должно быть повреждено сигналами 5 В. Я запускаю AVR и USB-шину на 5V и до сих пор не сталкивался с какими-либо проблемами, но у меня есть некоторые сообщения о компьютерах и ноутбуках, которые не работают с сигналами 5V. В этом случае вы можете уменьшить напряжение сигналов данных USB, добавив стабилитроны 3V6 от сигналов данных к земле. Мое первое приложение USBtiny - это конвертер USB в SPI (последовательный интерфейс). Сигналы SPI подключаются к гнезду DB-25, так что преобразователь может быть подключен к моему программному программисту параллельного порта AVR. Поскольку наиболее важные сигналы параллельного порта подключены к разъему DB-25, для управления другими устройствами параллельного порта можно использовать одно и то же оборудование (с другой прошивкой). Именно поэтому я подключил сигнал ACK к выходу INT1. Ниже приведена схема интерфейса USB для моего программиста с параллельным портом.

 

Схема spi

 

Мой программатор по параллельному порту AVR похож на bsd от Брайана Дина.

 







Просмотров: 1017 | Добавил: Chinas | Рейтинг: 0.0/0








Необходимо добавить материалы...
Результат опроса Результаты Все опросы нашего сайта Архив опросов
Всего голосовало: 372



          

Радио для всех© 2024