Главная arrow Программирование arrow AVR arrow AVR-USB-MEGA16: USB bootloader USBasp для микроконтроллера ATmega32 Monday, September 25 2023  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
map.gif карта сайта
нашли опечатку?

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

Поделиться:

AVR-USB-MEGA16: USB bootloader USBasp для микроконтроллера ATmega32 Версия для печати
Написал microsin   
02.10.2010

В статье описывается USB bootloader USBasp, который хорошо подходит для ATmega32. Он удобен тем, что эмулирует поведение популярного программатора USBasp, и для него подходят программы под этот программатор.

Этот бутлоадер я записываю во все макетные платы AVR-USB-MEGA16, оснащенные микроконтроллерами ATmega32, благодаря чему пользователь получает возможность заливать свою программу прямо через подключение по USB, и не нужен никакой дополнительный программатор. Внимание - USBasp bootloader не умеет работать с фьюзами (fuses) и EEPROM, несмотря на то, что в сервисных программах, обслуживающих USBasp (например, Khazama AVR Programmer) такая возможность имеется.

Значения фьюзов по умолчанию, которые прошиты в платы с usbasploader - LOW FUSE BYTE: 0xCF, HIGH FUSE BYTE: 0x98, LOCKOPT BYTE: 0xEF

[Как встроить в Ваш проект usbasploader]

Процесс подробно описан в статье на Хабре, статья называется "USB bootloader для микроконтроллеров AVR" и находится в разделе "DIY или Сделай Сам". Воспользуйтесь поиском и легко её найдете. Исходники можете скачать по ссылке в этой статье (см. Ссылки [4]). Само собой, загрузчик USBasp легко встраивается и в другие чипы ATmega, объем секциии bootloader у которых равен или превышает 4096 байт (например, в ATmega128).

[Как работать с загрузчиком usbasploader на примере макетки AVR-USB-MEGA16 и Khazama AVR Programmer]

Для работы с бутлоадером USBasp подходит множество программ (см. Ссылки [3]), но мне больше всего по душе программа Khazama AVR Programmer.

Внимание! При первом подключении платы с бутлоадером к компьютеру по USB операционная система Windows запросит драйвер программатора USBasp (для Linux драйвер не нужен). Драйвер можно взять в архиве по ссылке [4] (папка USBasp архива), или скачать с сайта автора программатора USBasp, см. ссылку [6].

Итак, процесс по шагам - как залить свою прошивку firmware (пользовательскую программу) в макетную плату AVR-USB-MEGA16, используя бутлоадер USBasp. 

1. Поставьте перемычку между ножками 4 и 6 коннектора U1 ISP.
image

2. Подключите макетную плату к компьютеру по USB. На макетке загорится красный светодиод, и в системе Windows обнаружится программатор USBasp.

3. Запустите программу Khazama AVR Programmer. В настройках уберите опцию очистки памяти кристалла (Command -> Program Options -> снимите галку Erase Chip). Выберите из выпадающего списка Ваш чип. Загрузите hex-файл прошивки (через меню File -> Load FLASH file to Buffer). Нажмите большую кнопку Auto Program, запускающую программирование. Программируется кристалл очень быстро, за несколько секунд.
image
После окончания программирования красный светодиод погаснет, и начнет выполняться Ваша программа с адреса 0 (которую Вы только что записали).

4. Снимите перемычку между ножками 4 и 6 коннектора U1 ISP.
image  

Очень похоже работает другой бутлоадер - BootloadHID (см. Ссылки [5]). Отличается тем, что просто нужна другая сервисная программа на компьютере, но зато легче встраивается в младшие чипы (начиная с ATmega8), т. к. снижены требования к размеру bootloader-секции.

[Устранение проблем

Если устройство USB бутлоадера нормально определяестя в системе Windows (видно в Диспетчере Устройтв как устройство USBasp), но  отказывается работать с USB устройством USBasp (could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc), то скорее всего у Вас не установлена библиотека libusb или не установлен драйвер USBasp.

khazama-err-not-find-USBasp.PNG 

arduinoIDE-err-not-find-USBasp.PNG 

Драйвер USBasp можно скачать по ссылке [6], ищите заголовок Drivers и ссылку на файл наподобие usbasp-windriver.2011-05-28.zip. Библиотеку libusb можно скачать по ссылке [7]. Качайте и устанавливайте самый свежий релиз библиотеки libusb.

[Ссылки]

1. Загрузчики (bootloader) для микроконтроллеров AVR.
2. Домашняя страничка usbasploader.
3. Программы для работы с программатором USBasp — AVRDUDE, BASCOM-AVR, Khazama AVR Programmer, eXtreme Burner-AVR.
4. Мой вариант usbasploader, заточенный под макетную плату AVR-USB-MEGA16 с микроконтроллером ATmega32 (проект для AVRStudio с исходниками и скомпилированными вариантами для кварцев 12 МГц, 16 МГц). Именно его я и записываю в макетные платы AVR-USB-MEGA16 с микроконтроллером ATmega32.
5. AVR-USB-MEGA16: USB bootloader BootloadHID для микроконтроллера ATmega16.
6. Сайт программатора USBasp (там можно скачать драйвер для USBasp под операционную систему Windows).
7Ссылки на закачку релизов библиотеки libusb.

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

Комментарии  

  1. #3 tim
    2011-07-0200:08:44 про драйвер в линуксах не знал… скажите во всех линуксах поддерживается бутлоадер usbasp?
  2. #2 Дядя Вова
    2011-04-0311:01:32 С перемычкой 4-6 устройство видится как USBasp (pid_05DC)
    Шью Khazama'ой файл main.hex из примеров. Результат:
    1) светодиод гаснет, что нормально
    2) системное сообщение "USB устройство не опознано"
    3) Error … sending controll message failed…
    Присоединенное к системе устройство не работает. и > FLASH verify MISMACH. После снятия перемычки и переподключения устройство не опознается.

    microsin: устройство у Вас не опознается потому, что Вы записываете в память чипа нерабочую прошивку (скорее всего не для той частоты кварца, которая у Вас). Если хотите, чтобы я отвечал на другие Ваши вопросы, то задавайте их не сюда, а в почту.
  3. #1 Александр
    2010-10-0914:48:37 При подключении к компу с перемкнутой 4 и 6 ножкой определяется как устройство USBasp, ищет драйвер и не находит. Скачал драйвер отсюда http://easyelectronics.ru/files/AVR/USBASP.ZIP. Установил. Но khazama AVR Programmer не читает фьюзы. То есть как бы начинает читать - и вылезает ошибка. Разная. То target doesn't answer. То устройство не опознаёт команду. То ещё чего… Светодиод гаснет. С чем это связано?

    microsin: а кто Вам обещал чтение фьюзов?.. Статью, наверное, по диагонали читали?

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

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

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

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

Top of Page
 
microsin © 2023