Что такое ATmega8U2 и чем он отличается от других микроконтроллеров AVR. Как правильно начать работу с ATmega8U2. Какие особенности имеет этот USB-микроконтроллер. На что обратить внимание при программировании ATmega8U2.
Обзор микроконтроллера ATmega8U2
ATmega8U2 — это 8-битный микроконтроллер семейства AVR от компании Microchip (ранее Atmel), обладающий встроенным USB-интерфейсом. Он относится к серии USB-микроконтроллеров AVR, которые позволяют легко создавать USB-устройства без дополнительных компонентов.
Основные характеристики ATmega8U2:
- 8 КБ флеш-памяти программ
- 512 байт EEPROM
- 512 байт SRAM
- USB 2.0 Full-speed контроллер
- 22 программируемых линии ввода-вывода
- Максимальная тактовая частота 16 МГц
- Напряжение питания 2.7-5.5В
- Корпуса QFN32 и TQFP32
Чем ATmega8U2 отличается от других микроконтроллеров AVR?
Главное отличие ATmega8U2 от обычных микроконтроллеров AVR — наличие встроенного USB-интерфейса. Это позволяет:
- Создавать USB-устройства без дополнительных микросхем
- Программировать микроконтроллер непосредственно через USB
- Обмениваться данными с компьютером по USB
- Эмулировать различные USB-устройства (клавиатуру, мышь и т.д.)
При этом ATmega8U2 имеет меньший объем памяти по сравнению с другими USB-микроконтроллерами AVR. Например, ATmega32U2 имеет 32 КБ флеш-памяти, а ATmega32U4 — 32 КБ флеш-памяти и больше периферийных модулей.
Особенности программирования ATmega8U2
При программировании ATmega8U2 нужно учитывать следующие особенности:
- Требуется загрузить USB-загрузчик перед первым использованием
- Необходимо правильно настроить фьюз-биты
- Для программирования через USB нужен специальный драйвер
- Часть флеш-памяти занята USB-загрузчиком
Загрузка USB-загрузчика в ATmega8U2
В отличие от более старших моделей, ATmega8U2 поставляется с пустой флеш-памятью. Поэтому первым делом в него нужно загрузить USB-загрузчик. Это можно сделать несколькими способами:
- С помощью программатора ICSP или JTAG
- Через UART, если на чипе уже есть UART-загрузчик
- Купить чип с предустановленным загрузчиком
Наиболее универсальный способ — использовать программатор. После загрузки USB-загрузчика микроконтроллер сможет программироваться через USB.
Типы USB-загрузчиков для ATmega8U2
Существует три основных типа USB-загрузчиков для микроконтроллеров AVR:
- DFU (Device Firmware Upgrade) — стандартный загрузчик Atmel
- CDC (Communications Device Class) — эмулирует виртуальный COM-порт
- HID (Human Interface Device) — не требует драйверов
Каждый тип имеет свои плюсы и минусы:
- DFU поддерживается официальным ПО Atmel FLIP, но требует драйверов
- CDC можно программировать стандартными утилитами через виртуальный COM-порт
- HID не требует драйверов, но сложнее в использовании
Для большинства применений оптимальным выбором является CDC-загрузчик.
Настройка фьюз-битов ATmega8U2
Правильная настройка фьюз-битов критически важна для работы ATmega8U2. Фьюз-биты определяют:
- Источник тактирования (внутренний/внешний генератор)
- Частоту тактирования
- Размер загрузочной секции
- Защиту памяти
Для работы USB-загрузчика нужно установить следующие значения фьюз-битов:
- Низкие фьюзы: 0xEF (внешний кварц 8-16 МГц)
- Высокие фьюзы: 0xD9 (загрузочная секция 2048 байт)
- Расширенные фьюзы: 0xF4 (BOD отключен)
Неправильная настройка фьюз-битов может привести к неработоспособности микроконтроллера.
Программирование ATmega8U2 через USB
После загрузки USB-загрузчика и настройки фьюз-битов ATmega8U2 можно программировать через USB. Для этого потребуется:
- Установить драйвер виртуального COM-порта (для CDC-загрузчика)
- Подключить микроконтроллер к компьютеру по USB
- Перевести микроконтроллер в режим загрузчика (замкнуть RST на GND)
- Использовать утилиту avrdude для загрузки прошивки
Пример команды для прошивки через avrdude:
avrdude -p usb82 -c avr109 -P COM7 -b 19200 -U flash:w:firmware.hex
Здесь:
- usb82 — идентификатор чипа (ATmega8U2 не поддерживается напрямую)
- avr109 — протокол загрузчика
- COM7 — номер виртуального COM-порта
- firmware.hex — файл с прошивкой
Использование ATmega8U2 в проектах
ATmega8U2 отлично подходит для создания различных USB-устройств, например:
- USB-конвертеров (UART-USB, SPI-USB и т.д.)
- Программаторов для других микроконтроллеров
- USB HID устройств (клавиатуры, мыши, джойстики)
- Аудио-устройств (USB-звуковые карты)
- Устройств сбора данных с датчиков
Встроенный USB-интерфейс позволяет легко обмениваться данными с компьютером и эмулировать различные устройства.
Преимущества и недостатки ATmega8U2
Основные преимущества ATmega8U2:
- Встроенный USB-интерфейс без дополнительных компонентов
- Низкая стоимость
- Программирование через USB
- Совместимость с экосистемой AVR
Недостатки:
- Небольшой объем памяти (8 КБ)
- Сложность первоначальной настройки
- Ограниченное количество периферийных модулей
Для многих проектов преимущества перевешивают недостатки, делая ATmega8U2 отличным выбором для USB-устройств.
Заключение
ATmega8U2 — это мощный и гибкий USB-микроконтроллер, который позволяет легко создавать различные USB-устройства. Несмотря на некоторые сложности с начальной настройкой, он обладает отличным соотношением цена/возможности для многих применений. При правильном подходе ATmega8U2 может стать отличной основой для ваших USB-проектов.
Микроконтроллеры Atmel
Сортировка
По умолчаниюНазвание (А — Я)Название (Я — А)Цена (низкая > высокая)Цена (высокая > низкая)Модель (А — Я)Модель (Я — А)
Показать
25405075100
Наименование | Корпус | Розн | Опт | Характеристика | Инфо | Купить |
AT32UC3A1256-AUT | TQFP100 | 1850.00р. | 1524р. | 32-bit MCU | ||
AT42QT1010-TSHR | SOT23-6 | 390.00р. | 305р. | контроллер сенсорной клавиатуры, мар-ка 1010 | ||
AT42QT1011-TSHR | SOT23-6 | 220.00р. | 169р. | контроллер сенсорной клавиатуры | ||
AT42QT1012-TSHR | SOT23-6 | 290.00р. | 226р. | контроллер сенсорной клавиатуры | ||
AT42QT1111-AU | TQFP32 | 510. 00р. | 405р. | контроллер сенсорной клавиатуры | ||
AT89C2051-24PU | DIP20 | 210.00р. | 166р. | MCU 2Kb FLASH, 128b RAM, AT89C2051-24PI | ||
AT89C2051-24SU | SO20 | 0.00р. | 132р. | MCU 2Kb FLASH, 128b RAM, = = AT89C2051-24SI AT89C2051-24SC AT89C2051-12SU AT89C2051-12SI AT89C2051-12SC | ||
AT89C4051-24PU | DIP20 | 170.00р. | 133р. | MCU 4Kb FLASH, 128b RAM | ||
AT89C4051-24SU | SO20 | 350.00р. | 273р. | MCU 4Kb FLASH, 128b RAM | ||
AT89C51-20PI | DIP40 | 360.00р. | 282р. | MCU 4Kb FLASH, 128b RAM | ||
AT89C51-24JI | PLCC44 | 320. 00р. | 252р. | 4Kb FLASH, 128b RAM | ||
AT89C51-24PI | DIP40 | 290.00р. | 227р. | MCU 4Kb FLASH, 128b RAM | ||
AT89C5131-S3SIL | PLCC52 | 850.00р. | 679р. | 8-bit flash MCU with full speed USB device, memory 32Kb, 2.7…5.5V | ||
AT89C5131A-RDTUM | TQFP64 | 2150.00р. | 1781р. | 8-bit flash MCU with full speed USB device, memory 32Kb, supply voltage 2.7…5.5V | ||
AT89C51ED2-RLTUM | TQFP44 | 1250.00р. | 1036р. | Flash: 64K, RAM: 2K, EEPROM: 2K, UART: 1 | ||
AT89C51ED2-SLSUM | PLCC44 | 1350.00р. | 1101р. | MCU 8051, FLASH 64K | ||
AT89C51RC-24JU | PLCC44 | 720. 00р. | 574р. | 32Kb FLASH, 512b RAM | ||
AT89C51RC-24PU | DIP40 | 960.00р. | 766р. | MCU 32Kb FLASH, 512b RAM, AT89C51RC-24PI | ||
AT89C52-20PC | DIP40 | 280.00р. | 218р. | 8Kb FLASH, 256b RAM | ||
AT89C52-24JI | PLCC44 | 400.00р. | 317р. | 8Kb FLASH, 256b RAM | ||
AT89C52-24PI | DIP40 | 300.00р. | 238р. | MCU: 8Kb FLASH, 256b RAM, AT89C52-24PU | ||
AT89C55WD-24JI | PLCC44 | 420.00р. | 331р. | MCU 20Kb FLASH, 256b RAM, = AT89C55WD-24JU AT89C55WD-24JC | ||
AT89C55WD-24PU | DIP40 | 720.00р. | 573р. | MCU 20Kb FLASH, 256b RAM | ||
AT89LV52-12PI | DIP40 | 420. 00р. | 331р. | 8-Bit MCU with 8K Bytes Flash | ||
AT89S2051-24PU | DIP20 | 420.00р. | 335р. | MCU 2Kb FLASH, 256b RAM, ISP | ||
AT89S2051-24SU | SO20 | 290.00р. | 226р. | MCU 2Kb FLASH, 256b RAM, ISP | ||
AT89S4051-24PU | DIP20 | 390.00р. | 305р. | 4Kb FLASH, 256b RAM, ISP | ||
AT89S4051-24SU | SO20 | 380.00р. | 298р. | 4Kb FLASH, 256b RAM, ISP | ||
AT89S51-24JI | PLCC44 | 230.00р. | 176р. | 4Kb FLASH, 128b RAM, ISP | ||
AT89S51-24PI | DIP40 | 260.00р. | 204р. | MCU 4Kb FLASH, 128b RAM, ISP | ||
AT89S52-24JI (AT89S52-24JU) | PLCC44 | 280. 00р. | 220р. | 8Kb FLASH, 256b RAM, ISP | ||
AT89S52-24PU | DIP40 | 420.00р. | 331р. | MCU 8Kb FLASH, 256b RAM, ISP, AT89S52-24PI | ||
AT89S53-24JC used | PLCC44 | 1450.00р. | 1203р. | MCU 12Kb FLASH, 256b RAM, ISP | ||
AT89S53-24PI | DIP40 | 1250.00р. | 1013р. | MCU 12Kb FLASH, 256b RAM, ISP, = AT89S53-24PU | ||
AT89S8252-24AI | TQFP44 | 1250.00р. | 1032р. | MCU 8Kb FLASH, 256b RAM, 2Kb EEPROM, ISP | ||
AT89S8252-24JI | PLCC44 | 1240.00р. | 987р. | MCU 8Kb FLASH, 256b RAM, 2Kb EEPROM, ISP | ||
AT89S8252-24PI | DIP40 | 1650. 00р. | 1365р. | MCU 8Kb FLASH, 256b RAM, 2Kb EEPROM, ISP, AT89S8252-24PU | ||
AT89S8252-24PI used | DIP40 | 1350.00р. | 1106р. | MCU 8Kb FLASH, 256b RAM, 2Kb EEPROM, ISP | ||
AT89S8253-24AU | TQFP44 | 0.00р. | 544р. | MCU 12Kb FLASH, 256b RAM, 2Kb EEPROM, ISP, = AT89S8253-24AI AT89S8253-24AC | ||
AT89S8253-24JU | PLCC44 | 0.00р. | 537р. | 12Kb FLASH, 256b RAM, 2Kb EEPROM, ISP, = AT89S8253-24JI AT89S8253-24JC |
Показано с 1 по 40 из 221 (всего 6 страниц)
ATMEGA8U2-MU MICROCHIP Встроенные процессоры и контроллеры
The high-performance, low-power Atmel 8-bit AVR RISC-based microcontroller combines 8KB ISP flash memory with read-while-write capabilities, 512B EEPROM, 512-Byte SRAM, 22 general purpose I/O lines, 32 general purpose working registers, two flexible timer/counters with compare modes and PWM, USART, programmable watchdog timer with internal oscillator, SPI serial port, debugWIRE interface for on-chip debugging and programming, and five software selectable power saving modes. The device operates betweeen 2.7-5.5 volts.
By executing powerful instructions in a single clock cycle, the device achieves throughputs approaching 1 MIPS per MHz, balancing power consumption and processing speed.
Особенность
• High Performance, Low Power AVR® 8-Bit Microcontroller
• Advanced RISC Architecture
– 125 Powerful Instructions – Most Single Clock Cycle Execution
– 32 x 8 General Purpose Working Registers
– Fully Static Operation
– Up to 16 MIPS Throughput at 16 MHz
• Non-volatile Program and Data Memories
– 8K/16K/32K Bytes of In-System Self-Programmable Flash
– 512/512/1024 EEPROM
– 512/512/1024 Internal SRAM
– Write/Erase Cycles: 10,000 Flash/ 100,000 EEPROM
– Data retention: 20 years at 85C/ 100 years at 25OC(1)
– Optional Boot Code Section with Independent Lock Bits
In-System Programming by on-chip Boot Program hardware-activated after reset
True Read-While-Write Operation
– Programming Lock for Software Security
• USB 2. 0 Full-speed Device Module with Interrupt on Transfer Completion
– Complies fully with Universal Serial Bus Specification REV 2.0
– 48 MHz PLL for Full-speed Bus Operation : data transfer rates at 12 Mbit/s
– Fully independant 176 bytes USB DPRAM for endpoint memory allocation
– Endpoint 0 for Control Transfers: from 8 up to 64-bytes
– 4 Programmable Endpoints:
IN or Out Directions
Bulk, Interrupt and IsochronousTransfers
Programmable maximum packet size from 8 to 64 bytes
Programmable single or double buffer
– Suspend/Resume Interrupts
– Microcontroller reset on USB Bus Reset without detach
– USB Bus Disconnection on Microcontroller Request
• Peripheral
– One 8-bit Timer/Counters with Separate Prescaler and Compare Mode (two 8-bit PWM channels)
– One 16-bit Timer/Counter with Separate Prescaler, Compare and Capture Mode (three 8-bit PWM channels)
– USART with SPI master only mode and hardware flow control (RTS/CTS)
– Master/Slave SPI Serial Interface
– Programmable Watchdog Timer with Separate On-chip Oscillator
– On-chip Analog Comparator
– Interrupt and Wake-up on Pin Change
• On Chip Debug Interface (debugWIRE)
• Special Microcontroller
– Power-On Reset and Programmable Brown-out Detection
– Internal Calibrated Oscillator
– External and Internal Interrupt Sources
– Five Sleep Modes: Idle, Power-save, Power-down, Standby, and Extended Standby
• I/O and Packages
– 22 Programmable I/O Lines
– QFN32 (5x5mm) / TQFP32 packages
• Operating Voltages
– 2. 7 — 5.5V
• Operating temperature
– Industrial (-40°C to +85°C)
• Maximum Frequency
– 8 MHz at 2.7V — Industrial range
– 16 MHz at 4.5V — Industrial range
Note: 1. See “Data Retention” on page 6for details.
Mouser Electronics — Скоро вернусь…
- Сайт временно недоступен. Пожалуйста, свяжитесь с вашим местным отделением для получения немедленной помощи…
- 本网站暂时不可用。如需即时帮助,请联系您当地的分支机构。
- 本網站暫時無法使用,請與當地分公司聯絡尋求即時支援。
- Tato stránka je dočasně nedostupná. Pro okamžitou pomoc se prosím obraťte na svou místní pobočku.
- Le site est temporairement indisponible. Свяжитесь с местным агентством Veuillez для оказания немедленной помощи.
- Die Seite ist momentan nicht verfügbar. Bitte wenden Sie sich für sofortige Unterstützung an Ihre Regionale Niederlassung.
- Momentaneamente il site non è disponibile. Contatta la sede locale для немедленного получения помощи.
- El site estátempormente не подлежит оплате. Póngase en contacto con la officina local para recibir ayuda inmediata.
- Este sitio estátempormente fuera de servicio. Póngase en contacto con su concesionario local para recibir asistencia inmediata.
Область | Телефон | Факс | Электронная почта |
---|---|---|---|
Америка | |||
США (всемирная штаб-квартира) | 1 (800) 346-6873 | 1 (817) 804-3888 | sales@mouser. com |
Мексика | +52 33 3612 7301 | +52 33 3612 7356 | мексиканские продажи@mouser.com |
Азия/Тихий океан | |||
Гонконг, Китай | +852 3756-4700 | +852 3756-4701 | Гонконг@mouser.com |
Шанхай, Китай | +86 (21) 6360-6111 | +86 (21) 6360-0189 | шанхай@mouser. com |
Сингапур | +65 6788-9233 | +65 6542-6916 | сингапур@mouser.com |
Индия | +91 80 41148091/92 | +91 80 41148093 | Индия@mouser.com |
Тайвань | +886 (02) 2799-2096 | +886 (02) 2799-2095 | Тайвань@mouser. com |
Таиланд | +66 2694 2310 | +66 2694 2276 | таиланд@mouser.com |
Европа | |||
Германия (Европейская штаб-квартира) | +49 (0) 8952 04621 10 | +49 (0) 8952 04621 20 | [email protected] |
Великобритания | +44 (0) 1494-467490 | +44 (0) 1494-467499 | uk@mouser. com |
Чешская Республика | +420 517070880 | +420 517070881 | [email protected] |
Франция | +33 5 55 85 79 96 | +33 5 55 85 79 97 | [email protected] |
Израиль | +972 9 7783020 | +972 9 7458885 | israelsales@mouser. com |
Италия | +39 02 575 065 71 | +39 02 575 164 78 | Италия@mouser.com |
Испания | +34 936455263 | +34 936455264 | испания@mouser.com |
Нидерланды | +31 402 6476 57 | +31 402 6476 58 | Нидерланды@mouser. com |
Швеция | +46 8 590 88 715 | +46 8 590 88 746 | Швеция@mouser.com |
Начало работы с ATmega8u2 и другими USB-микроконтроллерами AVR — HELENTRONICA
Введение
Это специализированное семейство или группа USB-микроконтроллеров, которые всеми любимы. Судя по всему, вы можете использовать их как USB-устройства или хосты без каких-либо внешних компонентов. Черт, вы даже можете запрограммировать их через порт USB. И все это без каких-либо внешних компонентов. Один из тех маленьких парней, которые я хотел использовать для моего последнего проекта (печь оплавления), и я решил попробовать самый дешевый, ATmega8u2, в качестве контроллера. Я заказал несколько печатных плат, некоторые компоненты, спаял все вместе и начал программировать. Но маленькому маленькому ATmega8u2 эта идея не понравилась…
USB-микроконтроллеры AVR
Несколько лет назад любимое семейство микроконтроллеров Atmel AVR получило новую ветвь – USB mega. Одними из самых популярных были AT90usb82, ATmega32u2 или ATmega32u4, отличающиеся размером флэш-памяти или количеством периферийных устройств. Они будут иметь полностью встроенные возможности USB, предоставляющие им множество прекрасных возможностей — они могут действовать как USB-устройства на вашем ПК, они могут быть USB-контроллерами для многих периферийных устройств, например. клавиатуры и мышки, принтеры и т.д. Достаточно припаять к ним стандартный разъем USB, провести две линии, и перед вами откроется великолепный мир USB. Лучше всего то, что вы можете запрограммировать их прямо с вашего ПК через USB-кабель. Это верно. Никакого программатора между ними или какой-либо другой аппаратной части (глядя на вас, FT232). Это была магия встроенного USB, которую не многие могли освоить.
Разобраться с именами
Итак, когда они появились, не многие люди могли с ними работать. Протокол USB сложен для понимания и еще сложнее для реализации. Я не уверен, опубликовал ли Atmel какую-либо документацию по началу работы с для или что-нибудь полезное, но это было почти ничего. Я оказался в таком же безвыходном положении несколько дней назад, когда хотел сделать полностью работоспособную USB-схему с ATmega8u2. Я искал любую помощь, как заставить этот проклятый USB работать, я читал все сообщения на форуме AVR Freaks. Я совсем запутался со всеми вещами, упомянутыми видимо без порядка, DFU, CDC, наверное 3-5 определений прошивка и загрузчик , Flip…
Итак, если говорить очень , каждый микроконтроллер в этом мире может быть запрограммирован на то, что нам нужно. Программное обеспечение, которое находится во флэш-памяти микроконтроллера, называется прошивки , и мы помещаем его туда с помощью небольшого устройства, называемого программатором . Программатор использует порт ISP ( внутрисистемного программирования ) или порт JTAG для «помещения кода» во флэш-память. «Помещение кода» во флэш-память микроконтроллера часто называют прошивка flash , прошивка или просто программирование.
USB-микроконтроллеры Atmel привнесли сюда новинку — они позволили записать флешку без программатора, просто подключив USB-кабель от ПК к микроконтроллеру. Для этого нам нужно нечто, называемое загрузчиком . Загрузчик — это часть микропрограммы, которая уже находится в памяти микроконтроллера и может взаимодействовать с вашим ПК при подключении USB-кабеля (или любого программатора). Однако у них есть недостатки; они не могут изменить фьюз-биты AVR (специальные настройки конфигурации, которые управляют работой самого чипа), а небольшая часть FLASH-памяти программ AVR должна быть зарезервирована для хранения прошивки загрузчика и, следовательно, не может использоваться загруженным приложение. Все USB-ресиверы, такие как ATmega32u2 или AT9.0usb162 поставляются с USB-совместимым загрузчиком, уже записанным на них при покупке, поэтому вам не нужно об этом думать. Просто напишите свой код и запрограммируйте Flash. Все они, кроме одного, и, конечно же, мистера Мерфи, который я использовал, ATmega8u2.
ATmega8u2 приходит пустой, голый, девственный, на нем ничего нет. На трудном пути я узнал сложную часть, где вам нужно записать загрузчик во флэш-память, прежде чем вы сможете сделать с ним что-то значимое, и это вы делаете с помощью обычного ISP или JTAG-программатора. Хотя иногда чипы можно купить с уже установленным в памяти загрузчиком, часто приходится делать это самостоятельно.
USB-загрузчики для AVR
Надеюсь, вы уже поняли, что если вы хотите иметь программируемый USB-микроконтроллер без дополнительных компонентов, вам нужно сначала записать на него какой-то загрузчик через ISP или JTAG. Для AVR на основе USB существует несколько вариантов загрузчика, и Lincomatic дает отличный обзор их.
- DFU — Класс обновления прошивки устройства USB
После записи Windows распознает его на вашем ПК как «устройство Atmel». Затем вы можете использовать инструмент Atmel FLIP для записи на него файлов .hex. Вы, вероятно, сталкивались с этим, если когда-либо пытались обновить загрузчик на Arduino UNO. Недостатком является то, что для Windows нет инструмента командной строки. Для Linux доступно приложение-загрузчик хоста с открытым исходным кодом. И вы не можете интегрировать его в Arduino IDE. Загрузчик DFU есть почти во всех готовых USB AVR. Как только вы запишете загрузчик DFU на свой чип AVR, ПК распознает его как USB-устройство Atmel….. которое вы можете запрограммировать с помощью официального инструмента Atmel под названием FLIP.
- CDC — USB-устройство связи класса
После записи Windows распознает его как последовательный порт (так называемый виртуальный порт ) на вашем ПК (загрузчик класса CDC LUFA). Затем вы можете записать на него файлы .hex вашей программы с помощью avrude по протоколу avr109, что также означает, что вы можете интегрироваться в Arduino IDE. Команда, которую я использовал для программирования, была следующей:avrdude -p usb82 -c avr109 -P COM7 -b 19200 -U flash:w:MyHexFile. hex -F
avrdude не имеет ATmega8u2 в своем списке, поэтому я использую AT90usb82, чтобы обмануть его. -F в конце предотвращает проверку подписи, чтобы avrdude не создавал проблем из-за этой несовместимости.
Окно прекрасно распознает загрузчик CDC AVR как COM-порт…… который можно легко запрограммировать с помощью стандартных инструментов, таких как avrdude
- HID — USB-интерфейс устройства класса
Этот я не пробовал, потому что не мог его записать — файл .hex был больше, чем флэш-память ATmega8u2 . Вот что говорят о нем: PRO — безотказно — не требует никаких драйверов устройств — просто подключи и работай, CON — не интегрируется в Arduino IDE
DFU и CDC требуют специальных драйверов для распознавания Windows, в то время как HID, по-видимому, работает как шарм. Найти эти драйверы самостоятельно может быть непросто, но обычно они упакованы в папку редакции загрузчика.
Подводя итог этой части — для работы с USB AVR вам необходимо иметь на нем загрузчик. Загрузчик либо приходит на него при покупке чипа, либо сам прожигается с провайдером. Вы можете выбрать один из трех совместимых с USB загрузчиков: DFU, CDC и HID. Для первых двух вам нужен драйвер, чтобы сделать его узнаваемым на вашем ПК. Затем вы создаете свою программу обычным способом (с помощью Atmel Studio, WinAVR или smtg) и генерируете файл .hex. Используя простое USB-соединение, вы можете записать свою программу на флэш-память AVR с помощью FLIP или avrdude, в зависимости от типа загрузчика (HID, который я еще не пробовал).
После того, как ваша программа будет записана в память чипа, она будет выполняться каждый раз, когда вы включаете питание схемы. Загрузчик больше не будет выполняться, и ваша схема не будет видна на вашем ПК. Если вы недовольны своей программой и хотите перепрограммировать свой чип, вам нужно вернуться к загрузчику — снова сделать его видимым на ПК. Это можно сделать, просто перезагрузив чип — заземлите контакт RST на несколько секунд, и чип вернется к своему загрузчику. Это почти так же, как когда вы открываете систему BIOS на вашем ПК с Windows.
Предохранители, предохранители, от них у меня синяки
Держу пари, ты сразу же побежал к своему рабочему столу, чтобы начать программировать, не так ли? Ну не так быстро! Это то, что я сделал и потерпел неудачу. Я сжег загрузчик CDC, скомпилировал свое приложение и попытался загрузить его… и все потерпело крах. Итак, мне пришлось вернуться к изучению AVR.
Есть еще одна вещь, с которой вам нужно быть осторожным, так называемые фьюз-биты . Биты предохранителей — это части постоянных системных регистров, которые описывают, как микроконтроллер будет взаимодействовать с окружающей средой. Что вам нужно знать, так это шестнадцатеричное значение, которое будет записано в эти регистры. К счастью, почти для всех микросхем AVR есть очень удобный калькулятор номиналов предохранителей. Существует три типа предохранителей: предохранители низкого уровня, определяющие тип часов системы; высокие фьюзы определяют распределение памяти (очень важно при работе с загрузчиками) и расширенные фьюзы, которые определяют обнаружение снижения напряжения (какое падение напряжения питания вызывает внутреннее отключение). Например, когда я использую ATmega8u2 и хочу иметь внешний генератор 8 МГц, неделимый (нижнее значение предохранителя 0xFF), раздел загрузчика во флэш-памяти размером 2048 слов (высокое значение предохранителя 0xD9) и обнаружение отключения при напряжении 2,7 В (расширенное значение предохранителя 0xF6), я должен написать в своем интерфейсе avrdude:
avrdude -p usb82 -c avr109 -P com7 -b 19200 -u -U lfuse:w: 0xff:m -U hfuse:w:0xd9:m -U efuse:w:0xf6:m -F
Если я хочу проверить значение своих фьюз-битов, я просто перехожу в режим терминала avrdude (avrdude -p usb82 — c avr109 -P com7 -b 19200 -F -t) и введите «dump lfuse» и т. д.
Теперь, когда мы говорим о фьюз-битах, есть еще один важный постоянный регистр, о котором нам нужно позаботиться при работе с загрузчиками. . Что я узнал на своем горьком опыте, так это то, что иногда во время программирования загрузчик может хранить код приложения поверх себя! т.е. он запишет код приложения в раздел загрузчика флэш-памяти. Это очень плохо, потому что в следующий раз, когда вы сбросите свой чип, вы не увидите свой загрузчик. Он исчезнет, навсегда. Чтобы предотвратить эту неудачу, есть еще один набор битов, называемый 9.0232 биты блокировки . Они следят за тем, чтобы код приложения не сохранялся в разделе BLS или наоборот. Они могут даже заблокировать программирование всего кода приложения. Подробности об их значении есть в даташите на µC, но обычно, если я хочу предотвратить самопрограммирование BLS, мне нужно записать 0xEF в регистр блокировки:
avrdude -p usb82 -c avr109 -P com7 -b 19200 -u -U lock:w:0xef:m -F
Теперь, когда вы изучили техпаспорт, рассчитали номиналы предохранителей, начинаются новые проблемы. При записи команды сверху возникает какая-то ошибка проверки, что-то вроде:
avrdude: проверка ... avrdude: ошибка проверки, первое несоответствие в байте 0x1000 0xef != 0x3f avrdude: ошибка проверки; несоответствие содержимого
Это вызвало у меня много головной боли.