В прошлой статье у нас появился 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 (9364 Загрузки)
SinaProg 1.5.5.10.zip (13482 Загрузки)
Версия v1.5.5.10 лучше совместима с Win 7
Еще смотрим:
www.microstar.ir — Сайт программы SinaProg. (на момент написания статьи — не работал :()
056-USB-программатор – легко! (USBTiny) — делаем программатор USBtiny.
Дело в том что в папке версии 1.3.5.6 в файле Port.txt есть строчка USBtiny.
[USB x]
а в версии 1.5.5.10 её нет, но там есть дефолт с перечислением портов поэтому прога берет любой наугад (у меня например был COM1) если раздражает пропишите в файле Port.txt
USBtiny.
[USB x]
обязательно с точкой и будет вам счастье.
Странный глюк. А если снова скачать копию и запустить с другого места?
А у меня тут беда появилась.
Скачал 1.5.5.1 он заработал, но вот
http://xaker-man.narod.ru/usbtiny.JPG
почему там lpt1
версия 1.3.5.6 не запускается, 1.4… тоже не фурычит. прога почему то только с одного места работает.
Прикольная програмулина нужно будет поковыряться…
Внесу свои пять копеек опыта
Я использую в связке с AVRdude GUI avr8-burn-o-mat
Имею следующие преимущества:
Кроссплатформенность работает win,unix(даже под КПК)
Опасные биты конфигурации выделены красным. И постоянно спрашивает вы уверены что вам надо это трогать ато МК залочите.
Простой интерфейс конфигурирования. Поставил чекбоксов что надо а фьюсы сама прога сгенерировала.
Расширенные коментарии что каждый конфиг делает.
Для прошивки фьюзов это то что доктор прописал.
Возможно в биосе отключен LPT — нужно его разрешить.
Еще в биосе возможна установка режима работы LPT — попробуйте поменять
А LPT вообще работал?
Можно «попробовать» LPT при помощи UniProf http://www.getchip.net/posts/027-uniprof-programmiruem-avr-cherez-lpt-port/ (можно попробовать и прошить, только нужно правильно настроить LPT pins в программе)
Здраствуйте, я хотел узнать. я запускал Sinaprog, пытался прошить Тини 2313 , программатор STK200, LPT порт, И у меня высвечивается такое сообщение can’t open port, почему он не может открыть порт??
Похоже AVRDUDE не видит программатора. Можно попробовать повтыкать в разные USB порта. Можно скачать последний AVRDUDE и подменить у Сины.
У меня кстати с этой SinaProg начались проблемы под XP (под семеркой тоже были, но я от них как-то избавился). Под XP SinaProg не работает с программатором AVRISP MK_II, выдает ошибку: avrdude: usbdev_open(): did not find any USB device «usb». В чем может быть проблема? в AVR Studio — все хорошо.
Попробуй скачать поновой. А предыдущая версия как себя ведет?
Доброго….. подскажите плиз, у меня на 7ке перестала запускаться именно версия 1.55 ((( в чём может быть проблема? вот что выдаёт:
Имя события проблемы: APPCRASH
Имя приложения: SinaProg.exe
Версия приложения: 1.5.0.0
Отметка времени приложения: 4c24e8f5
Имя модуля с ошибкой: lvrt.dll
Надо будет выложить и 1.55. Ранее смотрел — решил, что ничего нового.
Поспешил я с выводами… SinaProg версии 1.55 легко запустился на семерке!
Под AVRdude есть куча ГУИ — ищи поисковиком и пробуй — что-то подойдет.
Скачал я SinaProg, а он партизан под семеркой x64 даже не запустился 🙁 Может есть альтернатива?? Очень хочу опробовать AVRdude!
Спасибо , рад что тут есть толковые люди)
Ясно. Тогда так:
— запускаешь синапрог, подключаешь микроконтроллер;
— выставляешь программатор (окно «Programer»), кнопкой «Search» находишь кристалл;
— жмешь «Advanced…», жмешь «Read», в окошке «Low Fuse» жмешь «C»
— в открывшемся окне и будет тот самый CKDIV8;
— меняешь галочку, жмешь «OK», жмешь «Write»
— все.
Дык , программатор у меня USB )
Вот в статье http://www.getchip.net/posts/028-uniprof-programmiruem-avr-cherez-com-port/ описано как UiProfom программировать, там и про фьюзы написано и картинка есть с CKDIV8
Есть тут добродеятели?
Помогите с такой фичей. Надо на Тини 2313 убрать фьюз CKDIV8 , где и как?
Если можно с скринами)
Имя файла нужно задать с расширением HEX.
Например: С:\Temp\myflash.hex
Файл myflash.hex создастся на диске С в папке Temp
А что у Вас не получилось? У меня получилось, но не известно расширение файла, и сама Sina не видит сохранённый файл, не говоря о других программах.
что то у меня не получилось
Имеется в виду, что в окошке должно стоять имя файла в который запишется прошивка. Если файла с таким именем нет — он создастся.
Поэтому, если Вы хотите сохранить содержимое микроконтроллера в файл, задайте его название в окошке и жмите «Read».
В описании работы с программой написано: чтение (до процедуры чтения должен быть выбран HEX-файл в верхним окошке – в противном случае быдет выдаватся ошибка);
Допустим у есть МК с программой которую я хочу скопировать в другой МК, что я должен сделать? Создать пустой НЕХ-файл и туда скопировать прошивку? PonyProg позволяет считать прошивку из МК и сохранить в любую папку в виде НЕХ-файла. А эта программа может такое?
С уважением.
В синапрог фьюзы ставятся инверсно.
Что-то с фьюзами не понимаю, как их надо устанавливать для тестовой прошивки: http://getchip.net/wp-content/uploads/022-T13FuseBits.png
Я программатор SinaProg сделал на всякий пожарный, а вообще пользуюсь UniProf, свой вопрос спросите у автора стати или может здесь что то найдешь http://easyelectronics.ru/sinaprog-graficheskaya-obolochka-dlya-avrdude.html
Да это я так для себя)),а вот еще,сделал все как Вы описали выше,через пару секунд пишет все ОК!,переключаюсь на другой программатор,открываю BasComAVR,читаю контроллер,он пустой,из за чего может не происходить запись в МК в SinaProg и как проверить что все записалось,там вроде жму кнопочки Read, Verify,пишет везде ОК!,подскажи где каплуть.
ewgen404, да русик… особо и не нужен:
Процедура программирования проста:
– включаем программатор USBtiny в USB (драйвер уже должен быть установлен);
– подключаем программатор USBtiny к программируемому устройству;
– запитываем программируемое устройство (если оно не запитывается от USB);
– запускаем SinaProg, выбираем в окошке программатора «USBtiny», выбираем тип микроконтроллера;
– выбираем HEX-файл прошивки, в поле Flash жмем кнопку «Program» — микроконтроллер прошьется;
– нажимаем »Advanced…» и в новом окне выставляем фьюзы (как описано выше), жмем «Write» – прошиваем фьюзы;
– готово, микроконтроллер прошит. Отключаем питание, отключаем программатор, закрываем программу.
Вот и все описание. Ничего сложного!
Евгений,а как руссифицировать SinaProg?
Спасибо за ответы, как говорится схема из тех разрядов: спаял-включил-работай.Как-то непривычно фузы выставлять, в программе UniProf как-то проще, но это лично мое мнение, да, нужно привыкнуть.
конденсатор одним выводом к кварцу другим на землю
Спасибо за ответ еще вопрос, на схеме два кандера на 18pF в точке их соединения стоит знак минуса, так их на минус не надо а на XTAL1 прошиваемого МК???
«Searching … OK» появляется в информационном окошке над полоской прогресса.
Джампер JP5 в оригинальной схеме установлен для программирования самого контроллера USBtiny (замыкаешь и прошиваешь другим программатором).
Здравствуйте, при нажатии на «Search» где должно появиться сообщение «Searching … OK».
всем привет! а кто нить собирал программатор на базе FT232RL
Всегда рад помочь, в меру своих возможностей 🙂
OK разобрался да я сначала прочитал потом залил в Flash.Сейчас все заработала спасибо за потраченное на меня время.
По скринам все нормально читается и пишется. Фьюзы выставлены правильно.
Сейчас залью тестовую прошивку из статьи 022 в свой микроконтроллер через синапрог — проверю.
Проверил — прошивка работает.
P.S. На скринах нет лога программирования (создается при программировании — нажатие на Flash «Program»), но судя по скрину верификации Вы, все же, запрограммировали микроконтроллер раньше.
P.P.S. Скачайте файл тестовой прошивки с сайта еще раз и прошейте им микроконтроллер (по логам похоже Вы сначала прочитали в файл прошивки 022M48.hex содержимое чистого микроконтроллера, а после залили эту «чистую» прошивку назад в микроконтроллер).
http://www.photoshare.ru/original/photoshare.ru-6319174.jpg
http://www.photoshare.ru/original/photoshare.ru-6319178.jpg
http://www.photoshare.ru/original/photoshare.ru-6319179.jpg
http://www.photoshare.ru/original/photoshare.ru-6319180.jpg
Подобный этому калькулятор «вшит» в SinaProg — что и удобно!
У каждого микроконтроллера есть 4 байта так называемых фьюз бит. Для каждого типа микроконтроллера они разные. Изменяя эти биты мы сообщаем микроконтроллеру о том, как он должен работать (например: работать от внешнего генератора или от внутреннего, использовать ножку сброса как сброс или как еще один порт ввода/вывода, разрешать себя программировать или нет и т.д.)
Все это описано в даташите на каждый микроконтроллер. Соответственно если вы хотите, чтобы микроконтроллер работал от внешнего кварца (по умолчанию, с завода, он работает от внутреннего), то необходимо изменить соответствующие фьюз биты.
В выпадающих списках перечислены возможные конфигурации работы микроконтроллера. В чекбоксах нужно поставить галочку если Вы хотите задействовать соответствующую опцию.
Например:
Low Fuse — байт для ATtiny2313
Divide clock by 8 internally; [CKDIV8=0]
Деление частоты задающего генератора на 8 (ставим галочку если необходимо уменьшить частоту задающего генератора в 8 раз. Работает как для внутреннего так и для внешнего генератора)
Clock output on PORTD2; [CKOUT=0]
Вывод сигнала задающего генератора на ножку PORTD2 (ставим галочку и получаем источник тактовой частоты, например для синхронизации другого устройства)
Ext. Crystal Osc.; Frequency 3.0-8.0 MHz; Start-up time: 14 CK + 4.1 ms; [CKSEL=1100 SUT=11]
Работа от внешнего задающего кварца с частотой от 3.0 MHz до 8.0 MHz. Время задержки запуска микроконтроллера 14 CK + 4.1 ms.
И так далее.
Может статью написать с описаниями фьюзов хотя-бы для микроконтроллеров блога? Но в даташитах это все и так описано …
вот нашел калькулятор фьз-бит может кому понадобится http://www.engbedded.com/fusecalc
@GetChiper
да появляется
При нажатии на «Search» микроконтроллер находится?
(Сообщение «Searching … OK» появляется?)
Внимание!
Значения фьюз-бит здесь не как по даташиту, а инверсно.
И учел момент с
Большая просьба про **выпадающих списках и чек-боксах выбираем нужный режим** по подробней,а то я только осваиваю МК и не все понятно? что там за режимы,заранее спасибо.
Я собрал USB программатор – USBtiny и прошиваю ей(SinaProg v1.3.5.6 ) тестовые прошивки для ATMega48 и ATTiny2313 и ноль эмоций, подозреваю что в фьз-бит я не выставляю как надо.И про SPIEN,RSTDISBL и DWEN читал,учел момент .