В прошлой статье у нас появился 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 (9462 Загрузки)
SinaProg 1.5.5.10.zip (13834 Загрузки)
Версия v1.5.5.10 лучше совместима с Win 7
Еще смотрим:
www.microstar.ir — Сайт программы SinaProg. (на момент написания статьи — не работал :()
056-USB-программатор – легко! (USBTiny) — делаем программатор USBtiny.