Содержание
В предыдущей части статьи я рассказывал про прошивку МК с помощью программы PonyProg, теперь расскажу как прошить с помощью CodeVision AVR (далее CVAVR). Честно говоря, работа в программе не сильно отличается от PonyProg.
Для начала можете микроконтроллер поставить в панельку программатора, и подключить его к LPT порту, затем подавайте питание.
Запускаем программу CVAVR
1) Сначала нам нужно настроить порт, заходим в меню Settings -> Programmer.
Откроется окошко, все настройки выставляем как на рисунке ниже
2) Нажимаем ОК, далее заходим в меню Tools -> Chip Programmer
Откроется следующее окно:
Ничего лишнего в этом окошке не трогаем, галочки не ставим и ничего не переключаем.
3) Выбираем нужный нам микроконтроллер из выпадающего меню, я выбрал ATmega8. Если у вас в названии микроконтроллера после ATmegaX стоит буква, к примеру V или L, то в списке выбирайте такой же МК, с такой же буквой.
4) Теперь нам нужно открыть файл прошивки, в этом окошке нажимаем File -> Load FLASH
5) Откроется окно, где нужно будет выбрать файл прошивки с расширением .hex, кстати, не забудьте внизу из выпадающего меню "Тип файлов" выбрать этот тип файла.
6) Файл EEPROM выбираем точно так-же, для этого нажимаем меню File -> Load EEPROM, расширение этого файла .eep, если к вашему проекту такой файл не прилагается, значит нужно прошивать только FLASH т.е. .hex.
Имейте ввиду, что процессы прошивки программы, фьюзов
и ПЗУ (EEPROM) это самостоятельные отдельные процедуры.
И рекомендуется шить сначала программу, затем ПЗУ, затем фьюзы, в принципе что у нас и происходит, когда мы загружаем все файлы для прошивки, и выставляем фьюзы в окошке.
7) Итак, файлы прошивки мы загрузили, теперь нам нужно выставить фьюзы, для моего проекта фьюзы следующие: BOOTSZ1, BOOTSZ0, SUT1, CKSEL3, CKSEL2, выставляем их.
8) Затем ставим галочку Program Fuse Bit(s), если вы не поставите галочку – фьюзы не будут записываться.
Чтобы проверить, видит ли наша программа программатор, подключенный к LPT порту, нажимаем кнопку Reset Chip, на программаторе должны мигнуть светодиоды чтения/записи. Если светодиоды не мигают, значит нам нужно проделать операции после пункта 6, описанные в предыдущей части статьи.
9) Теперь можно прошить МК, нажимаем кнопку Program All, и начнется процесс прошивки.
Если вы загружали только файл прошивки FLASH, .hex, то по ходу прошивки программа предложит загрузить файл EEPROM, жмем NO, т.е. НЕТ.
После чего пробегут еще 2 полоски и процесс прошивки завершится
Во время прошивки МК нельзя выключать или перезагружать ПК!
Теперь можете проверить МК, поставив его в панельку вашего устройства. Если вы хотите записать другую прошивку на этот же МК, новую прошивку можно записать поверх старой, или же стереть сначала старую, потом записать новую, как вам удобнее, разницы особой нету.
11) Чтобы стереть данные с МК нажимаем Program -> Erase Chip.
В данной программе можно считать данные FLASH или EEPROM с МК, или просмотреть Lock биты, установленные Fuse биты. Все это в меню Read (считать).
Решение некоторых проблем с AVR
C разными программаторами, и с разными программами возникают разные ошибки, но некоторые ошибки между собой очень похожи, и устраняются одинаково. Во первых микроконтроллеры подключайте строго к указанным выводам: RESET, VCC, GND, MOSI, MISO, SCK. Если спутаете вывода, или забудете припаять один из контактов, МК не прошьется. Случайно МК в панельку можно поставить спутав вывода, т.е. задом на перед, от этого МК не сгорит, но и не прошьется конечно тоже. Напомню еще раз, что у некоторых МК, например в ATmega 64 и 128 вывода MOSI и MISO не применяются для ISP программирования, вместо них вывода MOSI подключают к ножке PE0, a MISO к PE1. Напряжение питания не должно быть ниже чем нужно, иначе МК не будет программироваться, программы будут выдавать ошибки о том, что не могут обнаружить МК.
Записывать левые программы, например программу, предназначенную для ATmega8 в ATmega48 нельзя. Бывает, что вы запрограммировали МК и файлы прошивки удалили с компьютера, а найти прошивку чтобы прошить другой МК не можете найти. В таких случаях просто считываете программу с микроконтроллера, например с помощью CVAVR и сохраняете его на ПК, затем этой прошивкой прошиваете другой МК.
Если вы случайно запрограммировали какой то фьюз, после чего МК залочился, вспомните, что это был за фьюз, некоторые МК с неправильно зашитыми фьюзами удается восстановить, есть несколько способов как это сделать. На К155ЛА3 можно собрать генератор чтобы восстановить МК с запрограммированным RSTDSBL, если вы выставили фьюзы на работу от внешнего генератора, подавая сигнал на вывод XTAL1 некоторые умудряются таким способом восстановить МК. Также фьюзами можно выставить тактирование от внешней RC цепочки. В таком случае придется собрать RC цепочку, чтобы опять запустить МК. Ещё есть фьюзы DWEN, SPIEN. установив которые, вы отключите возможность пользоваться ISP программатором, тут поможет только параллельный программатор, другие программаторы (к примеру тритон) или приборы, которые встречаются на просторах интернета: например этот, или ATmega Fusebit Doctor, данный прибор я собирал, но почему то он не заработал должным образом, плата все еще валяется где то в ящике, как нибудь снова надо взяться за него. Честно говоря, у меня до сих пор валяются три залоченных микроконтроллера, две меги48 и одна мега8, однажды мегу 8ю, которая перестала определяться в программаторе PonyProg (работает через COM порт) я восстановил собрав программатор STK200. Притом знаете ли, свой первый купленный микроконтроллер я прошил с первого раза, и он до сих пор работает у меня в лабораторном блоке питания.
Как прошить микроконтроллер AVR? Именно этим мы и займемся в этой статье.
Что такое “прошить” и “прошивка”?
Давайте первым делом определимся, что означает слово “прошить”? Думаю, вы часто слышали такие словосочетания, как “прошить телефон”, “слетела прошивка”, “кривая прошивка” и тд. А что такое “прошивка”?
Прошивка – это грубо говоря, операционная система для маленьких устройств, таких как мобильный телефон, MP3-плеер, цифровой фотоаппарат и тд. То есть это небольшая программка, которая управляет этим устройством. Также часто можно услышать и такое:” У меня “глючит” сотовый телефон, его надо срочно “перепрошить“.
В данном случае это означает, что надо заново установить операционную систему на мобильный телефон. Значит, “прошить МК” означает закачать во внутрь него программу, которая бы управляла этим МК, а МК уже управлял бы каким-нибудь устройством. То есть по идее, МК – это посредник между программой и каким-либо устройством, которым надо управлять 😉
Оборудование для прошивки МК
Итак, что нам потребуется, чтобы прошить МК?
- Cам микроконтроллер.
- Компьютер, с заранее установленным программным обеспечением (ПО).
- Программатор.
- Несколько джамперов.
- Макетная плата. Я бы порекомендовал сразу купить набор для начинающего AVRщика. Этот набор питается от USB.
- Прямые руки, растущие из нужного места.
Мы с вами договорились использовать МК Atiny2313 в корпусе DIP-20:
Подготовка МК к прошивке
В прошлых статьях мы с вами рассматривали программатор Громова. Главный его минус в том, что нам требуется COM-порт, который с трудом можно сейчас найти в компьютере, а разъем USB зато есть на каждом компьютере. Поэтому, было принято решение о покупке самого дешевого USB программатора для AVR МК. Называется такой программатор USBASP и выглядит он примерно вот так
Если хорошенько порыться на Али, то можно найти очень сладкую цену на такой программатор. Например, здесь . Может быть найдете даже дешевле. Если будете брать у другого продавца, то внимательно смотрите, чтобы его надписи и радиоэлементы располагались именно так, как у меня на фото. В среднем его цена на момент написания статьи около 120 рублей. Такой программатор в корпусе обойдется чуток подороже.
Вот его вид сзади:
Его рабочий разъем выглядит примерно вот так:
С программатором также в придачу идет шлейф
который одним концом цепляется к рабочему разъему программатора:
Другой конец шлейфа мы будем цеплять к МК.
Если внимательно присмотреться, то можно узнать, какой вывод в разъеме является первым. Стрелка укажет на первый вывод разъема:
После того, как узнали, где находится первый вывод, можно без труда определить остальные выводы:
Дальше берем макетную плату с установленным на ней МК Tiny2313:
Итак, наша задача – соединить выводы МК с выводами программатора.
Для этого в разъем шлейфа втыкаем провода в гнезда MOSI, RST, SCK, MISO, VTG (VCC), GND. GND я взял 10 гнездо, можно и другое, где написано GND. Итого 6 проводков-джамперов:
Далее качаем даташит на наш МК. В данном случае у нас Tiny2313. Ищем в даташите лист с его цоколевкой:
VTG (он же VCC) цепляем к 20 ножке МК
SCK(UCSK) цепляем на 19 ножку МК
MISO цепляем к 18 ножке МК
MOSI на 17 ножку
GND на 10 ножку
RST на первую ножку
Должно получиться как-то вот так:
После первого включения программатора в разъем USB ПК, Диспетчер устройств нам выдаст новое устройство:
Не пугаемся, качаем вот этот архивчик, распаковываем его и указываем путь на него при установке “дров”. Когда “дровишки” на программатор установятся, то мы увидим что-то типа этого:
Все ОК, программатор готов к бою.
В этом же архиве находим папку “avrdudeprog”, открываем ее, находим там исполняемый файл AVRDUDEPROG и запускаем. Это и есть программная оболочка для прошивки МК с помощью нашего программатора.
Она выглядит вот так. Не забываем выбрать наш МК в списке.
Для того, чтобы прошить МК, нам надо выбрать файл с расширением HEX. Итак, вот мой файлик. Первым делом я нажимаю кнопочку “Стереть все”. А вдруг кто-то уже использовал МК и там залита уже какая-нибудь программа? Поэтому, перед прошивкой стираем память МК. Если “стирка” прошла удачно, то программка выдаст нам примерно такое сообщение:
Прошиваем МК AVR
Нажимаем на кнопку выбора файла:
А теперь выбираем наш файл “Lesson 1.hex” . Это и есть наша программа.
А теперь жмем кнопочку “Программирование”
После того, как все прошло удачно, высветится что-то типа этого:
Но это еще не все! Как вы помните, в прошлой статье мы выставили частоту кварца 8 Мегагерц. Чтобы не было неразберихи, нам эту частоту теперь надо поделить на 8. Для этого существует фьюз, который делит тактовую частоту именно на 8. Ставим маркер на “прямые фьюзы”, потом ставим галочку на CKDIV.
После того, как сделали эти два шага, нажимаем на кнопку “Программирование”:
Проверяем МК в железе
Теперь собираем нашу схемку, о которой говорилось еще в прошлой статье:
и наслаждаемся результатом:
Прошить микроконтроллер, значит скопировать в него программу. Загрузить программу можно через специальное устройство — программатор. Программаторы бывают разных типов, нас интересуют те, которые умеют прошивать AVR микроконтроллеры фирмы atmel, тип ATmega.
Программаторы различаются по способу подключения к компьютеру — LPT, COM, USB. Раньше у меня был стационарный компьютер и я пользовался LPT программатором (на фото слева). Затем мне понадобился USB программатор, я взял самый дешевый программатор фирмы POLOLU (на фото в центре). Он отработал больше 2х лет. К сожалению в нем не было защиты от переполюсовки и в один прекрасный момент это произошло. Я долго думал по поводу выбора нового программатора в итоге взял AVRISP mkII, в итоге он меня полностью устраивает (на фото справа). Вот так они выглядят.
Итак перед тем как прошить микроконтроллер у вас должен быть программатор. Подключение программатора к микроконтроллеру зависит от типа программатора. Мой LPT программатор подключался через разъем с 10 штырьками, USB 6 — штырьков.
Скачиваем документацию на нужный нам микроконтроллер, например это ATmega8. Ищем аналогичные ножки у микроконтроллера и соединяем их. На ножку VCC нужно подать напряжение +5В, GND «земля» или минус питания (не путать с -5В).
Спаяли схему, теперь устанавливаем CodeVision AVR. С его помощью мы будем писать и компилировать программу, затем прошивать микроконтроллер.Допустим программу вы написали, скомпилировали. Выбираем свой программатор в меню Settings-Programmer
Заходим в меню прошивки чипа Tools-Chip Programmer
В появившемся окне щелкаем Read — Chip Signature
Если вы все делали правильно появится окно с информацией о цифровой подписи нашей ATmega8. Если у вас оно не появилось проверьте поступает ли питание 5В на ваши микроконтроллер и правильно ли вы все подсоединили. Нельзя также исключать, что новый, только из магазина микроконтроллер не исправен, такие случаи у меня были.
Если у вас была записана уже какая то информация то стереть ее можно командой Program — Erase Chip
Теперь мы готовы прошивать наш микроконтроллер. Если вы пока не знаете что такое Fuse Bit то рекомендую прошивать без них, т.е. Program Fuse Bit галочка должна быть снята, либо прошивать можно только Flash память командой Program-Flash.
Все на этом процесс прошивки окончен. Вопросы можно задать на форуме
19 комментариев: Как прошить AVR микроконтроллер
а прочитать микроконтроллер Можно ? И какая окошка выходит если контроллер защищена