В прошлой статье у нас появился USB программатор — USBtiny. В этой статье я расскажу как очень просто прошивать микроконтроллеры через этот программатор. USBtiny поддерживается программой AVRdude, а это очень облегчает нам задачу.
AVRdude консольная программа, что, несомненно, является ее плюсом, так как позволяет очень гибко себя использовать. Но консольные программы не очень удобны, так как нуждаются в прописывании длинных строк-ключей для задания всех необходимых для программирования параметров (а некоторые, например фьюзы, предварительно нужно еще и высчитать). Частично эту проблему можно решить прописыванием батников под каждое устройство (что я и планировать, поначалу, делать), но теряется гибкость и очень сложно работать с ошибками. Решение этой проблемы — GUI — графические оболочки для AVRdude. Их существует немало! Но мне очень понравилась оболочка SinaProg.
SinaProg очень приятная в использовании программа. Я думал, что проще UniProf программатора быть не может. Oказывается — может! Не смотря на простоту и доступность SinaProg, автор сохранил всю гибкость AVRdude и возможность тюнинговать саму SinaProg под свой вкус (например, можно запросто русифицировать описание фьюзов, создать свои пресеты и т.д.). Программа портативна — работает с любого места (как я люблю :)). SinaProg уже имеет в своем составе AVRdude — отдельно устанавливать не нужно. Из недостатков, пожалуй, можно отметить размер программы — чуть больше 20мБт (10 в архиве).
Программируем при помощи SinaProg.
Честно говоря, описывать процесс программирования через SinaProg просто нет смысла. Любой запустивший программу сразу поймет, что к чему. Вникать в подробности тонкой настройки я не буду — вещь не особо нужная, в данной ситуации — все и так хорошо работает. Рекомендую использовать для USBtiny-программатора версию 1.3.5.6. На данный момент есть несколько более новых версий и они тоже хорошо работают с USBtiny, но лишние настройки будут мешать.
После запуска программы мы увидим главное окно.
Сверху-вниз:
— окошко выбора пути и имени для HEX-файла;
— окошко системных сообщений;
— стрелочка вправо показывает/ прячет окно с логом сообщений от AVRdude (обычно не востребовано, но если появляются проблемы — открываем и смотрим что об этом «говорит» AVRdude;
— прогресс-бар — отображает процесс работы с микроконтроллером;
— поле работы с Flash-памятью микроконтроллера. Программирование, проверка (сравнивается содержимое памяти с HEX-файлом) и чтение (до процедуры чтения должен быть выбран HEX-файл в верхним окошке — в противном случае быдет выдаватся ошибка);
— поле работы с EEPROM-памятью — аналогично Flash;
— поле выбора микроконтроллера — в выпадающем списке выбираем микроконтроллер с которым будет работать программатор, кнопка «Search» запускает процесс проверки соответствия выбранного микроконтроллера подключенному (полезно для проверки работоспособности цепочки программатор-шлейф-микроконтроллер);
— работа с фьюзами. Окошко пресетов и кнопку «Program» не трогаем — это для работы с пресетами. Захотите использовать — нужно будет вручную прописывать эти самые пресеты — оно Вам нада? Кнопка «Advanced…» открывает окно установки фьюзов;
— поле выбора программатора. В выпадающем списке выбираем USBtiny, порт будет без вариантов USB. В новых версиях SinaProg есть возможность выбора различных портов и скорости работы с ними, но по факту все работает одинаково при любых настройках (недоработка программы?).
«Advanced…» окно работы с фьюзами.
Окно очень информативно. Содержит сигнатуру микроконтроллера (Device Signature), калибрационное значение для генератора (Calibration), и собственно, сами фьюз-биты, разбитые на четыре байта (Lock Bits, High Fuse, Low Fuse, Ext. Fuse). При открытии окна данные автоматически считываются с микроконтроллера.
Запись фьз-бит возможна в двух вариантах:
1 Записью в соответствующие окошки значений всего байта (шестнадцатеричные числа).
Этот способ более удобен (безопасен) если Вы повторяете готовое устройство и у Вас есть эти значения.
Впредь я постараюсь не забывать выкладывать эти значения вместе с прошивкой для своих устройств.
2 При помощи фьюз-калькулятора. Удобно если Вы создаете свое устройство и необходимо задать нужный Вам режим работы микроконтроллера. Для перехода в этот режим жмем «С» возле нужного байта фьзов. Откроется окно калькулятора, где и выбираются нужные режимы работы.
После того как все значения выставлены — жмем «Write».
Нижнее поле не трогаем.
Окно калькулятора фьюз-бит.
В окне в выпадающих списках и чек-боксах выбираем нужный режим, в окошке снизу сразу видим значение всего байта. Когда установка завершена — жмем ОК.
Внимание!
Значения фьюз-бит здесь не как по даташиту, а инверсно.
Галочкой разрешается выбранная функция.
В данном случае это логично, если воспринимать калькулятор как настройщик конфигурации микроконтроллера, а не как отображение фьюз-бит. Будьте внимательны — неправильная установка некоторых бит сделает невозможным дальнейшее использование микроконтроллера.
Процедура программирования проста:
— включаем программатор USBtiny в USB (драйвер уже должен быть установлен);
— подключаем программатор USBtiny к программируемому устройству;
— запитываем программируемое устройство (если оно не запитывается от USB);
— запускаем SinaProg, выбираем в окошке программатора «USBtiny», выбираем тип микроконтроллера;
— выбираем HEX-файл прошивки, в поле Flash жмем кнопку «Program» — микроконтроллер прошьется;
— нажимаем «Advanced…» и в новом окне выставляем фьюзы (как описано выше), жмем «Write» — прошиваем фьюзы;
— готово, микроконтроллер прошит. Отключаем питание, отключаем программатор, закрываем программу.
Вот и все описание. Ничего сложного!
Файлы к статье:
SinaProg.zip (9473 Загрузки)
SinaProg 1.5.5.10.zip (13844 Загрузки)
Версия v1.5.5.10 лучше совместима с Win 7
Еще смотрим:
www.microstar.ir — Сайт программы SinaProg. (на момент написания статьи — не работал :()
056-USB-программатор – легко! (USBTiny) — делаем программатор USBtiny.
Пытаюсь записать eeprom на atmega 644pa. Выдаётся ошибка avrdude: verification error, first mismatch at byte 0x0001, 0x00!=0xff content mismatch.
В чём может быть проблема?
Перед записью оно должно само почиститься
Подскажите как можно этой программой очистить кристалл перед записью eeprom?
@GetChiper
писал в командной строке вместо -P com1 -P usb.
При перепрошивке в usb-to-uart отлично работает.
Более подробно написал на форуме — здесь
http://www.forum.getchip.net/viewtopic.php?f=14&t=340
Завтра попробую на нормальном системном блоке подключить к usb, может на ноутбуке на usb не хватает тока? Вольтметром промерил — питание программируемой МК +5.08 В, в момент посыла RESET сигнала — напряжение питания стабильно.
Помогите, пожалуйста, разобраться почему не работает?
com1 — он реально первый? он реально виртуальный?
Попробуйте прошить в этот МК преобразователь USB-UART. Как он заработает?
@fiast
в дополнение
avrdude -C avrdude.conf -c usbtiny -P com1 -p t2313 -q
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.
Здравствуйте,
собрал программатор USBTiny, драйвер установился, устройство увиделось компьютером.
Собрал кабель для программирования attiny, подключил к МК, которую перед этим читал программатором Громова и она успешно читалась, нажимаю в SinaProg кнопку Search — пишет сообщение «Programming failed», хотя вижу, что отправляется на ногу Reset сигнал, МК — перезагружается, сигнальный светодиод в кабеле мигает, но МК не определяется.
В чем может быть причина?
В МК залита тестовая прошивка, и когда он запитан — мигает светодиодом 11 ногой.
Почему не читается МК? На этой же макетной плате программатором Громова все прекрасно пишется/читается программой uniprog.
Всё разобрался! AlexPM большое спасибо!
@cocos17
В последнем официальном релизе avrdude поддерживается около 60-ти типов программаторов. Поищите в файле «avrdude.conf» — если там описан готовый тип, _похожий_ на USBBit (ну или просто попробуйте по очереди все подозрительно похожие на Ваш, пока avrdude не «увидит» чип), его и используйте.
Если из готовых не нашлось ничего, то надо добавить свой тип в конфиг: либо поищите в инете (на тему bit-bang программаторов есть много статей), либо попробуйте из синапроговских конфигов нужную информацию извлечь (это если у Вас Sinaprog через USBBit работает хотя бы с каким-нибудь AVR).
Спасибо за ответ AlexPM, и еще вопросик, будет ли голая Dude работать с моим USBbit это связка FT232 и 74HC244?
@cocos17
Проверьте с какой-нибудь другой, «честной» оболочкой (Синапрог такой не является, т.к.интегрирует в себе патченный avrdude) или даже с голым avrdude. Добавьте к командам волшебный ключик «-F», и тогда можно прошивать как обычную Мегу168, и редактирование конфига НЕ понадобится.
Я прошиваю ATmega168PA-PU довольно часто, связка avrdude+DudeAVR (ссылка на оболочку DudeAVR есть выше), с добавочным ключом «-F» как простую «m168 (ATMEGA168)». Кстати, именно этот случай запечатлён на картинке на стартовой странице сайта DudeAVR, взгляните (http://a-p-matveev.narod.ru/)
Помогите кто знает как прошить ATmega168PA-PU SinaProg_ой, вроде сигнатурный номер у этого чипа другой (X1940B) пробовал менял его в конфиге, но результата нет не находит его Сина.Программатор USBBit.
Вы писали:
опиши пожалуйста как.
@lenivets
можно запросто русифицировать описание фьюзов
Вы писали:
опиши пожалуйста как.
без исходного файла ничего не выйдет…..
я правильно понял….?
Микроконтроллеры AVR (как и любые другие) позволяют установить защиту прошивки.
Причем физически прошивка читается, вот только залоченный микроконтроллер выдает пустую информацию.
Защиту никак не снять — она убирается только полным стиранием всего микроконтроллера.
считывается….. — записываю на другой, не работает, хотя записалось все верно..?
что значит залочена…?
Можно, если прошивка не залочена и если дугой микроконтроллер того-же типа.
можно ли скопировать с ATmega 162 Flash и вставить копию на другой процессор…?
Купил програматор AVR USB USBASP.Кто подскажет надо ли програмировать ATmega8 внутри схемы и закорачивать ли джампер J1.С уважением Виктор.
Интересно, будем наблюдать!
В качестве графической оболочки к avrdude.exe могу предложить DudeAVR (http://a-p-matveev.narod.ru/). Небольшая (т.к. LabView-шную DLL-ку, в отличие от SinaProg, не требует 😉 ), в числе фич — редактирование буферов, автоопределение чипа, и т.д. Я проверял DudeAVR с несколькими программаторами (PonyProg, USBasp) и с разными AVR-ами.
Установил LabView и все заработало. Спасибо V.lab
У меня была аналогичная проблема , решил установкой LabView 8.6 (прочитал где-то у DI HALTа )теперь запускается любая версия SinaProg
Win7 64bit проблемная в этом плане. Режим совместимости не канает?
У меня такая проблема: На настольном компе стоит Win7 32bit, на нетбуке стоит Win7 64bit. Sina Prog ни в какую не хочет запускаться на нетбуке.
На настольном компе прога работает отлично.
В чем может быть проблема?
Если я не ошибаюсь, при записи любой прошивки, синапрог автоматически стирает предыдущую.
Chip Erase — то-же стирает кристалл. Никаких проблем не должно возникать. Может, действительно, с фьюзами проблемы?
Как в Sinaprog стирать старую программу. Свежекупленная Tiny2313 прошилась нормально, девайс заработал. Теперь хочу на той же МК сварганить что-нибудь другое, а как стереть старую прогу не знаю.
Попробовал нажимать Chip Erase, затем залил прогу, прошил фьюзы, проверил в устройстве, результат- ноль, фьюзы вроде выставил верно.
Затем залил старую прогу, т.е ту, которую заливал изначально, все равно
никакой реакции.
пробовал, не заработало. вот еще что заметил: залоченная тини2313 сначала также определилась, а потом вообще видеться перестала.
Походу дудка криво работает со старым микроконтроллером… или сам микроконтроллер проблемный.
Может попробовать другую версию дудки?
нормально шьются и читаются.
А как ведут себя другие микроконтроллеры?
Здравствуйте. При чтении мк AT90S2313 sinaprog пишет:
avrdude -C avrdude.conf -c usbtiny -b 115200 -p 2313 -q
avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x000102
avrdude: Expected signature for AT90S2313 is 1E 91 01
Double check chip, or use -F to override this check.
avrdude done. Thank you.
в чем может быть проблема?
Короче проблема с Синой была. Побробовал связку AVRdude + Burn-O-Mat, всё отлично!!!
Если кому интересно вот ссылка http://hardlock.org.ua/soft/avrdude/
Попробуйте другие версии сины + другой микроконтроллер — мало-ли…
Да, выставлен как USBTiny, в диспетчере определён как устройство LibUSB-Win32 Devices и называется USBtinyISP AVR Programmer. Контроллер tiny13. на другом программаторе работает.
А можно как то с этим программатором работать в CodeVisionAVR?
У меня подозрение, что SinaProg какая то битая, потому что SinaProg v1.3.5.6 из статьи вообще не запустилась, написала, что приложение дало ошибку и будет закрыто, отправлять отчёт на майкрософт… и т.д.
Программатор в сине выставлен как USBTiny?
В сети есть предыдущие версии Сины — можно попробовать ими.
меги48 шил много раз — проблем не было. Может сам контроллер сбойный?
в чем может быть проблема?
Пользуюсь синапрог 2,0 пытался зашить контроллер мега48 в соик корпусе при попытке прошить фьюзы ни чего не открывается. изначально пробовал прошить при помоши проггера громова в юнипрофе но контроллер не определялся ни в какую программа сама предлагала ( выводила список) я щелка мега48 заливал пришивку выстовлял фьюзы далее микросхема лочилась ??? и на этом все заканчивалось, востанавливал мегу в докторе все ок при попытке прошить все проблемы повторялись. с другими контроллерами такого не наблюдалось. (тини 13, 2313, мега8)
Может есть у кого версия SinaProg что наверняка работала?
Подскажите. Установил драйвера на программатор avrtiny из статьи 056-USB-программатор – легко! (USBTiny). Всё определилось, в диспетчере устройств тоже всё нормально. Запускаю прогу SinaProg v1.5.5.10 с этой страницы, а она при нажатии на Search выдаёт:
avrdude -C avrdude.conf -c usbtiny -p t13 -q
avrdude: Error: Could not find USBtiny device (0x1781/0xc9f)
avrdude done. Thank you.
Что делать, куда рыть?
Просто то просто,только фьюзы выставлять не очень удобно.Я привык к PonyProg,а тут непонятно что ставить.
SinaProg описанный в этой статье как раз самое то — функционально и просто.
А с какими программами программатор может работать,только попроще,т.к.МК начал недавно заниматься.Много чего не знаю.
avr8-burn-o-mat запускал как то, но никогда особо в нем не ковырялся. Может попробовать другую версию?
Евгений,Вы не знаете как настроить avr8-burn-o-mat.Почему то строчка выбора программатора не активна.Поэтому не могу выбрать программатор.
спасибо, заработало.