029-Программируем AVR через USB порт.

Автор: | 03.04.2010

ТитлЭта статья в стадии разработки по причине того, что я еще не определился с USB программатором.

Очень большая вероятность того, что мы будем программировать через AVRDUDE + GUI (или батники).

Вобщем, если есть соображения по этому поводу — пишите в коментах.

 

Внимание!
Появился USB программатор! — USBtiny. 056-USB-программатор-легко! (USBTiny)
Соответственно к нему есть и среда программирования — как я и планировал в этом посте —  AVRdude + GUI SinaProg.
Статья: 057-Программируем AVR-микроконтроллеры USBtiny + AVRdude + SinaProg.

 

028-UniProf – программируем AVR через COM порт.

Автор: | 03.04.2010

ТитлЭта статья – подробная инструкция как запрограммировать AVR микроконтроллер при помощи COM программатора и программы UniРrof.

Статья идентична предыдущей, за исключением выбора COM порта в качестве программирующего. Программа UniРrof абсолютно одинаково работает с обоими портами, что можно отнести к ее достоинствам.

Сначала обязательно прочитайте обзор UniProf, многое станет понятней.
Скачайте программу UniРrof.
uniprof_08_jun_10.zip (68077 Загрузок)

Кроме того, нам нужен COM программатор, а также, отладочная плата с разъемами для подключения программатора (для примера возьмем отладочную плату с ATTiny2313). Вот пожалуй и все что нам нужно.

Окно UniРrof выглядит так:

Главное окно uniprof

Теперь пошагово опишем сам процесс программирования при помощи COM программатора:

1 Подключаем программатор к COM порту.

2 Подключаем программатор к плате микроконтроллера, подаем питание на микроконтроллер.

3 Запускаем UniРrof (если еще не запущен), выбираем в поле «Программатор подключен к» COM порт. Если Вы не знаете номер своего COM порта, просто по очереди переберите все. Синим должно отобразиться название микроконтроллера. Для проверки надежности связи тыкаем несколько раз в красную системную частоту. Если на каком либо этапе выпадает такое окно, то связь ненадежна – ставим галочку «тормоз» — и проверяем заново.

4 Нажимаем кнопку загрузить «HEX», выбираем нужный файл-прошивку. В окошке «PROGRAM» появятся цифры – наша программа.

5 Нажимаем кнопку «Erase» — стираем микроконтроллер. Если происходят ошибки — ставим галочку «Тормоз».

6 Нажимаем кнопку «Prog» — записываем программу в микроконтроллер. Если происходят ошибки — ставим галочку «Тормоз», повторно стираем и снова программируем. Программа записана, осталось записать фьюзы.

7 Обязательно ставим галочку «Тормоз»! Нажимаем кнопку «FUSE», видим окошко, в котором 4 отделения (4 конфигурационных байта контроллера). В каждом отделении нажимаем кнопку «Read» считываем текущие значения (это уменьшит вероятность ошибки при вводе новых значений). Вводим новые значения фьюзов. Особое внимание обращаем на обведенные красным фьюзы. Они должны остаться в таком же состоянии, иначе дальнейшее программирование станет невозможным. Нажимаем «Write» в каждом из окошек (первое окошко – защитные биты – можно не трогать). Готово, фьюзы прошиты!

8 Снимаем питание с микроконтроллера, отключаем программатор от платы – микроконтроллер прошит, устройство готово!

Что делать если:

не найден микроконтроллер – проверьте правильность подключения программатора к контроллеру, проверьте питание контроллера (должно быть +5v), попробуете поменять порт (если есть несколько);

не распознается контроллер – поставьте галочку «тормоз», покликайте несколько раз красную системную частоту, поставьте керамический конденсатор на ножки питания контроллера, если длинна шлейфа большая, возможно большие помехи мешают – уменьшите длину шлейфа;

прошивка записывается с ошибками — поставьте галочку «тормоз», покликайте несколько раз красную системную частоту, поставьте керамический конденсатор на ножки питания контроллера, если длинна шлейфа большая, возможно большие помехи мешают – уменьшите длину шлейфа;

