057-Программируем AVR-микроконтроллеры USBtiny + AVRdude + SinaProg.

Автор: | 13.10.2010

В прошлой статье у нас появился 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 v1.3.5.6 - Графический интерфейс для AVRdude
SinaProg v1.5.5.10 - Графический интерфейс для AVRdude
Версия v1.5.5.10 лучше совместима с Win 7

Еще смотрим:
www.microstar.ir
— Сайт программы SinaProg. (на момент написания статьи — не работал :()
056-USB-программатор – легко! (USBTiny) — делаем программатор USBtiny.

(Visited 6 875 times, 1 visits today)

057-Программируем AVR-микроконтроллеры USBtiny + AVRdude + SinaProg.: 99 комментариев

  1. janvano

    Большая просьба про **выпадающих списках и чек-боксах выбираем нужный режим** по подробней,а то я только осваиваю МК и не все понятно? что там за режимы,заранее спасибо.
    Я собрал USB программатор – USBtiny и прошиваю ей(SinaProg v1.3.5.6 ) тестовые прошивки для ATMega48 и ATTiny2313 и ноль эмоций, подозреваю что в фьз-бит я не выставляю как надо.И про SPIEN,RSTDISBL и DWEN читал,учел момент .

  2. janvano

    Внимание!
    Значения фьюз-бит здесь не как по даташиту, а инверсно.

  3. GetChiper Автор записи

    janvano :

    Я собрал USB программатор – USBtiny и прошиваю ей(SinaProg v1.3.5.6 ) тестовые прошивки для ATMega48 и ATTiny2313 и ноль эмоций, подозреваю что в фьз-бит я не выставляю как надо.И про SPIEN,RSTDISBL и DWEN читал,учел момент .

    При нажатии на «Search» микроконтроллер находится?
    (Сообщение «Searching … OK» появляется?)

  4. GetChiper Автор записи

    janvano :

    Большая просьба про **выпадающих списках и чек-боксах выбираем нужный режим** по подробней,а то я только осваиваю МК и не все понятно? что там за режимы,заранее спасибо.

    У каждого микроконтроллера есть 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.
    И так далее.
    Может статью написать с описаниями фьюзов хотя-бы для микроконтроллеров блога? Но в даташитах это все и так описано …

  5. GetChiper Автор записи

    janvano :

    вот нашел калькулятор фьз-бит может кому понадобится http://www.engbedded.com/fusecalc

    Подобный этому калькулятор «вшит» в SinaProg — что и удобно!

  6. GetChiper Автор записи

    По скринам все нормально читается и пишется. Фьюзы выставлены правильно.
    Сейчас залью тестовую прошивку из статьи 022 в свой микроконтроллер через синапрог — проверю.

    Проверил — прошивка работает.

    P.S. На скринах нет лога программирования (создается при программировании — нажатие на Flash «Program»), но судя по скрину верификации Вы, все же, запрограммировали микроконтроллер раньше.

    P.P.S. Скачайте файл тестовой прошивки с сайта еще раз и прошейте им микроконтроллер (по логам похоже Вы сначала прочитали в файл прошивки 022M48.hex содержимое чистого микроконтроллера, а после залили эту «чистую» прошивку назад в микроконтроллер).

  7. janvano

    OK разобрался да я сначала прочитал потом залил в Flash.Сейчас все заработала спасибо за потраченное на меня время.

  8. GetChiper Автор записи

    Всегда рад помочь, в меру своих возможностей 🙂

  9. spas1

    всем привет! а кто нить собирал программатор на базе FT232RL

  10. vpashko

    Здравствуйте, при нажатии на «Search» где должно появиться сообщение «Searching … OK».

  11. vpashko

    vpashko :
    Здравствуйте, при нажатии на «Search» где должно появиться сообщение «Searching … OK», и какая роль джампера JP5.

  12. GetChiper Автор записи

    «Searching … OK» появляется в информационном окошке над полоской прогресса.

    Джампер JP5 в оригинальной схеме установлен для программирования самого контроллера USBtiny (замыкаешь и прошиваешь другим программатором).

  13. vpashko

    Спасибо за ответ еще вопрос, на схеме два кандера на 18pF в точке их соединения стоит знак минуса, так их на минус не надо а на XTAL1 прошиваемого МК???

  14. boba.s

    конденсатор одним выводом к кварцу другим на землю

  15. vpashko

    Спасибо за ответы, как говорится схема из тех разрядов: спаял-включил-работай.Как-то непривычно фузы выставлять, в программе UniProf как-то проще, но это лично мое мнение, да, нужно привыкнуть.

  16. ewgen40477

    Евгений,а как руссифицировать SinaProg?

  17. vpashko

    ewgen404, да русик… особо и не нужен:
    Процедура программирования проста:
    – включаем программатор USBtiny в USB (драйвер уже должен быть установлен);
    – подключаем программатор USBtiny к программируемому устройству;
    – запитываем программируемое устройство (если оно не запитывается от USB);
    – запускаем SinaProg, выбираем в окошке программатора «USBtiny», выбираем тип микроконтроллера;
    – выбираем HEX-файл прошивки, в поле Flash жмем кнопку «Program» — микроконтроллер прошьется;
    – нажимаем »Advanced…» и в новом окне выставляем фьюзы (как описано выше), жмем «Write» – прошиваем фьюзы;
    – готово, микроконтроллер прошит. Отключаем питание, отключаем программатор, закрываем программу.
    Вот и все описание. Ничего сложного!

  18. ewgen40477

    Да это я так для себя)),а вот еще,сделал все как Вы описали выше,через пару секунд пишет все ОК!,переключаюсь на другой программатор,открываю BasComAVR,читаю контроллер,он пустой,из за чего может не происходить запись в МК в SinaProg и как проверить что все записалось,там вроде жму кнопочки Read, Verify,пишет везде ОК!,подскажи где каплуть.

  19. GetChiper Автор записи

    В синапрог фьюзы ставятся инверсно.

  20. pazak

    В описании работы с программой написано: чтение (до процедуры чтения должен быть выбран HEX-файл в верхним окошке – в противном случае быдет выдаватся ошибка);
    Допустим у есть МК с программой которую я хочу скопировать в другой МК, что я должен сделать? Создать пустой НЕХ-файл и туда скопировать прошивку? PonyProg позволяет считать прошивку из МК и сохранить в любую папку в виде НЕХ-файла. А эта программа может такое?

    С уважением.

  21. GetChiper Автор записи

    Имеется в виду, что в окошке должно стоять имя файла в который запишется прошивка. Если файла с таким именем нет — он создастся.
    Поэтому, если Вы хотите сохранить содержимое микроконтроллера в файл, задайте его название в окошке и жмите «Read».

  22. boba.s

    что то у меня не получилось

  23. pazak

    А что у Вас не получилось? У меня получилось, но не известно расширение файла, и сама Sina не видит сохранённый файл, не говоря о других программах.

  24. GetChiper Автор записи

    Имя файла нужно задать с расширением HEX.
    Например: С:\Temp\myflash.hex
    Файл myflash.hex создастся на диске С в папке Temp

  25. Alexokrat

    Есть тут добродеятели?

    Помогите с такой фичей. Надо на Тини 2313 убрать фьюз CKDIV8 , где и как?

    Если можно с скринами)

  26. Alexokrat

    Дык , программатор у меня USB )

  27. GetChiper Автор записи

    Ясно. Тогда так:
    — запускаешь синапрог, подключаешь микроконтроллер;
    — выставляешь программатор (окно «Programer»), кнопкой «Search» находишь кристалл;
    — жмешь «Advanced…», жмешь «Read», в окошке «Low Fuse» жмешь «C»
    — в открывшемся окне и будет тот самый CKDIV8;
    — меняешь галочку, жмешь «OK», жмешь «Write»
    — все.

  28. Alexokrat

    Спасибо , рад что тут есть толковые люди)

  29. geovas

    Скачал я SinaProg, а он партизан под семеркой x64 даже не запустился 🙁 Может есть альтернатива?? Очень хочу опробовать AVRdude!

  30. GetChiper Автор записи

    Под AVRdude есть куча ГУИ — ищи поисковиком и пробуй — что-то подойдет.

  31. geovas

    Поспешил я с выводами… SinaProg версии 1.55 легко запустился на семерке!

  32. GetChiper Автор записи

    Надо будет выложить и 1.55. Ранее смотрел — решил, что ничего нового.

  33. Андрей

    Доброго….. подскажите плиз, у меня на 7ке перестала запускаться именно версия 1.55 ((( в чём может быть проблема? вот что выдаёт:
    Имя события проблемы: APPCRASH
    Имя приложения: SinaProg.exe
    Версия приложения: 1.5.0.0
    Отметка времени приложения: 4c24e8f5
    Имя модуля с ошибкой: lvrt.dll

  34. GetChiper Автор записи

    Попробуй скачать поновой. А предыдущая версия как себя ведет?

  35. geovas

    У меня кстати с этой SinaProg начались проблемы под XP (под семеркой тоже были, но я от них как-то избавился). Под XP SinaProg не работает с программатором AVRISP MK_II, выдает ошибку: avrdude: usbdev_open(): did not find any USB device «usb». В чем может быть проблема? в AVR Studio — все хорошо.

  36. GetChiper Автор записи

    Похоже AVRDUDE не видит программатора. Можно попробовать повтыкать в разные USB порта. Можно скачать последний AVRDUDE и подменить у Сины.

  37. Sonmor

    Здраствуйте, я хотел узнать. я запускал Sinaprog, пытался прошить Тини 2313 , программатор STK200, LPT порт, И у меня высвечивается такое сообщение can’t open port, почему он не может открыть порт??

  38. GetChiper Автор записи

    Возможно в биосе отключен LPT — нужно его разрешить.
    Еще в биосе возможна установка режима работы LPT — попробуйте поменять
    А LPT вообще работал?
    Можно «попробовать» LPT при помощи UniProf http://www.getchip.net/posts/027-uniprof-programmiruem-avr-cherez-lpt-port/ (можно попробовать и прошить, только нужно правильно настроить LPT pins в программе)

  39. anatoliy

    Внесу свои пять копеек опыта
    Я использую в связке с AVRdude GUI avr8-burn-o-mat
    Имею следующие преимущества:
    Кроссплатформенность работает win,unix(даже под КПК)
    Опасные биты конфигурации выделены красным. И постоянно спрашивает вы уверены что вам надо это трогать ато МК залочите.
    Простой интерфейс конфигурирования. Поставил чекбоксов что надо а фьюсы сама прога сгенерировала.
    Расширенные коментарии что каждый конфиг делает.
    Для прошивки фьюзов это то что доктор прописал.

  40. GetChiper Автор записи

    Прикольная програмулина нужно будет поковыряться…

  41. xaker-man

    А у меня тут беда появилась.
    Скачал 1.5.5.1 он заработал, но вот
    http://xaker-man.narod.ru/usbtiny.JPG
    почему там lpt1
    версия 1.3.5.6 не запускается, 1.4… тоже не фурычит. прога почему то только с одного места работает.

  42. GetChiper Автор записи

    Странный глюк. А если снова скачать копию и запустить с другого места?

  43. V.lad

    Дело в том что в папке версии 1.3.5.6 в файле Port.txt есть строчка USBtiny.
    [USB x]
    а в версии 1.5.5.10 её нет, но там есть дефолт с перечислением портов поэтому прога берет любой наугад (у меня например был COM1) если раздражает пропишите в файле Port.txt
    USBtiny.
    [USB x]
    обязательно с точкой и будет вам счастье.

Добавить комментарий