Avrdude — опции запуска и примеры использования, графическая оболочка для linux

Как использовать 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:

  1. path of AVR-GCC on your system
  2. correct target MCU
  3. Frequency at which your MCU is running (F_CPU, defaults to 16MHz)
  4. 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

Запись загрузчика в Ардуино

  1. Соединяем USBasp с платой, в которую будем записывать загрузчик и подключаем программатор к компьютеру.
  2. Запускаем IDE Arduino.
  3. В меню Инструменты > Программатор выбираем USBasp.
  4. В меню Инструменты > Плата выбираем значение, соответствующее нашей плате.
  5. В меню Инструменты выбираем команду Записать загрузчик.

Если все сделано правильно, то в нижней части 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
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector