Прошивка микроконтроллеров Atmega без arduino через USBasp:
Существуют простые и дешевые программаторы для прошивки м/к Atmega ,которые поддерживает среда Arduino IDE- необходимо просто выбрать соотвествующий программатор USBasp в настройках Arduino IDE.USBasp необходим,если вы просто прошиваете микроконтроллеры Amtel.Программатор основан на м/к Atmega 8 и использует програмный USB.
Цена такого программатора на ebay.com около 3$.Он имеет выход питания 5v/3.3 v(переключается перемычкой JP1) ,а так же соотвествующие выводы SCK,MISO,MOSI,RESET для подключению напрямую к микроконтроллеру.На картинке показаны выводы на самом программаторе - на разъеме шлейфа соответственно будет зеркально относительно ключа (у 5 вывода),не забывайте об этом.
Для работы в операционной системе Windows необходимы драйвера.Linux же не требует их.
Данный программатор легко превратить в друое устройство,например в I2C-USB переходник , USB контроллер с GIO или контроллер чтения термодатчиков DS18B20.
Программирование через USBasp в Arduino IDE
Для программирования микроконтроллеров,подключенных через USBasp в Arduino IDE необходимо выбрать его в программе согласно скриншоту.
Программирование осуществляется через меню файл,выбрав пункт
"Загрузить с помощью программатора".Не забываем выбрать микроконтроллер в меню "сервис" ->"плата".
Программирование через USBasp утилитой avrdude
Утилиту avrdude можно найти в папке /hardware/tools/ в дистрибутиве Arduino IDE или скачать в интернете.
Для того,чтобы залить прошивку в микроконтроллер необходимо выполнить команду:
avrdude -c usbasp -p m8 -U flash:w:имя_файла.hex . где -p m8 - это модель микроконтроллера.В данном случае atmega 8.
Дополнительно так же можно установить фьюзы дописав :-U hfuse:w:0xХХ:m -U lfuse:w:0xХХ:m .Где ХХ - соотвествующие фьюзы микроконтроллера ,необходимые для конкретной прошивки.
Обычно прошивку можно осуществить через команду make flash ,если Вы имеете исходный код прошивки и установленную WinAVR.
В других средах программирования выбор программатора осуществляется через соответсвующее меню программы.
Обратите внимание,
Что на некоторых микроконтроллерах с завода,например на серии Attiny включен по умолчанию фьюз CKDIV8 ,который устанавливает делитель на 8 и из-за этого USBasp не программирует такие микроконтроллеры пока не установить перемычку JP3 на USBasp.Для настройки фьюзов воспользуйтесь калькулятором фьюзов чтобы выставить нужные настройки , в том числе выключить данный делитель.Фьюзы прошиваются через avrdude командой avrdude -c usbasp -p имя_м/к -U lfuse:w:0xХХ:m .
Пример для установки фьюзов attiny85 для внутреннего генератора 8мгц с выключенным делителем на 8 :
avrdude -c attiny85 usbasp -p -U lfuse:w:0x62:m
При программировании через Arduino IDE можно установить нужные фьюзы выбрав в меню "записать загрузчик",выбрав перед этим необходимый микроконтроллер.
"Допиливание" программатора.
или исправляем ошибку: avrdude: warning: cannot set sck period. please check for usbasp firmware update
При программировании некоторых микроконтроллеров(например у серии ATtiny) возможны не фатальные ошибки.Хотя и программирование микроконтроллера происходит,но обновить прошивку микроконтроллера на программаторе рекомендуется.
Что для этого нужно ? Вы можете использовать плату arduino как программатор или использовать другой USBasp программатор.Для программирования используются те же выводы SCK,MISO,MOSI,RESET.
Порядок действий для прошивки через arduino:
1. Подключаем выводы SCK,MISO,MOSI,RESET к Arduino согласно инструкции.
2. Установавливаем перемычку self programming (на фото обозначена как JP2),обычно место для перемычки не распаяно.
3. Качаем последнюю версию прошивки usbasp.2011-05-28 тут и кидаем в папку путь_к_папке_ардуины_/hardware/tools/.
4. Перейдем в консоль (cmd или bash) Вашей операционной системы в папку через команду cd путь_к_папке_ардуины_/hardware/tools/ и далее вводим команды для Windows,не забывем указать верный порт,на котором подключена Arduina:
avrdude -C avrdude.conf -c avrisp -P COM1 -b 19200 -p m8 -v
Программа выдаст сообщение ,где покажет состояние фьюзов и другую информацию:
Если Вы видите такие же сообщения- значит подключено все правельно и можно прошивать командой:
avrdude -C avrdude.conf -c avrisp -P COM1 -b 19200 -p m8 -U flash:w:usbavr.hex -U lfuse:w:0xef:m -U hfuse:w:0xc9:m
Успешная прошивка:
Для прошивки из Linux все аналогично, заменяется часть строки:
./avrdude -C avrdude.conf -c avrisp -P /dev/ttyUSB0 ...
Порядок действий для прошивки через другую USBasp:
Прошивка аналогична прошивке обычного микроконтроллера: подключаем выводы SCK,MISO,MOSI,RESET один в один шлейфом идущим в комплекте с программатором.Не забываем про перемычку JP2.
Указываем опцию -c usbasp вместо -c avrisp