USBasp | AVRDUDE | Программирование микроконтроллеров AVR
Чтобы перенести нашу программу с компьютера в микроконтроллер нам понадобится программатор USBasp и программа AVRDUDE. Сегодня существует широкий выбор программаторов, предназначенных для программирования микроконтроллеров AVR. Среди них можно найти много самодельных, который даже трудно назвать программаторами, поскольку они с помощью всего лишь нескольких резисторов напрямую подключаются к COM порту. Однако современные компьютеры и ноутбуки уже практически не оборудываются COM портами, поэтому одним из основных критериев при выборе программатора является возможность подключения его к USB порту. Наиболее дешевый, простой и очень распространенный – это программатор USBasp. Его можно приобрести практически в любом радиомагазине по доступной цене. Стоимость его в китайских интернет магазина находится в пределах от 1,5 $ до 3 $.
Программатор 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.
Настройка AVRDUDE
Теперь нам осталось выполнить финальный шаг. Запускаем программу AVRDUDE. По умолчанию открывается вкладка Program. В нижней части окна в меню Настройки выбираем тип программатора usbasp. Далее в категории Микроконтроллер выбираем наш микроконтроллер ATmega8. Ниже, в категории Flash кликаем по значку троеточия и в открывшемся меню указываем путь к скомпилированному файлу с расширением hex. Путь к файлу и сам файл будут теми же, что мы ранее задавали в Proteus.
Чтобы убедится в том, что программатор определен операционной системой (драйвер программатора корректно установлен) и правильно подключен к микроконтроллеру, кликаем по кнопке Чтение. Если ошибок нет, то появится окно с записью “Калибровочные ячейки генератора считаны!” И в верхнем окошке отобразится шестнадцатеричное число. У каждого МК это число индивидуальное.
Прежде, чем записать новую программу рекомендуется очистить память микроконтроллера. Это можно сделать, кликнув по кнопке Стереть все. В результате появится окно с сообщением о том, что кристалл чист.
Теперь кликаем по кнопке Программировать в категории Flash. При успешной записи программы в МК появляется окно с записью, приведенной ниже.
Результат записанной, или, как еще говорят, прошитой программы – это засветившийся светодиод, подключенный к выводу PC0 нашего микроконтроллера.
Первая наша программа очень проста, а частота работы микроконтроллера оставлена по умолчанию и для ATmega8 равна 1 МГц. В случае изменения частоты или подключения внешнего кварцевого резонатора, необходимо внести некоторые изменения во вкладке Fuses, путем установки галочек в соответственные чекбоксы CKSEL0… CKSEL3.
Подробно настройки данной вкладки мы рассмотрим в статье Fuses (биты настройки или биты защиты) микроконтроллера.
Скачать USBasp драйвер
Скачать AVRDUDE
Libusb_1.2.4.0 содержит ошибку.
какую?
Очень полезная статейка. Мне очень помогла. Автору респект!
Здравствуйте. А как прочитать прошивку из контроллера. Зачем здесь кнопка чтения? Она ничего не делает.
А если всё время пишет Ошибка что делать? Вроде всё подключено правильно, программа скачан на ноут но не получается!!!
А если всё время пишет Ошибка что делать? Вроде всё подключено правильно, программа скачан на ноут но не получается!!! Мой процессор с транзистор тестера Mega328p
Зачем во вкладке «Фьюзы» имеются кнопки «Программирование», «Верификация», «Чтение»?
Добрый день !Один вопрос: почему при попытке прошивки и верификации файла нех ,виндуос 8 дает ошибку и закрывает программу ,.еер нормально шьет????Ячейки читает,может дело в драйвере программатора?
Проверить фьюзы,лок биты, драйвер программатора,запустить программу от имени администратора,,,,,заменить контроллер другим…проверить напряжение питания во время работы…прошивки…
Здравствуйте. Если на мк уде написана программа. Как её можно считать и редактировать.
Считать программу с мк: создать на диске пустой текстовый файл, сменить ему расширение на .hex, нажать в программе «чтение», содержимое памяти мк запишется в указанный файл.
на мк содержится бинарный код, нули и еденицы. Программа же пишется на одном из языков программирования, исходный код, который потом компилируется в бинарник для заливки в МК. Обычными программами не расшифровать бинарный код в высокоуровневый язык программирования. Этим занимаются высококвалифицированные программисты, за немалые деньги, когда иначе раздобыть исходный код нет никакой возможности