— после записи фьюзов контроллер перестал читаться / писаться – что-то Вы напутали с установкой фьюзов – теперь Вам поможет только параллельный программатор . Как альтернативный вариант можно собрать «Atmega fusebit doctor»

 

P.S. Нужно прошить кроме Flash еще и EEPROM?
Все просто! Сначала ставим галочку EEPROM — появится окошко EEPROM (Галочку «тормоз» нужно поставить до этого!). Далее открываем HEX-файл, автоматически программа найдет и загрузит EEP-файл (заполнятся данными оба окошка PROGRAM и EEPROM). Если юнипроф сам не определил EEP-файл откроется диалог выбора файла. Далее действуем как описано выше. При нажатии кнопки «Prog» программируется и Flash и EEPROM. Вот и все!

 

Подробная инструкция по прошивке через LPT порт >

027-UniProf-программируем AVR через LPT порт.

Автор: | 03.04.2010

ТитлЭта статья – подробная инструкция как запрограммировать AVR микроконтроллер при помощи LPT программатора и программы UniРrof.

Сначала обязательно прочитайте обзор UniProf, многое станет понятней.
Скачайте программу UniРrof.
uniprof_08_jun_10.zip (68077 Загрузок)

Кроме того, нам нужен LPT программатор, а также, отладочная плата с разъемами для подключения программатора (для примера возьмем отладочную плату с ATTiny2313). Вот пожалуй и все что нам нужно.

Окно UniРrof выглядит так:Главное окно uniprof

Теперь пошагово опишем сам процесс программирования при помощи LPT программатора:

1 Для начала нам необходимо «прописать» наш LPT программатор. Для этого нужно выбрать LPT порт в поле «Программатор подключен к», нажать кнопку «LPT pins» и мы увидим такую картинку. Это окно произвольного назначения линий порта под сигналы программатора. Установки по умолчанию предназначены для другого программатора. Чтобы заработал наш – ставим точки как на рисунке,

нажимаем «ОК» (в следующий раз устанавливать не придется – программа запомнит установки). Все — программатор «прописан».

2 Подключаем программатор к LPT порту.

3 Подключаем программатор к плате микроконтроллера, подаем питание на микроконтроллер.

4 Запускаем UniРrof (если уже не запущен), выбираем в поле «Программатор подключен к» LPT порт. Синим должно отобразиться название микроконтроллера. Для проверки надежности связи тыкаем несколько раз в красную системную частоту. Если на каком либо этапе выпадает такое окно, то связь ненадежна – ставим галочку «тормоз» — и проверяем заново.

5 Нажимаем кнопку загрузить «HEX», выбираем нужный файл-прошивку. В окошке «PROGRAM» появятся цифры – наша программа.

6 Нажимаем кнопку «Erase» — стираем микроконтроллер. Если происходят ошибки — ставим галочку «Тормоз».

7 Нажимаем кнопку «Prog» — записываем программу в микроконтроллер. Если происходят ошибки — ставим галочку «Тормоз», повторно стираем и снова программируем. Программа записана, осталось записать фьюзы.

8 Обязательно ставим галочку «Тормоз»! Нажимаем кнопку «FUSE», видим окошко, в котором 4 отделения (4 конфигурационных байта контроллера). В каждом отделении нажимаем кнопку «Read» считываем текущие значения (это уменьшит вероятность ошибки при вводе новых значений). Вводим новые значения фьюзов. Особое внимание обращаем на обведенные красным фьюзы. Они должны остаться в таком же состоянии, иначе дальнейшее программирование станет невозможным. Нажимаем «Write» в каждом из окошек (первое окошко – защитные биты – можно не трогать). Готово, фьюзы прошиты!

9 Снимаем питание с микроконтроллера, отключаем программатор от платы – микроконтроллер прошит, устройство готово!

Что делать если:

не найден микроконтроллер – проверьте правильность подключения программатора к контроллеру, проверьте питание контроллера (должно быть +5v), попробуете поменять порт (если есть несколько);

не распознается контроллер – поставьте галочку «тормоз», покликайте несколько раз красную системную частоту, поставьте керамический конденсатор на ножки питания контроллера, если длинна шлейфа большая, возможно большие помехи мешают – уменьшите длину шлейфа;

