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 7 723 times, 6 visits today)

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

  1. xaker-man

    спасибо, заработало.

  2. Viatka61

    Евгений,Вы не знаете как настроить avr8-burn-o-mat.Почему то строчка выбора программатора не активна.Поэтому не могу выбрать программатор.

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

    avr8-burn-o-mat запускал как то, но никогда особо в нем не ковырялся. Может попробовать другую версию?

  4. Viatka61

    А с какими программами программатор может работать,только попроще,т.к.МК начал недавно заниматься.Много чего не знаю.

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

    SinaProg описанный в этой статье как раз самое то — функционально и просто.

  6. Viatka61

    Просто то просто,только фьюзы выставлять не очень удобно.Я привык к PonyProg,а тут непонятно что ставить.

  7. mcmega

    Подскажите. Установил драйвера на программатор 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.
    Что делать, куда рыть?

  8. mcmega

    Может есть у кого версия SinaProg что наверняка работала?

  9. ximik

    Пользуюсь синапрог 2,0 пытался зашить контроллер мега48 в соик корпусе при попытке прошить фьюзы ни чего не открывается. изначально пробовал прошить при помоши проггера громова в юнипрофе но контроллер не определялся ни в какую программа сама предлагала ( выводила список) я щелка мега48 заливал пришивку выстовлял фьюзы далее микросхема лочилась ??? и на этом все заканчивалось, востанавливал мегу в докторе все ок при попытке прошить все проблемы повторялись. с другими контроллерами такого не наблюдалось. (тини 13, 2313, мега8)

  10. ximik

    в чем может быть проблема?

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

    mcmega :

    Может есть у кого версия SinaProg что наверняка работала?

    Программатор в сине выставлен как USBTiny?
    В сети есть предыдущие версии Сины — можно попробовать ими.

    ximik :

    в чем может быть проблема?

    меги48 шил много раз — проблем не было. Может сам контроллер сбойный?

  12. mcmega

    Да, выставлен как USBTiny, в диспетчере определён как устройство LibUSB-Win32 Devices и называется USBtinyISP AVR Programmer. Контроллер tiny13. на другом программаторе работает.
    А можно как то с этим программатором работать в CodeVisionAVR?
    У меня подозрение, что SinaProg какая то битая, потому что SinaProg v1.3.5.6 из статьи вообще не запустилась, написала, что приложение дало ошибку и будет закрыто, отправлять отчёт на майкрософт… и т.д.

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

    Попробуйте другие версии сины + другой микроконтроллер — мало-ли…

  14. mcmega

    GetChiper :
    Попробуйте другие версии сины + другой микроконтроллер – мало-ли…

    Короче проблема с Синой была. Побробовал связку AVRdude + Burn-O-Mat, всё отлично!!!
    Если кому интересно вот ссылка http://hardlock.org.ua/soft/avrdude/

  15. Karp

    Здравствуйте. При чтении мк 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.

    в чем может быть проблема?

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

    А как ведут себя другие микроконтроллеры?

  17. Karp

    нормально шьются и читаются.

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

    Походу дудка криво работает со старым микроконтроллером… или сам микроконтроллер проблемный.
    Может попробовать другую версию дудки?

  19. Karp

    пробовал, не заработало. вот еще что заметил: залоченная тини2313 сначала также определилась, а потом вообще видеться перестала.

  20. buran

    Как в Sinaprog стирать старую программу. Свежекупленная Tiny2313 прошилась нормально, девайс заработал. Теперь хочу на той же МК сварганить что-нибудь другое, а как стереть старую прогу не знаю.
    Попробовал нажимать Chip Erase, затем залил прогу, прошил фьюзы, проверил в устройстве, результат- ноль, фьюзы вроде выставил верно.
    Затем залил старую прогу, т.е ту, которую заливал изначально, все равно
    никакой реакции.

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

    Если я не ошибаюсь, при записи любой прошивки, синапрог автоматически стирает предыдущую.
    Chip Erase — то-же стирает кристалл. Никаких проблем не должно возникать. Может, действительно, с фьюзами проблемы?

  22. buran

    У меня такая проблема: На настольном компе стоит Win7 32bit, на нетбуке стоит Win7 64bit. Sina Prog ни в какую не хочет запускаться на нетбуке.
    На настольном компе прога работает отлично.
    В чем может быть проблема?

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

    Win7 64bit проблемная в этом плане. Режим совместимости не канает?

  24. V.lad

    У меня была аналогичная проблема , решил установкой LabView 8.6 (прочитал где-то у DI HALTа )теперь запускается любая версия SinaProg

  25. buran

    Установил LabView и все заработало. Спасибо V.lab

  26. AlexPM

    В качестве графической оболочки к avrdude.exe могу предложить DudeAVR (http://a-p-matveev.narod.ru/). Небольшая (т.к. LabView-шную DLL-ку, в отличие от SinaProg, не требует 😉 ), в числе фич — редактирование буферов, автоопределение чипа, и т.д. Я проверял DudeAVR с несколькими программаторами (PonyProg, USBasp) и с разными AVR-ами.

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

    Интересно, будем наблюдать!

  28. LVV

    Купил програматор AVR USB USBASP.Кто подскажет надо ли програмировать ATmega8 внутри схемы и закорачивать ли джампер J1.С уважением Виктор.

  29. vollodkin

    можно ли скопировать с ATmega 162 Flash и вставить копию на другой процессор…?

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

    Можно, если прошивка не залочена и если дугой микроконтроллер того-же типа.

  31. vollodkin

    что значит залочена…?

  32. vollodkin

    считывается….. — записываю на другой, не работает, хотя записалось все верно..?

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

    Микроконтроллеры AVR (как и любые другие) позволяют установить защиту прошивки.
    Причем физически прошивка читается, вот только залоченный микроконтроллер выдает пустую информацию.
    Защиту никак не снять — она убирается только полным стиранием всего микроконтроллера.

  34. vollodkin

    без исходного файла ничего не выйдет…..
    я правильно понял….?

  35. lenivets

    Вы писали:

    опиши пожалуйста как.

  36. lenivets

    @lenivets
    можно запросто русифицировать описание фьюзов

  37. lenivets

    Вы писали:
    опиши пожалуйста как.

  38. cocos17

    Помогите кто знает как прошить ATmega168PA-PU SinaProg_ой, вроде сигнатурный номер у этого чипа другой (X1940B) пробовал менял его в конфиге, но результата нет не находит его Сина.Программатор USBBit.

  39. AlexPM

    @cocos17
    Проверьте с какой-нибудь другой, «честной» оболочкой (Синапрог такой не является, т.к.интегрирует в себе патченный avrdude) или даже с голым avrdude. Добавьте к командам волшебный ключик «-F», и тогда можно прошивать как обычную Мегу168, и редактирование конфига НЕ понадобится.
    Я прошиваю ATmega168PA-PU довольно часто, связка avrdude+DudeAVR (ссылка на оболочку DudeAVR есть выше), с добавочным ключом «-F» как простую «m168 (ATMEGA168)». Кстати, именно этот случай запечатлён на картинке на стартовой странице сайта DudeAVR, взгляните (http://a-p-matveev.narod.ru/)

  40. cocos17

    Спасибо за ответ AlexPM, и еще вопросик, будет ли голая Dude работать с моим USBbit это связка FT232 и 74HC244?

  41. AlexPM

    @cocos17
    В последнем официальном релизе avrdude поддерживается около 60-ти типов программаторов. Поищите в файле «avrdude.conf» — если там описан готовый тип, _похожий_ на USBBit (ну или просто попробуйте по очереди все подозрительно похожие на Ваш, пока avrdude не «увидит» чип), его и используйте.
    Если из готовых не нашлось ничего, то надо добавить свой тип в конфиг: либо поищите в инете (на тему bit-bang программаторов есть много статей), либо попробуйте из синапроговских конфигов нужную информацию извлечь (это если у Вас Sinaprog через USBBit работает хотя бы с каким-нибудь AVR).

  42. cocos17

    Всё разобрался! AlexPM большое спасибо!

  43. fiast

    Здравствуйте,
    собрал программатор USBTiny, драйвер установился, устройство увиделось компьютером.
    Собрал кабель для программирования attiny, подключил к МК, которую перед этим читал программатором Громова и она успешно читалась, нажимаю в SinaProg кнопку Search — пишет сообщение «Programming failed», хотя вижу, что отправляется на ногу Reset сигнал, МК — перезагружается, сигнальный светодиод в кабеле мигает, но МК не определяется.

    В чем может быть причина?

    В МК залита тестовая прошивка, и когда он запитан — мигает светодиодом 11 ногой.
    Почему не читается МК? На этой же макетной плате программатором Громова все прекрасно пишется/читается программой uniprog.

  44. fiast

    @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.

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

    com1 — он реально первый? он реально виртуальный?
    Попробуйте прошить в этот МК преобразователь USB-UART. Как он заработает?

  46. fiast

    @GetChiper
    писал в командной строке вместо -P com1 -P usb.
    При перепрошивке в usb-to-uart отлично работает.
    Более подробно написал на форуме — здесь
    http://www.forum.getchip.net/viewtopic.php?f=14&t=340

    Завтра попробую на нормальном системном блоке подключить к usb, может на ноутбуке на usb не хватает тока? Вольтметром промерил — питание программируемой МК +5.08 В, в момент посыла RESET сигнала — напряжение питания стабильно.

    Помогите, пожалуйста, разобраться почему не работает?

  47. d_i_m_a

    Подскажите как можно этой программой очистить кристалл перед записью eeprom?

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

    Перед записью оно должно само почиститься

  49. d_i_m_a

    Пытаюсь записать eeprom на atmega 644pa. Выдаётся ошибка avrdude: verification error, first mismatch at byte 0x0001, 0x00!=0xff content mismatch.
    В чём может быть проблема?

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