Главная arrow Программирование arrow AVR arrow Как портировать проекты V-USB с ATmega16 (ATmega32) на ATtiny45 (ATtiny85) Tuesday, March 28 2017  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
map.gif карта сайта
нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Поделиться:

Как портировать проекты V-USB с ATmega16 (ATmega32) на ATtiny45 (ATtiny85) Версия для печати
Написал microsin   
18.09.2011

При портировании проектов V-USB с макетной платы AVR-USB-MEGA16 на макетную плату AVR-USB-TINY45 столкнулся с рядом особенностей реализации кода, которые решил рассмотреть в этой статье. Надеюсь, она поможет в портировании проектов V-USB между микроконтроллерами старших (ATmegaXX) и младших (ATtinyXX) моделей. 

V-USB-porting.png

Портирование проектов между ATmegaXX и ATtinyXX предоставляет много возможностей. Самый большой плюс, на мой взгляд - теперь можно отлаживать программы для ATtiny на кристаллах ATmega, так как отладка в этом случае намного проще - на ATmega можно передавать отладочную информацию через UART, полноценно использовать JTAG и отключать оптимизацию для пошаговой отладки (чего нельзя делать на ATtiny из-за того, что у неё очень мало ножек и памяти). Проектов на библиотеке V-USB для чипов ATmega намного больше, яем для ATtiny. Так что теперь проще делать миниатюрные устройства USB на чипах ATtinyXX и библиотеке V-USB.

Главное отличие, которое имеют ATmega и ATtiny для библиотеки V-USB - это даже не количество ножек и не объем кода FLASH, а тот факт, что ATmega работает с кварцевым резонатором (который может быть любым из ряда частот 12, 15, 16, 16.5, 20 МГц), а ATtiny работает со встроенным подстраиваемым генератором на частоте 16.5 МГц (так как из-за малого количества свободных ножек подключать кварц к ATtiny смысла нет). Поэтому нужно не забыть правильно сконфигурировать фьюзы ATtiny, а также добавить код для поддержки автонастройки тактового генератора. Для наглядности я свел в таблицу отличия проектов на ATmega и ATtiny. 

Настраиваемая опция проекта
ATmega32 (AVR-USB-MEGA16) ATtiny85 (AVR-USB-TINY45)
makefile
DEVICE atmega32 attiny85
F_CPU
12000000
15000000
16500000
20000000
16500000 (кварц не нужен!)
FUSE_L
0xCF
0xD1
FUSE_H 0x98
0xDD
main.c
#include <avr/eeprom.h>
не обязательно
нужно для сохранения байта калибровки частоты тактового генератора
calibrateOscillator()
usbEventResetReady()
не нужно
нужно для подстройки частоты тактового генератора по событиям SOF
код в main() для начальной установки OSCCAL байтом из EEPROM
не нужно
нужно для подстройки частоты тактового генератора по событиям SOF
usbconfig.h
USB_CFG_IOPORTNAME
USB_CFG_DMINUS_BIT
USB_CFG_DPLUS_BIT
назначить по принципиальной схеме назначить по принципиальной схеме
USB_RESET_HOOK(isReset)
hadUsbReset()
не нужно
нужно раскомментировать USB_RESET_HOOK и предоставить код для hadUsbReset()
USB_CFG_HAVE_MEASURE_FRAME_LENGTH
0
1
Закачка прошивок и исходного кода (на примере портирования проекта firmware hid-custom-rq устройства USB HID)
Где взять скомпилированную прошивку firmware тестового примера устройства USB HID (управление светодиодом
макетной платы)
Ссылка [4], см. в архиве папку
examples\hid-custom-rq\firmware-bin
Ссылка [4], см. в архиве папку
examples\hid-custom-rq\firmware-bin
Где взять исходный код тестового примера firmware устройства USB HID (управление светодиодом макетной платы)
Ссылка [4], см. в архиве папку
examples\hid-custom-rq\firmware-mega
Ссылка [4], см. в архиве папки
examples\hid-custom-rq\firmware-tiny
и
examples\hid-custom-rq\firmware-tiny-haunted
Где взять скомпилированное ПО хоста для управления тестовым устройством USB HID (управление светодиодом макетной платы)
Ссылка [4], см. в архиве папки
examples\hid-custom-rq\commandline
и
examples\hid-custom-rq\set-led-gui
Ссылка [4], см. в архиве папки
examples\hid-custom-rq\commandline
и
examples\hid-custom-rq\set-led-gui
Где взять исходный код ПО хоста для управления тестовым устройством USB HID (управление светодиодом макетной платы)
Ссылка [4], см. в архиве папки
examples\hid-custom-rq\commandline
и
examples\hid-custom-rq\set-led-gui
Ссылка [4], см. в архиве папки
examples\hid-custom-rq\commandline
и
examples\hid-custom-rq\set-led-gui

В примере портирования по ссылке [4] устройство USB HID (examples\hid-custom-rq) портировано так, что для разных микроконтроллеров и макетных плат (AVR-USB-MEGA16 и AVR-USB-TINY45) подходит одна и та же управляющая программа ПО хоста (examples\hid-custom-rq\set-led-gui или examples\hid-custom-rq\commandline).

Что еще нужно не забыть, но нет смысла сводить в таблицу:

1. Правильно переназначачить ножки согласно принципиальным схемам (D+ и D-, LED).
2. Правильно назначить сигналы D+ и D-. Помните, что D+ должен приходить на аппаратное прерывание ножки INT0 кристалла!
3. Переназначить VID и PID (usbconfig.h: USB_CFG_VENDOR_ID и USB_CFG_DEVICE_ID).
4. Переназначить USB_CFG_VENDOR_NAME и правильно установить его длину в USB_CFG_VENDOR_NAME_LEN.
5. Переназначить USB_CFG_DEVICE_NAME и правильно установить его длину в USB_CFG_DEVICE_NAME_LEN.
6. Правильно прописать дескриптор USB устройства (main.c: PROGMEM char usbHidReportDescriptor [USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH]) и прописать его длину (usbconfig.h: USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH).

[Ссылки]

1. Макетная плата AVR-USB-TINY45 (микроконтроллер ATtiny45 или ATtiny85).
2. Макетная плата AVR-USB-MEGA16 (микроконтроллер ATmega16 или ATmega32).
3. Разработка устройства USB - как начать работу с библиотеками AVR USB (V-USB) и libusb.
4. Исходный код и готовые прошивки примера портирования устройства USB HID (портирование кода между макетками AVR-USB-MEGA16 и AVR-USB-TINY45).

Последнее обновление ( 19.09.2011 )
 

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:

Защитный код
Обновить

< Пред.   След. >

Top of Page
 
microsin © 2017