прошивка записывается с ошибками — поставьте галочку «тормоз», покликайте несколько раз красную системную частоту, поставьте керамический конденсатор на ножки питания контроллера, если длинна шлейфа большая, возможно большие помехи мешают – уменьшите длину шлейфа;

— после записи фьюзов контроллер перестал читаться / писаться что-то Вы напутали с установкой фьюзов – теперь Вам поможет только параллельный программатор . Как альтернативный вариант можно собрать «Atmega fusebit doctor»

 

P.S. Нужно прошить кроме Flash еще и EEPROM?
Все просто! Сначала ставим галочку EEPROM — появится окошко EEPROM (Галочку «тормоз» нужно поставить до этого!). Далее открываем HEX-файл, автоматически программа найдет и загрузит EEP-файл (заполнятся данными оба окошка PROGRAM и EEPROM). Если юнипроф сам не определил EEP-файл откроется диалог выбора файла. Далее действуем как описано выше. При нажатии кнопки «Prog» программируется и Flash и EEPROM. Вот и все!

 

Подробная инструкция по прошивке через COM порт >

026-Программы для прожига AVR микроконтроллеров.

Автор: | 31.03.2010

Титл для программФайлы прошивок бывают нескольких типов HEX, GEN, BIN. Я буду выкладывать файлы типа HEX, так как они наиболее распространены. Есть у меня особые планы и на BIN-файлы. Если у меня получится то, что я задумал, буду выкладывать параллельно и BIN-файлы. Рядом с прошивкой будет выкладываться картинка с Fuse битами (по даташиту). Их нужно внимательно перенести в соответствующие поля программы для программирования.

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

LPT портЕсли Вы собрали LPT программатор, файлы прошивок будем прожигать при помощи UniProf. Подробно процедура программирования через LPT порт при помощи UniProf >

COM портЕсли Вы собрали COM программатор, файлы прошивок будем прожигать при помощи UniProf. Подробно процедура программирования через COM порт при помощи UniProf >

USB портТак как мы еще не определились с USB программатором, программы для программирования еще нет, но можно высказать свои пожелания по этому поводу>

025-UniProf-универсальный программатор для AVR.

Автор: | 30.03.2010

Титл Юнипроф

Программа обновлена до версии 08.06.2010.
Автор UniProf не покладая рук работает над улучшением своей программы, делая ее еще лучше.  Версия программы от 08.06.2010 значительно лучше шьет микроконтроллеры. Наблюдаемые в предыдущей версии частые сбои при программировании без галочки «тормоз» остались в прошлом. Все остальное, что нам так нравиться в UniProf, осталось на месте.

Честно говоря, по началу, я решил использовать для прошивки микроконтроллеров программу AVRDUDE («дудка»). AVRDUDE мощная программа, заслуживающая уважения – умеющая работать с огромным количеством программаторов, с кучей настроек и довольно широко используемая для AVR микроконтроллеров. Программа не имеет своего «GUI» (работает с командной строки) и я собирался писать батники под каждую прошивку, чтобы в «один тык» прошивать контроллер. Но, немного поразмышляв, пришел к выводу:
— программа должна быть простой и доступной – чтобы с ней мог разобраться даже человек ни разу не работавший с микроконтроллерами (ну вот такой я идеалист :));
— была небольшой, портативной, со своим ГУИем, визуально отображала все этапы программирования, поддерживала микроконтроллеры используемые в блоге.
К сожалению, под эти требования AVRDUDE не подходит.
Зато подходит другая программа — UniProf-универсальный программатор для AVR. Программа имеет определенные недостатки, но они компенсируются простотой и доступностью. Кроме того, UniProf умеет работать с нашими LPT и COM программаторами. Поэтому я решил сделать общий пост-обзор программы UniProf, а позже отдельно опишу программирование через LPT и COM порт. Итак …

Читать далее

024-Что такое Fuse bits AVR микроконтроллеров.

Автор: | 28.03.2010

