30.08.2017
HomeПрограммирование микроконтроллеровUSBasp | AVRDUDE | Программирование микроконтроллеров AVR
By Дмитрий Забарило Программирование микроконтроллеров 12 комментариев
Чтобы перенести нашу программу с компьютера в микроконтроллер нам понадобится программатор USBasp и программа AVRDUDE. Сегодня существует широкий выбор программаторов, предназначенных для программирования микроконтроллеров AVR. Среди них можно найти много самодельных, который даже трудно назвать программаторами, поскольку они с помощью всего лишь нескольких резисторов напрямую подключаются к COM порту. Однако современные компьютеры и ноутбуки уже практически не оборудываются COM портами, поэтому одним из основных критериев при выборе программатора является возможность подключения его к USB порту. Наиболее дешевый, простой и очень распространенный – это программатор USBasp. Его можно приобрести практически в любом радиомагазине по доступной цене. Стоимость его в китайских интернет магазина находится в пределах от 1,5 $ до 3 $.
Связь компьютера с микроконтроллером осуществляется посредством программатора 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.
Настройка AVRDUDEТеперь нам осталось выполнить финальный шаг. Запускаем программу AVRDUDE. По умолчанию открывается вкладка Program. В нижней части окна в меню Настройки выбираем тип программатора usbasp. Далее в категории Микроконтроллер выбираем наш микроконтроллер ATmega8. Ниже, в категории Flash кликаем по значку троеточия и в открывшемся меню указываем путь к скомпилированному файлу с расширением hex. Путь к файлу и сам файл будут теми же, что мы ранее задавали в Proteus.
Чтобы убедится в том, что программатор определен операционной системой (драйвер программатора корректно установлен) и правильно подключен к микроконтроллеру, кликаем по кнопке Чтение. Если ошибок нет, то появится окно с записью “Калибровочные ячейки генератора считаны!” И в верхнем окошке отобразится шестнадцатеричное число. У каждого МК это число индивидуальное.
Прежде, чем записать новую программу рекомендуется очистить память микроконтроллера. Это можно сделать, кликнув по кнопке Стереть все. В результате появится окно с сообщением о том, что кристалл чист.
Теперь кликаем по кнопке Программировать в категории Flash. При успешной записи программы в МК появляется окно с записью, приведенной ниже.
Результат записанной, или, как еще говорят, прошитой программы – это засветившийся светодиод, подключенный к выводу PC0 нашего микроконтроллера.
Первая наша программа очень проста, а частота работы микроконтроллера оставлена по умолчанию и для ATmega8 равна 1 МГц. В случае изменения частоты или подключения внешнего кварцевого резонатора, необходимо внести некоторые изменения во вкладке Fuses, путем установки галочек в соответственные чекбоксы CKSEL0… CKSEL3.
Подробно настройки данной вкладки мы рассмотрим в статье Fuses (биты настройки или биты защиты) микроконтроллера.
Скачать USBasp драйвер
Скачать AVRDUDE
K119 программатор для Atmel USBasp совместимый (конструктор)
Данный программатор предназначен для внутрисхемного программирования Atmel AVR микроконтроллеров. Подключается к USB порту персонального компьютера, имеет возможность подачи питания на программируемое устройство, выбора частоты программирования, работоспособен под управлением операционных систем Linux, Mac OS X и Windows.
Технические характеристики:
Общее описание:
Устройство является аналогом программатора USBasp *1, может быть собрано с использованием микроконтроллеров ATmega8/ATmega48, и не требует дополнительных контроллеров USB-шины. Для осуществления возможности выбора частоты программирования, предусмотрена перемычка JP1, замкнув которую, частоту ISP порта можно понизить с 375кГц до 8кГц. Это необходимо при программировании микроконтроллеров, тактовая частота которых меньше 1,5МГц. Перемычка JP3 предназначена для подачи питания на программируемое устройство. Для защиты USB порта от перегрузки или короткого замыкания, применен быстродействующий предохранитель F1, с током срабатывания 250мА.
Разомкнув перемычку JP2, можно понизить напряжение питания программатора с 5В до 3,3-3,6В, это может быть необходимо при программировании устройств с напряжением питания 3,3В *2.
Для индикации режима работы устройства предназначены светодиоды D3 и D4: D3 индицирует подачу питания на устройство, а D4 — чтение/запись программируемого микроконтроллера. Причем напряжение на D4 подается немного раньше начала процесса чтения/записи, что может использоваться как сигнал для включения дополнительных буферов с тремя состояниями для преобразования уровней сигналов.
Программатор поддерживает следущее ПО::
1. AVRDUDE, начиная с версии 5.2 (Рекомендуется)
http://savannah.nongnu.org/projects/avrdude/
2. BASCOM-AVR, начиная с версии 1.11.9.6;
http://www.mcselec.com/
3. Khazama AVR Programmer;
http://khazama.com/project/programmer/
4. eXtreme Burner — AVR;
http://extremeelectronics.
co.in/avr-tutorials/gui-software-for-usbasp-based-usb-avr-programmers/Для поддержки средой AVR Studio 4, программатор может быть выполнен STK500-совместимым. Для этого, его необходимо запрограммировать альтернативной программой, которая может быть найдена на сайте
http://www.obdev.at/products/vusb/avrdoper.html
Список поддерживаемых микроконтроллеров:
AT90S2313, AT90S2323, AT90S2343, AT90S4422, AT90S4434, AT90S8515, AT90S8535; ATTINY13, ATTINY15, ATTINY2313, ATTINY24,ATTINY25, ATTINY26, ATTINY261, ATTINY28, ATTINY44, ATTINY45, ATTINY61, ATTINY84, ATTINY84, ATTINY85, ATTINY861; ATMEGA103, ATMEGA128, ATMEGA1280, ATMEGA1281, ATMEGA16, ATMEGA161, ATMEGA162, ATMEGA163, ATMEGA164, ATMEGA168, ATMEGA169, ATMEGA32, ATMEGA324, ATMEGA325, ATMEGA3250, ATMEGA328, ATMEGA329x ATMEGA48, ATMEGA64, ATMEGA640, ATMEGA644, ATMEGA645, ATMEGA6450, ATMEGA649x, ATMEGA8, ATMEGA8515, ATMEGA8535, ATMEGA88;
Примечания:
http://www. fischl.de/usbasp/
Напишите ваш собственный отзыв
Это может сильно сбить с толку тех, кто только начал программировать в среде AVR. Студия Atmel является лучшей интегрированной платформой разработки (IDP) для программирования AVR и разработки встраиваемых систем. Только установка занимает очень много времени. Но как только вы закончите настройку IDP для программирования AVR, вы не вернетесь назад!
Если вы не знаете, вы можете установить Atmel Studio только в Windows . Так что, если вы используете Linux, этот пост в блоге вам не поможет.
Прежде всего, давайте взглянем на мою текущую конфигурацию системы
Если вы не знаете, как выглядит USBasp, вот изображение для вас.
USBaspЯ использую макетную плату на базе USBasp. Он поддерживает драйвер USBasp, поэтому даже если я настраиваю свой IDP с помощью этой платы разработки. Это должно работать и на вашем USBasp.
Эта макетная плата имеет разъем ZIF, в который можно вставлять микросхемы AVR и программировать с помощью платы. Никаких дополнительных подключений не требуется. Есть распиновка слотов для GPIO.
AVR Mini Development BoardУбедитесь, что у вас есть Atmel Studio, WinAVR и USBasp , чтобы следовать этому руководству.
Установите Atmel Studio и WinAVR. Вы можете следовать пошаговым инструкциям, встроенным в мастер установки.
Поскольку я собираюсь загрузить свои коды в AVR с помощью avrdude. Мне нужно сначала скомпилировать коды, используя ту же цепочку инструментов.
Для этого мне нужно создать пользовательскую конфигурацию цепочки инструментов.
Перейдите к Tools > Options > Toolchain
В раскрывающемся меню выберите Atmel AVR 8-bit (Cpp Language) .
Нажмите «Добавить вкус», затем установите имя пакета «WinAVRDev» или любое другое.
Чтобы узнать базовый путь пакета, перейдите в каталог установки WinAVR и найдите папку bin . Теперь скопируйте путь и вставьте его. [Для меня это было E:\WinAVR-20100110\bin ]
Нажмите Добавить .
Вы можете сделать только что созданный пакет toolchain по умолчанию, нажав кнопку Set as Default .
Если вы завершили настройку пакета toolchain, нажмите OK , чтобы закрыть диалоговое окно.
Для загрузки скомпилированных шестнадцатеричных файлов. Вам необходимо настроить внешний инструмент для USBasp. Если вы не создаете внешний инструмент для USBasp, это тоже нормально, тогда вам нужно ввести команды avrdude для загрузки или использовать другое программное обеспечение для загрузки шестнадцатеричного файла для вас.
Зачем беспокоиться, если Atmel Studio может помочь вам как в компиляции кода, так и в процессе загрузки шестнадцатеричных файлов?
Перейдите к Инструменты > Внешние инструменты
Нажмите «Добавить» и заполните поля следующими строками.
Отметить: Использовать окно вывода
Снимите флажок: Запрашивать аргументы , Обрабатывать вывод как Unicode
Заголовок: Вы можете дать любой заголовок.
Команда: Это запустит программу avrdude, поэтому вам нужно указать путь к каталогу avrdude в этом поле. Для меня это было E:\WinAVR-20100110\bin\avrdude.exe
Аргументы: Это самая сложная часть. Это раздел аргументов, в котором вам нужно передать определенные аргументы для выполнения определенных задач. Так как я использую внешний инструмент в качестве загрузчика программного кода. Мне нужно ввести команду, которую я бы использовал в avrdude для загрузки кодов.
Здесь вы можете найти много информации о командах avrdude.
Вот аргумент, который я предоставил
avrdude -c usbasp -p atmega8 -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:i
Вы можете видеть, что я поставил atmega8 здесь. Это потому, что я программирую свой чип ATmega8.
Если вам нужно запрограммировать другой микроконтроллер. Вы должны изменить имя чипа .
Теперь нам нужно проверить, правильно ли работает моя конфигурация. Создайте новый проект [Исполняемый проект GCC C++].
Нам нужно проверить, выбрана ли правильная цепочка инструментов. 9Если вы можете связать последнюю строку вашего вывода с моей, тогда вы успешно скомпилировали свою программу и можете сразу ее загрузить!
=== Сборка: 1 выполнена успешно или обновлена, 0 не выполнена, 0 пропущена ==
Под загрузкой файла hex я подразумеваю программирование микросхемы avr. Помните, что до сих пор вы только скомпилировали проект и еще не загрузили код в свой чип atmega.
Правильно подключите USBasp к микроконтроллеру AVR.
Если вы используете внешний кристалл, вам также понадобятся два керамических конденсатора емкостью 22 пФ, подключите компоненты в соответствии со следующей схемой
Если вы используете внешние часыПрежде чем приступить к этому, не забудьте подключить USBasp к компьютеру первый!
Теперь я собираюсь использовать внешний инструмент для загрузки шестнадцатеричного файла в микросхему avr.
Успешная загрузка выглядит следующим образом.
Успешная загрузкаЕсли возникает какая-либо ошибка, прежде всего проверьте каталог WinAVR.
Для следующей ошибки выполните указанные действия.
avrdude.exe: ошибка: включение программы: цель не отвечает. 1avrdude.exe: инициализация не удалась, rc=-1 Дважды проверьте соединения и повторите попытку, или используйте -F, чтобы переопределить это действие check.avrdude.exe. Спасибо.
Это означает, что ваш USBasp не может связаться с целевым чипом [чипом, который вы собираетесь программировать].
Вы можете предпринять следующие шаги для решения проблемы
Если шаги не работают, возможно, ваш чип заблокирован. Попробуйте весь процесс на новом рабочем чипе.
Поздравляем, если вы запрограммировали чип AVR без каких-либо проблем. Следите за сообщениями в блогах на основе AVR. Спасибо за прочтение!
Существует несколько способов программирования микроконтроллеров AVR. Мы программируем его с помощью серийного программатора USBASP v2.0. Для демонстрации мы будем использовать микроконтроллер ATmega16 и Atmel Studio. Проверим программатор блинк-скетчем.
Ниже приведены шаги для записи кода в микросхемы Atmega с использованием USBASP JTAG и Atmel Studio:
Мы подробно обсудим каждый шаг. Первым шагом будет установка драйвера USBASP в Windows10. Тот же метод можно использовать для установки в другой версии Windows.
Шаг 1. Установка драйвера USBASP в Windows 10:
При использовании JTAG (USBASP) может потребоваться установка драйвера, если он не устанавливается автоматически. Если вы не установите драйвер, вы не сможете найти порт USBASP в Atmel Studio. Загрузите zip-файл USBASP по этой ссылке.
После загрузки драйвера выполните следующие действия.
1. Разархивируйте загруженный файл и сохраните его на рабочем столе (можно хранить где угодно).
2. Подключите модуль USBASP v2.0 к компьютеру. Если вы не знаете, как выглядит USBASP, то можете посмотреть на картинку ниже.
3. Откройте Диспетчер устройств.
4. Теперь вы можете найти подключенный программатор USBASP.
5. Щелкните правой кнопкой мыши «USBasp» и выберите «9».0053 Обновить драйвер ».
6. Выберите « Поиск драйвера на моем компьютере ».
7. Теперь найдите или просмотрите родительскую папку разархивированного драйвера USBASP и выберите Открыть.
8. Если он успешно установлен, вы увидите сообщение, как показано ниже, и вам не нужно следовать дальнейшим инструкциям.
9. Если вы получаете следующую ошибку, как показано ниже, вам необходимо отключить обязательное использование подписи драйверов.
Чтобы отключить подпись драйвера, выполните следующие действия: :
1. Чтобы отключить подпись драйвера, удерживайте клавишу Shift и, удерживая ее, перезагрузите компьютер.
2. Нажмите Перезапустить на панели запуска, удерживая при этом клавишу Shift.
3. Теперь ваш компьютер перезагружается, но не отпускайте клавишу Shift, пока не увидите « Дополнительные параметры » на синем экране.
4. Оставьте клавишу Shift и щелкните «Параметры запуска».
5. Нажмите «Устранение неполадок»
6. Выберите «Дополнительные параметры».
7. При выборе дополнительных параметров отобразится следующий экран с несколькими вариантами, а также кнопка «Перезапустить» внизу справа.
8. Нажмите кнопку «Перезагрузить».
9. Дождитесь повторного запуска Windows. После перезагрузки вы можете увидеть множество вариантов.
10. Теперь это последний шаг по отключению подписи драйвера. Во многих опциях в списке опция 7 th — это «Отключить обязательное использование подписи драйверов ».
11. Чтобы выбрать эту опцию, вам нужно будет нажать кнопку с цифрой 7 на клавиатуре. Не путайте с кнопкой F7. Вам просто нужно нажать цифру 7 на вашем компьютере.
12. После выбора опции 7 th ваш компьютер перезагрузится. И вы успешно отключили подпись драйвера.
13. Теперь просто выполните шаги 1-8 выше, и драйвер USBASP будет успешно установлен.
Теперь мы завершили шаг 1 st программирования Atmega16 . Второй шаг включает в себя настройку Atmel Studio 7.0 для загрузки скетча.
Шаг 2. Загрузка и настройка Atmel Studio:
Выполните следующие шаги:
1. Загрузите Atmel Studio 7.0
2. Также вам потребуется загрузить «WinAVR» в качестве внешней цепочки инструментов для загрузки скетча с помощью USBASP. Для скачивания используйте эту ссылку.
Теперь вам нужно создать проект «Blink» в Atmel Studio 7.0. Для этого выполните следующие действия.
3. Подключите USBASP v2.0 к USB-порту и оставьте его подключенным на все время, пока вы не начнете с ним работать.
4. Откройте Atmel Studio.
5. Перейдите в «Файл», нажмите «Создать» и выберите «Проект».
6. Теперь назовите свой проект, выберите местоположение проекта и выберите компилятор как «Исполняемый проект GCC C». Нажимаем «Ок» и продолжаем.
7. Теперь вам будет предложено выбрать микроконтроллер. Выберите свое устройство, в нашем случае это Atmega16A. Выберите и нажмите «Ок». Вы также можете запрограммировать другие микросхемы Atmega, такие как Atmega8, Atmega32 и т. д., используя тот же программатор USBASP AVR.
8. Теперь ваш файл main.c создан, в котором вы можете написать свой код. Но подождите и следуйте еще немного инструкциям, чтобы закончить.
После создания вашего проекта последним шагом будет создание внешней цепочки инструментов .
Шаг 3. Настройка внешнего инструментария WinAVR в Atmel Studio
1. Перейдите в «Инструменты» и выберите «Внешние инструменты».
2. Вам будет предложено открыть окно, в котором вам нужно будет добавить имя цепочки инструментов.
3. В поле «Название» введите имя вашей цепочки инструментов. Это может быть все, что вы хотите назвать. В моем случае я выбрал «USBasp». Установите флажок «Использовать окно вывода» и снимите флажок «Запрашивать аргументы», как показано на снимке ниже.
4. Теперь введите «Команда». Это будет ваш путь к «avrdude.exe». Вы получите это в пути установки WinAvr. Просто найдите «WinAVR-20100110» на диске «C» или там, где установлен WinAvr.
5. Введите аргументы . Это самый важный шаг, так как этот аргумент будет использоваться для передачи конкретного аргумента для выполнения определенных задач. Поскольку я использую внешнюю цепочку инструментов, используемый аргумент выглядит следующим образом:
6. Дополнительные аргументы можно найти по этой ссылке.
7. Введите указанный выше аргумент в разделе аргументов. Оставьте «Исходный каталог» как есть.
8. После заполнения всех данных просто «Применить» и нажмите «ОК».
Вы успешно создали внешнюю цепочку инструментов для загрузки скетча . После создания набора инструментов мы проверим его, загрузив программу «blink.c». Вы можете найти файл main.c в конце руководства. Теперь скопируйте файл main.c в Atmel Studio.
Шаг 4: Настройка Atmega16 с генератором и одним светодиодом
Подключите кварцевый генератор и светодиод к Atmega16. Ниже приведена принципиальная схема мигающего светодиода с Atmega16 , запрограммированного с помощью USB-программатора Atmega:0006
Шаг 5: Создание и загрузка скетча в Atmega16
1. Сохраните файл main.c.
2. Подключите один светодиод к выводу PORTA0 Atmega16, как показано на рисунке выше.
3. Перейдите в «Build» и выберите «Build Blink».
4. Если программа правильная, вы не найдете никаких ошибок и получите сообщение, как показано ниже.