Avrdude — опции запуска и примеры использования, графическая оболочка для linux
Содержание:
- Как использовать AVRDUDE под Windows
- Чтение и запись FLASH и EEPROM памяти Ардуино
- Building with avr-gcc
- Работа с памятью (опция -U :r|w|v:[:format])
- Настройка AVRDUDE
- Запись загрузчика в Ардуино
- Building with Arduino IDE
- Using with avrdude
- Примеры использования
- Метки: usbasp
- Драйвера для USBasp
- Программатор USBasp
- History
- Модели микроконтроллеров (опция -p )
Как использовать AVRDUDE под Windows
Сразу оговорюсь, что не стоит набирать команды вручную каждый раз. Для этого человечество придумало пакетные файлы. Создаем файл с расширением .bat и в него пишем команду или несколько команд. Потом просто запускаем наш bat файл.
Пример 1 (Прошиваем Flash)
где:
-p m16 — указывает, что мы прошиваем микроконтроллер ATmega16 -c usbasp — указывает, что мы прошиваем, используя программатор USBasp -e — Выполняет команду ERASE (стирание чипа) перед прошивкой -U flash:w:upload.hex — указывает, что работаем с флеш памятью (flash), пишем (w), файл (upload.hex).
Сразу же возникает вопрос: «Где найти обозначения микроконтроллеров и программаторов?»
Ответ: в файле документации с подробным описанием параметров командой строки: C:/avrdude/avrdude-html/avrdude_4.html
Если такой отсутствует, можно заглянуть в файл конфигурации avrdude.conf
Пример 2 (программируем Фьюзы)
где:
-p m88p — микроконтроллер ATmega88P-c usbasp — указывает, что мы прошиваем, используя программатор USBasp-U lfuse:w:0xE2:m — зашиваем в младший разряд фюзов 0xE2-U hfuse:w:0xDF:m — зашиваем в старший разряд фюзов 0xDF
Для удобства можете воспользоваться калькуляторами Фьюзов:
http://fusecalc.mirmk.net/ (локальная версия калькулятора фьюзов с того же сайта FUSEcalc.zip) http://payalo.at.ua/c_fuse/calc.htmlПодробнее о фьюзах
Пример 3 (программируем EEPROM)
где:
-p m16 — указывает, что мы прошиваем микроконтроллер ATmega16 -c usbasp — указывает, что мы прошиваем, используя программатор USBasp -U eeprom:w:upload.hex — указывает, что работаем с eeprom памятью (eeprom), пишем (w), файл (eeprom.hex).
Пример 4 (читаем Flash и пишем в файл dump.hex)
Отличие от первого примера, отсутствует «-e» (стирать чип нам не надо), команда :w: (write, писать) заменена на :r: (read, читать), добавлено :i (формат файла Intel Hex)
При прошивке формат файла определяется автоматически, указывать его не обязательно. Когда пытаетесь слить прошивку, указывать формат файла нужно обязательно.
Поддерживаемые форматы файлов:
i — Intel Hexs — Motorola S-recordr — raw binary; little-endian byte order, in the case of the flash ROM datam — immediate mode; actual byte values specified on the command line, separated by commas or spaces in place of the filename field of the ‘-U’ option. This is useful for programming fuse bytes without having to create a single-byte file or enter terminal mode. If the number specified begins with 0x, it is treated as a hex value. If the number otherwise begins with a leading zero (0) it is treated as octal. Otherwise, the value is treated as decimal.a — auto detect; valid for input only, and only if the input is not provided at stdin.d — decimal; this and the following formats are only valid on output. They generate one line of output for the respective memory section, forming a comma-separated list of the values. This can be particularly useful for subsequent processing, like for fuse bit settings.h — hexadecimal; each value will get the string 0x prepended.o — octal; each value will get a 0 prepended unless it is less than 8 in which case it gets no prefix.b — binary; each value will get the string 0b prepended.
Пример 6 (выполняем сравнение (верификацию) Flash памяти с указанным hex файлом)
В последнем параметре :v: (verify, проверить).
Если нам надо одним движением прошивать флеш память и прошить фьюзы, разумно сделать пакетный файл с примерно следующими командами:
Практика использования AVRDUDE под Windows
На практике я поступаю так: в папке, где компилируется .hex файл прошивки создаю файл upload.bat со следующим содержимым:
В случае если потребуется изменить программатор, контроллер или путь к AVRDUDE, не потребуется исправлять во всех командах. Достаточно изменить переменные, объявленные в начале файла.
В статье Программаторы микроконтроллеров AVR я описал программатор AVR ISP Prorgammer (работащий через параллельный порт LPT), совместимый с AVR910 и USBasp программатор. Для этих программаторов в AVRDUDE используются следующие идентификаторы:
AVR ISP Prorgammer — stk200AVR910 — avr910USBasp — usbasp
Обращаю Ваше внимание на то, что AVR910 работает через виртуальный последовательный (COM) порт. Его следует указать в параметре -P
Пример:
Подробно о всех возможностях AVRDUDE читайте в документацииC:/avrdude/avrdude-html/avrdude.html
Удачи!
Смотри также:
- Программаторы микроконтроллеров AVR
- Прошивка AVR микроконтроллеров с помощью Raspberry Pi
Чтение и запись FLASH и EEPROM памяти Ардуино
В приведенных выше примерах команд для Avrdude в качестве параметра использовались значения lfuse и efuse для доступа к конфигурационным байтам микроконтроллера. Данный параметр может принимать и другие значения, они приведены ниже:
- calibration — байты калибровки RC-генератора;
- eeprom — энергонезависимая память микроконтроллера;
- efuse — дополнительный конфигурационный бит;
- flash — FLASH память микроконтроллера;
- fuse — фьюз-байт для микроконтроллеров с одним fuse-байтом;
- hfuse — старший fuse-байт;
- lfuse — младший fuse-байт;
- lock — байт блокировки (ячейка защиты);
- signature — три байта что обозначают сигнатуру чипа (device ID);
- fuseN — байт с фьюзами для ATxmega чипов, N — целое число для каждого фьюза что поддерживается устройством;
- application — область приложений во Flash памяти для МК ATxmega;
- apptable — таблица приложений в области Flash памяти для устройств ATxmega;
- boot — загрузочная область Flash памяти для устройств ATxmega;
- prodsig — область с производственной сигнатурой (calibration) для устройств ATxmega;
- usersig — область с пользовательской сигнатурой для устройств ATxmega.
Таким образом, для чтения FLASH Ардуино Уно (микроконтроллера ATmega328p) может быть использована следующая команда: avrdude -C ../etc/avrdude.conf -p m328p -c usbasp -U flash:r:flash_dump.hex:i
Файл с содержимым FLASH памяти микроконтроллера будет создан в каталоге Avrdude. Либо можно прописать в команде полный путь к файлу.
Для записи в FLASH память содержимого файла flash_dump.hex можно использовать команду: avrdude -C ../etc/avrdude.conf -p m328p -c usbasp -U flash:w:flash_dump.hex:i
Чтение EEPROM: avrdude -C ../etc/avrdude.conf -p m328p -c usbasp -U eeprom:r:eeprom_dump.hex:i
Запись EEPROM: avrdude -C ../etc/avrdude.conf -p m328p -c usbasp -U eeprom:w:eeprom_dump.hex:i
Building with avr-gcc
To build, run the make.bat file, after editing it with the following options:
- path of AVR-GCC on your system
- correct target MCU
- Frequency at which your MCU is running (F_CPU, defaults to 16MHz)
- Baud rate of UPDI link (UPDI_BAUD, defaults to 225 kbaud)
I provide a makefile suitable for a MS-Windows environment, but I’m sure Linux users can manage.
The pre-built hex file is for ATMega 328P@16MHz; to use a different MCU of the same family, like the mega168, or running at a frequency different from 16MHz, you will need to rebuild.
When building for Logic Green AVR clones, select «atmega328p» as target. The macro ARDUINO_AVR_LARDU_328E must also be defined, either in the «sys.h» file (using #define) or in the gcc command line (by adding -DARDUINO_AVR_LARDU_328E). This allows the code to know the target is a LGT chip, and set the chip core speed at run time from F_CPU. Recommended values for F_CPU are 32MHz or 16MHz; 8MHz also works but is less reliable.
Работа с памятью (опция -U :r|w|v:[:format])
В качестве <memtype> указываем тип памяти для работы:
- calibration — байты калибровки RC-генератора (один или несколько);
- eeprom — энергонезависимая память (EEPROM) микроконтроллера;
- efuse — дополнительный конфигурационный бит;
- flash — FLASH память микроконтроллера;
- fuse — фьюз-байт для МК только с одним fuse-байтом;
- hfuse — старший fuse-байт;
- lfuse — младший fuse-байт;
- lock — байт блокировки (ячейка защиты);
- signature — три байта что обозначают сигнатуру чипа (device ID);
- fuseN — байт с фьюзами для ATxmega чипов, N — целое число для каждого фьюза что поддерживается устройством;
- application — область приложений во Flash памяти для МК ATxmega;
- apptable — таблица приложений в области Flash памяти для устройств ATxmega;
- boot — загрузочная область Flash памяти для устройств ATxmega;
- prodsig — область с производственной сигнатурой (calibration) для устройств ATxmega;
- usersig — область с пользовательской сигнатурой для устройств ATxmega.
Дальше через двоеточие следует производимая операция с памятью МК:
- r — прочитать указанную область памяти и записать в указанный файл <filename>;
- w — прочитать данные из файла <filename> и записать в указанную память устройства;
- v — прочитать данные из указанного файла <filename> и из указанной области памяти (verify, проверка).
В поле <filename> указывается полный или относительный путь к файлу что используется для записи или чтения данных. Поле «:format» является не обязательным, с его помощью указывается формат используемого файла:
- i — Intel HEX;
- s — Motorola S-record;
- r — raw binary (RAW формат);
- e — ELF (Executable and Linkable Format);
- m — занчения байтов для записи указываются непосредственно в командной строке в поле <filename> и разделяются пробелами или запятыми. По умолчанию байты пишутся в десятичной системе, если указать 0x — будет записано шестнадцатеричные значения, а если перед байтом стоит 0 — будет записано восьмеричное число;
- a — авто-определение формата (auto detect);
- d — десятичный формат (decimal), числа разделяются запятыми;
- h — шестнадцатеричный формат (hexadecimal), числа начинаются с 0x;
- o — восьмеричный формат (octal), перед числами ставится 0;
- b — двоичный формат (binary), перед числами ставится 0b.
По умолчанию используется авто-определение формата (auto detect).
Настройка AVRDUDE
Теперь нам осталось выполнить финальный шаг. Запускаем программу AVRDUDE. По умолчанию открывается вкладка Program. В нижней части окна в меню Настройки выбираем тип программатора usbasp. Далее в категории Микроконтроллер выбираем наш микроконтроллер ATmega8. Ниже, в категории Flash кликаем по значку троеточия и в открывшемся меню указываем путь к скомпилированному файлу с расширением hex. Путь к файлу и сам файл будут теми же, что мы ранее задавали в Proteus.
Чтобы убедится в том, что программатор определен операционной системой (драйвер программатора корректно установлен) и правильно подключен к микроконтроллеру, кликаем по кнопке Чтение. Если ошибок нет, то появится окно с записью “Калибровочные ячейки генератора считаны!” И в верхнем окошке отобразится шестнадцатеричное число. У каждого МК это число индивидуальное.
Прежде, чем записать новую программу рекомендуется очистить память микроконтроллера. Это можно сделать, кликнув по кнопке Стереть все. В результате появится окно с сообщением о том, что кристалл чист.
Теперь кликаем по кнопке Программировать в категории Flash. При успешной записи программы в МК появляется окно с записью, приведенной ниже.
Результат записанной, или, как еще говорят, прошитой программы – это засветившийся светодиод, подключенный к выводу PC0 нашего микроконтроллера.
Первая наша программа очень проста, а частота работы микроконтроллера оставлена по умолчанию и для ATmega8 равна 1 МГц. В случае изменения частоты или подключения внешнего кварцевого резонатора, необходимо внести некоторые изменения во вкладке Fuses, путем установки галочек в соответственные чекбоксы CKSEL0… CKSEL3.
Подробно настройки данной вкладки мы рассмотрим в статье Fuses (биты настройки или биты защиты) микроконтроллера.
Скачать USBasp драйвер
Скачать AVRDUDE
Запись загрузчика в Ардуино
- Соединяем USBasp с платой, в которую будем записывать загрузчик и подключаем программатор к компьютеру.
- Запускаем IDE Arduino.
- В меню Инструменты > Программатор выбираем USBasp.
- В меню Инструменты > Плата выбираем значение, соответствующее нашей плате.
- В меню Инструменты выбираем команду Записать загрузчик.
Если все сделано правильно, то в нижней части IDE появится сообщение об успешной записи загрузчика:
Популярное
- Устройство и программирование микроконтроллеров AVR для начинающих — 143
- Трехканальный термостат, терморегулятор, таймер на ATmega8 — 70
- Двухканальный термостат, терморегулятор на ATmega8 — 67
Программатор USBASP — устройство, распиновка, подключение, прошивка
Building with Arduino IDE
If you prefer, the program can be built as if it was an Arduino sketch. Inside the «source» directory, there is an empty file called «jtag2updi.ino» so that the Arduino IDE can recognize the source code.
Just copy all the files inside «source» to a new directory called «jtag2updi» inside your sketch main directory.
The Arduino IDE will automatically set the correct MCU model and F_CPU, but if you want to change the speed of the UPDI link, you will have to edit UPDI_BAUD directly in the source code.
When building for Logic Green AVR clones, I recommend that you install the board definitions from dbuezas (https://github.com/dbuezas/lgt8fx).
This version allows selection of the MCU running speed, unlike the official release (Larduino_HSP)
Note:
By default, the following pins are used for UPDI communication on common Arduino boards:
- Arduino Mega (1280/2560): PD3 -> Digital Pin 18
- Arduino (328P): PD6 -> Digital Pin 6
Using with avrdude
It has been modified to work with avrdude 6.3, by removing (actually, commenting out) some incompatible stuff, and adding the «jtag2updi» programmer type.
The definitions for UPDI chips were slightly modified so that avrdude thinks they use the PDI programming interface instead of UPDI (i.e., avrdude thinks they are some kind of XMegas).
This allows the jtagice mk2 protocol to be used for programming UPDI chips, since this protocol predates UPDI and is not formally compatible with it. Originally, I had planed to use the STK500v2 protocol, and emulate the ISP interface, and I actually wrote an ISP version of the programmer software.
However, this would require entirely new definitions for the UPDI chips inside the avrdude.conf file, while using jtagice2 requires only very slight changes to the definions provided by Atmel (now Microchip).
Note:
If you install the Arduino board «Nano Every» in your Arduino IDE, it will come with versions of avrdude and avrdude.conf files that support jtag2updi. You can use those files instead of the compatibility avrdude.conf supplied here which is meant for older avrdude versions.
Jtagice mk2 is the most advanced of Atmel’s programming protocols that still supports a UART serial connection instead of USB, making it easily compatible with any Arduino you choose to host this software, and any OS you run avrdude on.
It’s major limitation is speed; it can’t go over 115200 Baud, because the protocol lacks definitions for higher speeds. It’s actually inferior to the STK500v2 protocol in this respect, this older standard can run at any speed avrdude instructs it to.
Fortunately, the current UPDI chips do not have very large flash memories, so I think this isn’t a major issue.
Example command line (windows):
avrdude -c jtag2updi -P com7 -p t1614
If all the connections are correct and the target is indeed an unlocked tiny1614, the output will be:
avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.03s avrdude: Device signature = 0x1e9422 (probably t1614) avrdude done. Thank you.
If the chip is locked, the output will be:
avrdude: jtagmkII_reset(): bad response to reset command: RSP_ILLEGAL_MCU_STATE avrdude: initialization failed, rc=-1 Double check connections and try again, or use -F to override this check. avrdude: jtagmkII_close(): bad response to sign-off command: RSP_ILLEGAL_MCU_STATE avrdude done. Thank you.
To unlock the chip, you need to erase it, using the -e option on avrdude:
avrdude -c jtag2updi -P com7 -p t1614 -e
Alternatively, you can erase the chip from interactive mode, enter it using «-t», and «-F» to override the error:
Note: You must build with DISABLE_HOST_TIMEOUT defined for terminal mode to work. See below for more information on the timeouts.
avrdude -c jtag2updi -P com7 -p t1614 -t -F
You will enter the avrdude prompt:
avrdude: jtagmkII_reset(): bad response to reset command: RSP_ILLEGAL_MCU_STATE avrdude: initialization failed, rc=-1 avrdude: AVR device initialized and ready to accept instructions avrdude: Device signature = 0xffff00 avrdude: Expected signature for ATtiny1614 is 1E 94 22 avrdude: NOTE: Programmer supports page erase for Xmega devices. Each page will be erased before programming it, but no chip erase is performed. To disable page erases, specify the -D option; for a chip-erase, use the -e option. avrdude>
Enter «erase» then «quit» and the chip will be unlocked (and erased).
avrdude> erase >>> erase avrdude: erasing chip avrdude> quit >>> quit avrdude done. Thank you.
Примеры использования
Считываем данные из Flash-памяти микроконтроллера ATmega8 и сохраняем их в файл /home/nixuser/m8_flash_dump.hex, формат данных для сохранения — Intel HEX. Для работы используем USB-программатор USBAsp, также просим программу выводить больше отладочной информации:
avrdude -p m8 -c usbasp -P usb -v -U flash:r:/home/nixuser/m8_flash_dump.hex:i
Выполним чтение данных из памяти EEPROM микроконтроллера ATmega32, сохраним эти данные в файл c:\temp\m32_eeprom.raw используя формат данных — RAW. Для работы используем программатор USBTiny:
avrdude -p m32 -c usbtiny -U eeprom:r:"c:\temp\m32_eeprom.raw":r
Выполним запись данных из файла /home/nixuser/dump_m8.hex во Flash-память микроконтроллера ATtiny13, используем программатор STK500:
avrdude -p t13 -c stk500 -U flash:w:/home/nixuser/dump_m8.hex
Выполним при помощи одной команды запись данных во Flash и EEPROM память микроконтроллера ATtiny13 используя как источники данных файлы flash_dada.hex и eeprom_data.hex, для работы используется программатор USBasp:
avrdude -p t13 -c usbasp -U flash:w:"c:\temp\flash_dada.hex" -U eeprom:w:"c:\temp\eeprom_data.hex"
Выполним чтение значений Fuse-битов микроконтроллера ATtiny13 с последующи сохранением данных в файлы hfuse.txt и lfuse.txt, формат файла для сохранения — Intel HEX. Для операции используем программатор USBasp:
avrdude -p t13 -c usbasp -U hfuse:r:hfuse.txt:h -U lfuse:r:lfuse.txt:h
Выполним установку Fuse-битов в микроконтроллере ATmega16 при помощи программатора USBasp. Значение младшего fuse-байта = 0xe1, а значение старшего fuse-байта = 0x99:
avrdude -p m16 -c usbasp -U lfuse:w:0xe1:m -U hfuse:w:0x99:m
Метки: usbasp
Комментарии 266
Очень полезная статья!Автору жму руку!
Возникала проблема: есть программатор USBaps, драйвер установил, в устройствах компьютера определяется.Установил SinaProg, программатор подключаю — загорается светодиод, пытаюсь прошить Тиньку13 и выскакивает сообщение «programmer faild» над строчкой Flash. Второй светодиод откликается во время прошивки — начинает мигать, понятно, что программатор работает.Причем сообщение «programmer faild» выскакивает даже если пустой программатор подключен без Тиньки и попробовать ее определить.В какую сторону копать?
Ребята, подскажите, кто сталкивался или знает. Ситуация такая-собрал программатор, запрограммировал контроллер с помощью Pickit2 и AvrDude, поставил его в плату собранного USBasp программатора, включаю его, а компьютер видит его, как неопознанное устройство. Резистор, рекомендованный к уменьшению до 1 ком пробовал уменьшить. Результата ни какого. Прошил без ошибок, фьюзы проверены то раз.Как сделать, чтоб комп увидел его, как USBasp?
Весь atmel можно шить usbasp-шкой или допустим мои завалявшиеся at89c2051 и at89c51ed2 не пройдут? (под них даже софта найти не могу, в базе популярных прошивальщиков этой серии-AT89 просто нет )
ps где список возможностей usbasp взять
ставим синапрог, смотрим список доступных мк:— там список начинается с AT90xx
Весь atmel можно шить usbasp-шкой или допустим мои завалявшиеся at89c2051 и at89c51ed2 не пройдут? (под них даже софта найти не могу, в базе популярных прошивальщиков этой серии-AT89 просто нет )
ps где список возможностей usbasp взять
блин ну обьясните мне, такому недалёкому в таких вопросов-ЧТО МОЖНО ДЕЛАТЬ СТ ТАКИМИ ПРОГРАМАТОРАМИ?тОЛЬКО БЕЗ УМНЫХ МСЛЕЙ КОТОРЫЕ ПОТОМ НУЖНО БУДЕТ РАСШИФРОВЫВАТЬ А ТАК, ПОПОНЯТНЕЕ НА ПАЛЬЦАХ
если коротко, то этот программатор используется для заливки прошивки в микроконтроллеры фирмы Atmel.
вот человек допустим умеет программировать, написал программу, залил в мк, и собрал поделку.а поделка уже делает что нам нужно.ПРичем можно организовать любые хотелки
ну я примерно понял что именно такими програматорами и делали поделку сердце?все огни там бегают в разные стороны, красиво получилось слов нет
все верно )можно алгоритм любой придумать, и какое хочешь устройство собрать.от светомигалок, до сложных устройств в разной отрасли: автомобили, быт, производство, …
если коротко, то этот программатор используется для заливки прошивки в микроконтроллеры фирмы Atmel.
вот человек допустим умеет программировать, написал программу, залил в мк, и собрал поделку.а поделка уже делает что нам нужно.ПРичем можно организовать любые хотелки
Atmega 328P можно им программить? а то, думаю взять для этого дела вот такой: ru.aliexpress.com/item/1p…a3-4b41-a57e-64ecf3522145
ну это usbasp, можно им программировать
спасиб, значит, то, что мне и нужно
Сначала хочю сказать огромное СПАСИБО человеку под ником c10wn за неоценимый вклад в просвещение таких как я.
Теперь к делуc10wn посоветовал альтернативу прошывке программатора от AVR910. Вчера я ее залил. Но не смог протестить, так как с прошыватором завис. Сегодня узнал от c10wn что AVR studio должна поддержывать етот программатор.Как ето сделать:Tools/Add target… (Вибираем STK500 и прот на котором висит программатор)После етого в меню Toolsdevice programming можна шыить с помощю STK500!Даже както удивился как все просто оказалось…
П.С.Я чесно говоря аж прозрел. Запустил прошыватор, нажал кнопку «Program»… Смотрю на лампочки зеленая пустила одну моргулину, потом красная, потом снова зеленая… ну думаю облом… не работает (потому что АВР910 моргал светодиодами по 10минут на етой прошивке… процес был похож на форматирование запоротой дискеты)))) а тут бац и все.
Ладно вставил проц со старой прошивкой. Открыл АВР ОСП2. нажал верифи, и пошел пить кофе. Допил, прихожу… о Класно! 80%, щас реклама закончится и узнаю. спустя пару минут — пишет EQUEL! Офигеть… да не может быть… Протестировал еще на парочке прошывок. Работает на. Если бы не час ночи то наверника заорал бы от радости!
c10wn ты не реально крутой человек)))! Ты мне столько времени секономил. Я жил себе не подозревая даже что процес прошывки может протекать так быстро!Спасибо тебе БОЛЬШОЕ!
П.П.СХотел в приват отправить, но смотрю что ты на мобильном приложении. Решыл не нервировать в такое время ))) (звук сообщения мобильного приложения конечно нечто… жаль нельзя отключить)
Драйвера для USBasp
Для работы с USBasp в Windows следует установить драйвера. Разработчик данного программатора рекомендует использовать драйвера Zadig, скачать их можно на странице http://zadig.akeo.ie/
Обратите внимание, начиная с версии драйвера 2.3 прекращена поддержка Windows XP и Vista. Для указанных систем используйте предыдущую версию драйвера: zadig_xp_2.2.exe для XP и zadig_2.2.exe для Vista
У меня в системе установлены драйвера из этого набора, они подходят как для XP, так и для свежих версий Windows. Скачайте архив, распакуйте его и запустите InstallDriver.exe для установки драйверов.
После установки драйверов программатор будет виден в диспетчере устройств как USBasp, теперь мы можем его использовать:
При работе в Linux или MacOS X установка дополнительного ПО для USBasp не требуется.
Итак, проверим программатор USBasp в действии. В предыдущих публикациях я описывал процедуру записи загрузчика в Ардуино и работу с фьюзами с использованием Ардуино в качестве программатора. Эти же действия можно выполнить, используя USBasp.
Программатор USBasp
Связь компьютера с микроконтроллером осуществляется посредством программатора USBasp через USB порт, а данные передаются по интерфейсу SPI – Serial Peripheral Interface (последовательный периферийный интерфейс). Для связи МК с программатором задействуются специальные выводы: MOSI, MISO, SCK, RESET, VCC, GND. Хотя SPI предполагает использование всего трех выводов MOSI, MISO и SCK, но мы будем задействовать все шесть выводов.
При обмене данными по интерфейсу SPI микроконтроллер может одновременно либо принимать (вывод MISO) либо передавать данные (вывод MOSI). Установка режима приема или передачи данных осуществляется путем подачи определенного импульса на вывод SCK.
Разъем программатора, как правило, имеет 10 пинов и подключается к микроконтроллеру с помощью 10 проводного шлейфа. Однако удобней пользоваться шлейфами, которые имеют переходник на 6 пин, так как в таком случае все пины заняты. У десяти пинового разъема одни пин остается не занятым, а четыре пина подключены к общему проводу (GND).
Для того, чтобы компьютер определил программатор необходимо установить драйвер USBasp.
Фото подсоединенного программатора к микроконтроллеру ATmega8 приведено ниже.
Единственный недостаток или, правильнее сказать, мелкое неудобство данного программатора заключается в том, что он не поддерживается (без различных ухищрений) Atmel Studio, поэтому приходится пользоваться сторонней программой. Наиболее зарекомендовавшей себя является AVRDUDE.
History
AVRDUDE has once been started by Brian S. Dean as a private project
of an in-system programmer for the Atmel AVR microcontroller series,
as part of the Opensource and free software tools collection available for
these controllers. Originally, the software was written for the FreeBSD operating system,
maintained in a private CVS repository, and distributed under the name
avrprog.
Due to the growing interest in porting the software to other
operating systems, Brian
decided to make the project publically accessible on
savannah.nongnu.org. The name change to AVRDUDE has been chosen to
resolve the ambiguity with the avrprog utility as distributed
by Atmel together with their AVRstudio software.
Модели микроконтроллеров (опция -p )
Значение параметра | Модель МК |
---|---|
uc3a0512 | AT32UC3A0512 |
c128 | AT90CAN128 |
c32 | AT90CAN32 |
c64 | AT90CAN64 |
pwm2 | AT90PWM2 |
pwm2b | AT90PWM2B |
pwm3 | AT90PWM3 |
pwm316 | AT90PWM316 |
pwm3b | AT90PWM3B |
1200 | AT90S1200 |
2313 | AT90S2313 |
2333 | AT90S2333 |
2343 | AT90S2343 |
4414 | AT90S4414 |
4433 | AT90S4433 |
4434 | AT90S4434 |
8515 | AT90S8515 |
8535 | AT90S8535 |
usb1286 | AT90USB1286 |
usb1287 | AT90USB1287 |
usb162 | AT90USB162 |
usb646 | AT90USB646 |
usb647 | AT90USB647 |
usb82 | AT90USB82 |
m103 | ATmega103 |
m128 | ATmega128 |
m1280 | ATmega1280 |
m1281 | ATmega1281 |
m1284p | ATmega1284P |
m1284rfr2 | ATmega1284RFR2 |
m128rfa1 | ATmega128RFA1 |
m128rfr2 | ATmega128RFR2 |
m16 | ATmega16 |
m161 | ATmega161 |
m162 | ATmega162 |
m163 | ATmega163 |
m164p | ATmega164P |
m168 | ATmega168 |
m168p | ATmega168P |
m169 | ATmega169 |
m16u2 | ATmega16U2 |
m2560 | ATmega2560 |
m2561 | ATmega2561 |
m2564rfr2 | ATmega2564RFR2 |
m256rfr2 | ATmega256RFR2 |
m32 | ATmega32 |
m324p | ATmega324P |
m324pa | ATmega324PA |
m325 | ATmega325 |
m3250 | ATmega3250 |
m328 | ATmega328 |
m328p | ATmega328P |
m329 | ATmega329 |
m3290 | ATmega3290 |
m3290p | ATmega3290P |
m329p | ATmega329P |
m32u2 | ATmega32U2 |
m32u4 | ATmega32U4 |
m406 | ATMEGA406 |
m48 | ATmega48 |
m48p | ATmega48P |
m64 | ATmega64 |
m640 | ATmega640 |
m644 | ATmega644 |
m644p | ATmega644P |
m644rfr2 | ATmega644RFR2 |
m645 | ATmega645 |
m6450 | ATmega6450 |
m649 | ATmega649 |
m6490 | ATmega6490 |
m64rfr2 | ATmega64RFR2 |
m8 | ATmega8 |
m8515 | ATmega8515 |
m8535 | ATmega8535 |
m88 | ATmega88 |
m88p | ATmega88P |
m8u2 | ATmega8U2 |
t10 | ATtiny10 |
t11 | ATtiny11 |
t12 | ATtiny12 |
t13 | ATtiny13 |
t15 | ATtiny15 |
t1634 | ATtiny1634 |
t20 | ATtiny20 |
t2313 | ATtiny2313 |
t24 | ATtiny24 |
t25 | ATtiny25 |
t26 | ATtiny26 |
t261 | ATtiny261 |
t4 | ATtiny4 |
t40 | ATtiny40 |
t4313 | ATtiny4313 |
t43u | ATtiny43u |
t44 | ATtiny44 |
t45 | ATtiny45 |
t461 | ATtiny461 |
t5 | ATtiny5 |
t84 | ATtiny84 |
t85 | ATtiny85 |
t861 | ATtiny861 |
t88 | ATtiny88 |
t9 | ATtiny9 |
x128a1 | ATxmega128A1 |
x128a1d | ATxmega128A1revD |
x128a1u | ATxmega128A1U |
x128a3 | ATxmega128A3 |
x128a3u | ATxmega128A3U |
x128a4 | ATxmega128A4 |
x128a4u | ATxmega128A4U |
x128b1 | ATxmega128B1 |
x128b3 | ATxmega128B3 |
x128c3 | ATxmega128C3 |
x128d3 | ATxmega128D3 |
x128d4 | ATxmega128D4 |
x16a4 | ATxmega16A4 |
x16a4u | ATxmega16A4U |
x16c4 | ATxmega16C4 |
x16d4 | ATxmega16D4 |
x16e5 | ATxmega16E5 |
x192a1 | ATxmega192A1 |
x192a3 | ATxmega192A3 |
x192a3u | ATxmega192A3U |
x192c3 | ATxmega192C3 |
x192d3 | ATxmega192D3 |
x256a1 | ATxmega256A1 |
x256a3 | ATxmega256A3 |
x256a3b | ATxmega256A3B |
x256a3bu | ATxmega256A3BU |
x256a3u | ATxmega256A3U |
x256c3 | ATxmega256C3 |
x256d3 | ATxmega256D3 |
x32a4 | ATxmega32A4 |
x32a4u | ATxmega32A4U |
x32c4 | ATxmega32C4 |
x32d4 | ATxmega32D4 |
x32e5 | ATxmega32E5 |
x384c3 | ATxmega384C3 |
x384d3 | ATxmega384D3 |
x64a1 | ATxmega64A1 |
x64a1u | ATxmega64A1U |
x64a3 | ATxmega64A3 |
x64a3u | ATxmega64A3U |
x64a4 | ATxmega64A4 |
x64a4u | ATxmega64A4U |
x64b1 | ATxmega64B1 |
x64b3 | ATxmega64B3 |
x64c3 | ATxmega64C3 |
x64d3 | ATxmega64D3 |
x64d4 | ATxmega64D4 |
x8e5 | ATxmega8E5 |