титл FuseВ посте про тестовые прошивки, рядом с самой прошивкой для микроконтроллера лежит картинка с названием «Фьюзы для тестовой прошивки ATMega48/88/168». Зачем эта картинка нужна? Что обозначают галочки в чекбоксах?

Fuse bits называют область (4 байта) в AVR микроконтроллерах отвечающую за начальную (глобальную) конфигурацию. Этими битами мы указываем микроконтроллеру, с каким задающим генератором ему работать (внешним|внутренним), делить частоту генератора на коэффициент или не нужно, использовать ножку сброса как сброс или как дополнительный порт ввода-вывода, количество памяти для загрузчика и другое. У каждого контроллера свой набор фьюзов.

Важно!С установкой фьюзов нужно быть предельно внимательным, так как при неправильной установке некоторых из них, Вы рискуете потерять микроконтроллер для дальнейшего программирования через последовательный программатор.

Например:
SPIEN
— разрешить использование SPI — интефейса. Должно быть без галочки иначе станет невозможным последовательное программирование;
RSTDISBL
— запретить использование сброса. Ножка сброса станет еще одним портом ввода-вывода. Должно быть с галочкой, иначе станет невозможным последовательное программирование.
DWEN
— разрешить использование debugWIRE. Ножка сброса используется как канал для отладки. Должно быть с галочкой, иначе станет невозможным последовательное программирование.

Важно!Возможно, Вы прошиваете микроконтроллер программой у которой эти галочки ставятся инверсно, не как в даташите. Если это так, то гдето рядом с галочками есть сноска об этом сообщающая.
Если Вы неуверены как в программе ставятся фьюзы, просто прочитайте фьюзы с контроллера и посмотрите как установлены SPIEN, RSTDISBL.

Нужно помнить, что у фьюзов несколько необычна функциональность – установленная галочка в чекбоксе напротив функции означает, что эта функция не задействована.

Почему так? Объясню. Сейчас конфигурационные байты записываются во флеш памяти и поменять их можно сколько угодно раз. Раньше, в суровые времена, когда флеш памяти еще не было, для конфигурации какого-либо чипа в его архитектуре имелись специальные перемычки (fuse) которые разово физически сжигались. Вот поэтому, по старинке, если перемычка цела-«1» значит эта функция не задействована и наоборот – перемычку спалили-«0» значит функция задействована.

По большому счету, разбираться, с тем, что там значат эти галочки, Вам не нужно. Необходимо лишь внимательно установить/убрать нужные галочки в программе программирующей контроллер. И еще — лучше фьюзы прошивать после прошивки программы.

P.S. У меня скопилось несколько микроконтроллеров с неработающим последовательным программированием (неправильно прошиты фьюзы), поэтому, в скором времени, займусь сборкой несложного паралельного программатора. Получиться — отпишусь.

023-Нумерация файлов и контента статей блога.

Автор: | 27.03.2010

титл для поискаС целью упростить поиск нужного контента в блоге была принята особая система нумерации постов и файлов, а также введена (немного раньше) система маркировки постов.

Как это работает?
Например: предыдущий пост имеет название «022-Тестовая прошивка для AVR микроконтрллеров.»
022 – это порядковый номер поста. Весь контент, который содержится в посте, имеет этот префикс. Кроме того, все, что связано с микроконтроллерами будет содержать индекс микроконтроллера:
T13 — ATTiny13;
T2313 — ATTiny2313;
M48 — ATMega48;
M88 — ATMega88;
M168 — ATMega168.
Прошивки ATMega48/88/168 совместимы в сторону увеличения количества памяти, поэтому прошивка для ATMega48 будет работать на ATMega88/168, а прошивка для ATMega88 будет работать на ATMega168.

Примеры обозначения файлов:
054-T13.SPL7
– схема устройства на микроконтроллере ATTiny13 в формате Splan7 описанного в статье №054;
054-T13.HEX – прошивка с 054 поста для контроллера ATTiny13;
054-M48.HEX – прошивка с 054 поста для контроллеров ATMega48/88/168;
054-M168.HEX – прошивка с 054 поста для контроллера ATMega168;
054-T2313-FuseBits.PNG – картинка с настройками фьюзов для прошивки микроконтроллера ATTiny2313. Пост с описанием устройства имеет номер 054;
054-T2313-DOC.txt – текстовый файл описания устройства, описанного в посте №054, собранного на микроконтроллере ATTiny2313;
054-T2313-DOC.doc – тоже самое, но в формате Microsoft Word.

Теперь, имея у себя прошивку (или другой файл) с определенным названием, всегда можно узнать, для какого микроконтроллера она и в каком посте описано устройство.

Найти нужный пост очень просто — достаточно в окошко поиска вписать номер поста со знаком «-», нажать Enter и нужный пост будет перед Вами!

Окно поиска

Теперь о системе маркировки.
В начале каждого поста я стараюсь вставить небольшую картинку, которая, во-первых, призвана дать представление, о чем пост, во-вторых, разбавляет монотонность текста — делая ленту постов визуально приятней. В некоторых таких картинках (титлах) можно увидеть разноцветные кружки. Если на титле поста стоит:
 – синий кружок – в посте описывается устройство с применением ATTiny13;
 – красный кружок – в посте описывается устройство с применением ATTiny2313;
 – зеленый кружок – в посте описывается устройство с применением ATMega48/88/168.
Если на титле больше чем один кружок, соответственно описаны устройства на нескольких микроконтроллерах.

Я сторонник простоты и функциональности (не только в блоге) и буду стараться делать блог понятным и доступным. Если у Вас есть пожелания по улучшению блога — всегда готов прислушаться.

022-Тестовая прошивка для AVR микроконтроллеров (проверка работоспособности портов).

Автор: | 26.03.2010

Титл для тестаВот и пришло время для первой прошивки. Данная прошивка является тестовой. Она не производит ни каких полезных действий, кроме дрыганья ножками по определенному алгоритму. Этой прошивкой можно проверить работоспособность всего микроконтроллера и портов ввода-вывода в частности.
Чтобы проверить микроконтроллер необходимо загрузить прошивку и посмотреть, что происходит на ножках. «Смотреть» можно или мультиметром, или простым пробником – светодиод последовательно с резистором 300 Ом – 1 кОм. Без резистора проверять не стоит – можно спалить порт ввода-вывода. Уровни сигналов на ножках меняются с «1» через «Z»-состояние в «0» и обратно. «Z» состояние введено в последовательность для контроля работоспособности порта в режиме входа. Читать далее

Простая отладочная плата для устройств AVR ATMega48/88/168 с часовым кварцем.

Автор: | 19.03.2010

Схема отладочной платы для ATMega48/88/168Данная отладочная плата для устройств на микроконтроллере AVR ATMega48/88/168 с часами реального времени (часовым кварцем).

Как и предыдущие отладочные платы данная плата всего лишь заготовка будущего устройства. На плату установлены штырьки для подключения питания, программатора и часовой кварц. Часовой кварц «вешается» на ножки для подключения обычного кварца, поэтому микроконтроллер должен работать от внутреннего задающего генератора. По умолчанию, с завода ATMega48/88/168 поставляется с включенным внутренним генератором, поэтому если работа микроконтроллера не планируется с часовым кварцем, его можно не устанавливать. Разъем питания продублирован на случай подключения к плате программатора с питанием от схемы (на один разъем подаем питание, с другого питаем программатор).

Читать далее

Простая отладочная плата для устройств AVR ATTiny2313 с кварцем.

Автор: | 15.03.2010

Схема отладочной платы ATTiny2313Еще один простой пример изготовления отладочной платы, но на этот раз для устройств с применением микроконтроллера ATTiny2313. Расположение ножек для программирования у ATTiny2313 идентичное ATTiny13. Соответственно и платы выйдут похожими. Отличием от предыдущей отладочной платы будет наличие внешнего задающего генератора (кварца). По умолчанию, с завода ATTiny2313 поставляется с включенным внутренним генератором, поэтому если работа микроконтроллера не планируется от внешнего генератора его можно не устанавливать. Разъем питания дублируем на случай подключения к плате программатора с питанием от схемы (на один разъем подаем питание, с другого питаем программатор). Читать далее