Avr распиновка isp – Чем и как «прошить» МК AVR ? Как загрузить программу в микроконтроллер. Как запрограммировать микроконтроллер AVR.

Содержание

avr isp Разъемы CAVR.ru

Рассказать в:
Есть 6-контактный и 10-контактный версии.Распиновка бывают следующие:Как-то на днях делал переходник для своего программатора AVR-910 я ошибся с распиновкой выводов и заметил когда уже протравил печатку, и тогда решил найти распиновку, и опубликовать у себя на сайте что-бы не забывать :)Вот будут полезные фотки:


Раздел: [Программаторы микроконтроллеров]
Сохрани статью в:
Оставь свой комментарий или вопрос:

Цифровой блок управления стеклоочистителем


Частотомер на pic контроллере с lcd дисплеем


Логарифмический индикатор выходной мощности


Звуковой пробник


Дуплексное радиопереговорное устройство


Электронный мелок.


RLC-2


Источник питания для ЛДС.


www.cavr.ru

описание USBASP драйвера, инструкция по настройке своими руками в AvrDude Prog, Atmel Studio и Khazama AVR Programmer, обновление проши

В моём случае это абсолютный рекордсмен по скорости доставки — около 5 месяцев беспечного блуждания непонятно где. Несмотря на чудовищную задержку по времени, пакет я всё-таки получил, чему несказанно рад, не взирая на недочёты, о коих поведаю ниже. Поскольку у меня весьма плохая память, то нужно было объединить найденную полезную информацию где-то в одном месте в виде памятки, собирать её по крупицам в разных закоулках сети оказалось делом нетривиальным, поэтому оформлю всё это отдельным постом.
USB ISP — самый дешёвый программатор контроллеров AVR, что можно найти в продаже, брался для расширения кругозора и более углубленного изучения AVR.
Обзор в себя включает: описание программатора, как его подключить к чипу, настройку его работы в программах AvrDude Prog, Khazama, Atmel Studio 7, и не только это.

Конечно вместо него можно использовать Arduino UNO с прошитым в него скетчем ArduinoISP, но это не удобно, возня с проводами, особенно если UNO всего одна, отбивает энтузиазм. Проще было заиметь отдельно такой программатор, точнее два. По двум причинам:

1) Ещё перед покупкой уже из отзывов было понятно, что качество пайки этих устройств страдает, а некоторым ещё и с расколотыми стабилитронами они приходили. Решено было подстраховаться, заказав два.
2) Один программатор к тому же можно шить другим, переставив перемычку на ведомом устройстве.

Технические характеристики

Поддерживаемые ОС: Windows, MacOS, Linux
Процессор: Atmega8A
Интерфейс подключения к ПК: USB
Интерфейс программирования: ISP (внутрисхемное)
Напряжение программирования: 5В или 3.3В (в зависимости от положения перемычки JP2)
Частота программирования: 375кГц (по умолчанию) и 8кГц (при замкнутой перемычке JP3)
Поддерживаемые контроллеры:
все AVR с интерфейсом SPI
Описание: ссылка

Список поддерживаемых микроконтроллеров

ATmega серия

ATmega8 ATmega48 ATmega88 ATmega168 ATmega328
ATmega103 ATmega128 ATmega1280 ATmega1281 ATmega16
ATmega161 ATmega162 ATmega163 ATmega164 ATmega169
ATmega2560 ATmega2561 ATmega32 ATmega324 ATmega329
ATmega3290 ATmega640 ATmega644 ATMEGA64 ATmega649
ATmega6490 ATmega8515 ATmega8535

Tiny серия

ATtiny12 ATtiny13 ATtiny15 ATtiny26 ATTINY25
ATtiny45 Attiny85 ATtiny2313

Серия Classic

AT90S1200 AT90S2313 AT90S2333 AT90S2343 AT90S4414
AT90S4433 AT90S4434 AT90S8515
AT90S8535

CAN серия

AT90CAN128

PWM серия

AT90PWM2 AT90PWM3

Внешний вид

Комплект поставки минимальный — программатор + шлейф без резинки. В моём случае в удвоенном количестве.

Культура исполнения и вправду хромает, мне в глаза сразу бросились криво припаянные гребёнки. Везде где только можно — имеются следы флюса, причём с окислами, по всей видимости, программаторы давно валялись на складе, а сборка их производилась с присущей китайцам быстротой.







Некоторые отверстия не целиком заполнены припоем

SMD-элементы тоже криво припаяны

Гребёнку чуть позже выровнял, уж больно неприятно на такую раскосую смотреть, элементы пропаял, а плату затем отмыл

Размеры платы несколько больше USB-TTL-конвертера на CP2102

Длина шлейфа около 30см, бытует мнение, что чем короче шлейф, тем лучше. Некоторые его специально укорачивают. Если заказать оригинальный USBASP — там комплектный шлейф уже 50см.


Органы управления на плате

На плате имеются три перемычки, задающие разные режимы работы программатора:
JP1 — замыкается в случае обновления прошивки самого программатора
JP2 — тройная перемычка, здесь выбирается, какое напряжение будет подаваться на прошиваемый микроконтроллер, либо 5В (левое положение) и 3.3В (правое положение)
JP3 — если её замкнуть, то программирование контроллера будет происходить с пониженной частотой, однако китайцы не стали сюда впаивать гребёнку, т.к. на данной прошивке она не требуется
Программатор, как можно заметить, построен на базе Atmega8 с кварцем на 12МГц. Самый правый верхний элемент, подписанный F1, с перевёрнутой цифрой 4 — самовосстанавливающийся предохранитель, защищает USB-порт ПК/ноутбука, если на прошиваемой плате вдруг произошло короткое замыкание. Под перемычкой
JP2
находится LDO-стабилизатор 662К, понижающий напряжение с 5В до 3.3В, если перемычка установлена в правое положение.

Установка драйверов

Чтобы начать пользоваться программатором, необходимо сперва поставить на него драйвера. Вставляю любой программатор в USB-порт ПК, звучит сигнал о новом оборудовании, на самом девайсе горит светодиод, но автоматического поиска драйверов не происходит.
примечание. перед установкой драйвера необходимо отключить проверку цифровой подписи в Windows
1) Скачать драйвера, распаковать в удобное место.
2)
Зайти в «Диспетчер устройств», например навести курсор на главную кнопку (Win10), нажать ПКМ и выбрать пункт «Диспетчер устройств».

3) В ветке «Другие устройства» можно увидеть неопознанное устройство USBASP с оранжевым треугольничком — > навести на него курсор, нажать ПКМ -> «Обновить драйверы…»

4) Указать путь до раннее распакованной папки с драйверами — «libusb_1.2.4.0», нажать «ОК»

5) «Всё равно установить этот драйвер»

6) Готово, теперь оранжевый треугольничек пропал, драйвера поставлены

Прошивка собрата

Мне уже было известно до этого, что китайцы продают эти программаторы с не самой свежей прошивкой. Решил сперва обновить прошивку на одном из них, а затем ради интереса сравнить оба программатора в работе. Для этого соединяю шлейфом оба устройства, на ведущем (который вставляю в USB-порт) никакие перемычки не трогаются, а на ведомом программаторе (на котором будем обновлять прошивку) я переставил перемычку с JP2 на JP1:

Захожу в программу Khazama AVR Programmer, выбираю из выпадающего списка ATmega8 и сперва считаю Flash-память через пункт меню «Command» -> «Read FLASH to Buffer», чтобы cохранить китайскую заводскую прошивку у себя. На всякий случай.

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

Идёт считывание, которое завершается всплывающим окном об успешном считывании FLASH-памяти в буфер

Теперь нужно сохранить содержимое буфера: «File» -> «Save FLASH Buffer As…». Выбрать удобное место, куда старая прошивка сохранится, дать имя (я например её назвал firmware_1) и дописать расширение *.hex — если его не писать, то она сохранится как просто файл без расширения.

Скачиваю прошивку для программатора с этой странички, архив usbasp.2011-05-28.tar.gz (в этом же архиве есть драйвера для Windows, распаковываю содержимое в удобное место.
Тем временем в Khazama загружу скачанную прошивку в буфер. «File» -> «Load FLASH File to Buffer». Выбираю прошивку, где в названии написано atmega8, поскольку прошиваемый программатор на этом чипе.

Как видно, здесь три прошивки — для Atmega8, 48 и 88. В нашем случае Atmega 8 — её и выбираю.

Прошиваю. «Command» -> «Write FLASH File to Buffer». Снова возникает ошибка, но после идёт процесс, завершающийся успехом.



Поскольку в обычном понимании «запрограммировать» означает выставить 1, то при работе со фьюзами всё ровно наоборот, от чего возникает путаница и в этом случае можно по неосторожности заблокировать контроллер и прошить потом его будет уже нельзя. Программа Khazama AVR Programmer удобна просмотром фьюз-битов — там наглядно видно и

расписано, какие из них установлены, а какие нет.

Находятся они по пути «Command» -> «Fuses and Lock Bits…», откроется окно:

Где по нажатии кнопки «Read All» считаются фьюз- и лок-биты, а пресловутая ошибка успеет вылезти аж 5 раз подряд. Ошибки сыпятся именно на заводской китайской прошивке. Но если вставить в USB-порт недавно прошитый программатор, прошивкой скаченной по ссылке выше, то этих ошибок вылазить уже не будет, однако баги вылезут в другом месте, но о них позже.

Связь с платой Pro Mini (Atmega 168, 3.3V/8MHz)

В этом случае выводы программатора соединяются с выводами платы Pro Mini, как проиллюстрировано на схематичном рисунке ниже. Перемычки не переставляются, т.е. остаётся в положении 5В.
Несмотря на то, что плата Pro Mini подписана как 3.3В, на 168-ю Атмегу можно подавать и 5В. Стабилизатор AMS1117 на 3.3В кстати вообще выпаян из платы.

AVRDUDE PROG 3.3
Консольная программа для прошивки микросхем, своего графического интерфейса не имеет, в стоке работает из командной строки, но энтузиастами было написано немало оболочек на неё, для удобства работы с ней. Одна из таких оболочек называется AVRDUDE PROG, созданная русскоязычными разработчиками. Эта оболочка, на мой взгляд удобна как раз для Flash-перепрошивки МК. После её запуска выбирается контроллер, в данном случае Atmega168 и тип программатора — USBasp. После чего можно заниматься записью/считыванием памяти. Что на заводской прошивке, что на новой — в обоих случаях никаких проблем с общением с Atmega168 не возникло. Прошил ради интереса ардуиновский стандартный blink-скетч, экспортированный в бинарный HEX-файл. Всё гладко.



Khazama AVR Programmer
Здесь достаточно выбрать микроконтроллер из выпадающего списка и можно уже работать с памятью/битами.
Однако если на самом программаторе установлена заводская прошивка, периодически будут сыпаться ошибки, о чём выше уже было упомянуто, на новой прошивке — данных ошибок уже нет.

Связь с контроллером ATtiny13A в корпусе SOIC8

Соединение согласно схеме ниже. Но тут всё немного интереснее.

Поскольку голый чип в SMD-корпусе SOIC8, в данном случае я поместил его в переходник SOIC8-DIP8 для удобства соединения с программатором в дальнейшем. Обзор на этот переходник можно почитать здесь.

AVRDUDE PROG 3.3
Тут выбирается из списка одноимённый контроллер, программатор USBasp и, если программатор прошит заводской китайской прошивкой, то все операции проходят ровно и гладко. Однако стоит заменить программатор на другой, с обновлённой прошивкой, то при любой операции возникает ошибка.

Появляется она из-за того, что ни программа, ни программатор не могут автоматически перейти в режим медленного программирования, необходимый для ATtiny13. Но есть как минимум два выхода:
1) Железный: замкнуть перемычку JP3

2) Программный: отредактировать файл «programm.ini» в папке с программой AVRDUDE PROG 3.3

Внести туда четыре строчки кода и сохранить. (взято отсюда)

progisp=jtag2pdiportprog=COM1portenabled=1[UsbaspSpeed]
progisp=Usbasp -B 3
portprog=usb
portenabled=0
Примечание. Здесь применён ключ «-B», который и занимается переводом программатора на пониженную частоту программирования. Значение «3» — время в микросекундах

После этого снова запустить AVRDUDE PROG 3.3 и в выпадающем списке программаторов выбрать UsbaspSpeed. Теперь работа с ATtiny13 на программаторе с новой прошивкой будет уже без ошибок, а перемычку JP3 замыкать больше не потребуется в этом случае.

Khazama AVR Programmer
Выбирается контроллер из списка и почти та же ситуация.

Программатор с заводской прошивкой нормально работает с ATtiny13, если не считать постоянно появляющихся окон с ошибкой, о чём раннее уже рассказывал.
Но с программатором на новой прошивке уже появляется иная ошибка с невозможностью прочесть сигнатуру (цифровую подпись) контроллера.

Но стоит замкнуть перемычку JP3, и можно спокойно работать

Или просто задать частоту работы из выпадающего списка по пути «Command» -> «Programm Options», я выставил частоту 187.5кГц.

Примечание. Частота программирования должна быть меньше тактовой частоты прошиваемой микросхемы не менее, чем в 4 раза. Но если посмотреть на считанные с ATtiny13 фьюзы, то на последней строчке Int.Rc.Osc. указано 9.6МГц.
Как минимум, у новичка возникнет вопрос — почему на выставленных в KHazame 1.5МГц — появляется та же ошибка? А также почему, если в AtmelStudio написать например код мигания светодиода с частотой раз в секунду и в макросе прописать:
#define f_cpu 9600000
то загрузив код на Attiny13, светодиод будет мигать очень медленно?
— посмотрим на предпоследнюю строчку, где Divide Clock by 8 Internally [CKDIV8=0] — это включенный предделитель частоты, который делит эти 9.6МГц на 8, и поэтому реальная частота чипа здесь — 1.2МГц. Поэтому при выборе частоты 187.5кГц или меньше, ошибки исчезают и можно работать нормально с контроллером.
Примечание 2. Способ с выбором частоты в KHazame по скорости работы в несколько раз выигрывает у метода с физическим замыканием перемычки JP3, потому как в последнем случае частота понижается до 8кГц.

Интеграция программатора в Atmel Studio 7

Atmel Studio — среда разработки от фирмы Atmel, но напрямую работать с USBASP, тем более китайским, она не может. Однако благодаря той же программе AVRDUDE, входящий в состав пакета AVRDUDE PROG 3.3, которая будет играть здесь роль посредника, можно соорудить «костыль», а уже в самой среде затем добавить возможность прошивать МК, подключенный через USBASP.

Сперва нужно запустить среду, предполагается, что некий код у нас уже написан и собран. В моём примере это простая мигалка светодиодом — Blink.

На верхней панели инструментов выбрать «Tools» — «External Tools…»

Откроется небольшое окно, нажать «Add»

В самом верхнем поле «Title:» ввести любое удобное название, я написал «Atmega168», т.к. та конфигурация, что приведу чуть ниже относится конкретно к этому контроллеру, и для любого другого контроллера она настраивается индивидуально.
В большом поле наверху, название инструмента будет автоматически продублировано.

Вторая строка, поле «Command:» — здесь нужно указать путь до файла «avrdude.exe», который находится в папке с вышерассмотренной программой

Третья строка, поле «Arguments:» необходимо ввести собственно саму конфигурацию

Конфигурация для Atmega168

-p m168 -c usbasp -P usb -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:a

-p — наименование контроллера
-с — какой программатор
-P — порт, через который будет заливаться прошивка
-U — какая операция с какой памятью будет производится (в данном случае запись во Flash)
Если нужно настроить для другого МК, то параметр «m168» нужно изменить на соответствующий контроллер, который будет прошиваться. Например «m8» для Atmega8 или «m328p», если Atmega328p. Параметры для других МК смотрите здесь — также там найдёте описания ключей AVRDUDE.

Конфигурация для ATtiny13

-p t13 -c usbasp -B 3 -P usb -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:a 
Здесь можно заметить уже два изменения: помимо «t13», добавился уже знакомый ключ «-B» со значением «3» для снижения скорости программирования
После заполнения полей нажать «Apply» и «ОК». Окно закроется

Теперь, если снова кликнуть по «Tools», там появится только что созданный инструмент. И по нажатии по нему откомпилированный код будет автоматически прошит в контроллер.

Но эта операция происходит в два клика, что не очень удобно. Надо вынести этот инструмент на главную панель инструментов, чтобы он был всегда на виду.
Для этого нужно снова зайти в «Tools», затем кликнуть по пункту «Customize…»
Откроется следующее окно:

Перейти во вкладку «Commands» — нажать кнопку «Add Command…»

Ещё одно окно появится. В нём — в левой колонке выбрать «Tools», а в правой колонке выделить «External Command 1». Нажать «OK»

«External Command 1» окажется наверху списка, и, обратите внимание на саму панель инструментов — в интерфейсе появился пункт «Atmega168».

Но как мне кажется, место ему отведено не совсем удачное, желательно его сдвинуть вправо, для этого нажимается кнопка «Move Down» (одно нажатие = сдвиг на одну позицию вправо). После этого можно закрывать окно по кнопке «Close» и шить чип прямо из студии в один клик через обозреваемый программатор.

При перепрошивке чипа таким методом, на секунду появляется консольное окно AVRDUDE. Но может возникнуть необходимость как-то сохранить этот лог для дальнейшего его просмотра — тогда в окне «External tools» нужно поставить галку на «Use Output window».

И теперь лог будет отображаться в окне вывода, что внизу программы ATmel Studio 7. Данная галка может задаваться отдельно для каждого добавленного в «External tools» контроллера.

Дополнение по фьюзам программатора

Из документа READMI, идущего в комплекте с драйверами и прошивкой для USBASP, позже выяснилось, что разработчик рекомендует выставить определённую конфигурацию фьюз-битов, определяющих работу внешнего резонатора.
Минусом khazam’ы является то, что в окне со фьюзами не отображаются HEX-значения выставленных битов. Это уже можно посмотреть в AVRDUDE PROG. Заводские фьюзы, выставленные китайцами, выглядят так (обязательно поставить точку «инверсные» — выделил синим прямоугольником):

Как рекомендует выставить разработчик:

HFUSE=0xc9
LFUSE=0xef

Это нужно снять две галки с «BODEN» и «SUT1» (выделено красным овалом),
поставить две галки на «CKOPT» и «SUT0» (выделено зелёным прямоугольником),
справа в колонке при этом будут отображаться HEX-значения изменённых битов (выделено жирным красным прямоугольником): Lock Byte: 3F, Fuse High Byte: C9, Fuse Low Byte: EF.

Если всё сходится, можно нажимать «программирование»

ВНИМАНИЕ. Злой фьюз-бит RSTDISBL — не трогать ни в коем случае, иначе его установка заблокирует контроллер и прошить потом через USBASP его уже будет нельзя.
_____________________________________

Выводы

Опробовано, работает. Если khazam не планируется использовать, то в обновлении прошивки для программатора — смысла нет, благо и так прекрасно работает, причём в случае с ATtiny13 никаких правок и перемычек вносить не требуется. Последняя прошивка — почему-то оказалась более капризна в этом плане. Единственное, после получения, плату надо пропаять и отмыть.

Список ссылок
1) Описание USBASP
2) AVRDUDE PROG 3.3 (форум)
3) Khazama AVR Programmer 1.7
4) Китайская стоковая прошивка (10кб)
5) Архив с прошивками для USBASP и драйверами для Windows — сайт создателя проекта

mysku.ru

Самый миниатюрный USB-программатор MicroProg для контроллеров AVR

В настоящее время контроллеры AVR фирмы Atmel имеют большую популярность среди радиолюбителей. Они функциональны, дешевы, просты в освоении и достаточно выносливы. Одновременно с этим растет потребность в программаторах для этих контроллеров.

В литературе уже опубликовано большое количество разнообразных схем, как простых, так и сложных, подключаемых к различным портам компьютера (LPT, COM, USB) [1-3]. Из USB-программаторов наибольшее распространение получили USBasp [4] и AVR910 [5]. Они относительно просты, миниатюрны, поддерживают большую номенклатуру контроллеров.

Задачей автора стала разработка еще более простого, миниатюрного, дешевого, функционального и универсального программатора, в результате чего и появилась на свет данная конструкция. Схема устройства представлена на рисунке 1.

Рисунок 1 – Схема программатора


За основу был взят проект CDC-SPI японского автора Osamu Tamura [6]. В отличие от оригинала, напряжение питания программатора и программируемого микроконтроллера составляет не 3,3 В, а 5 В, что позволяет расширить ряд программируемых контроллеров. Кроме того, были внесены некоторые изменения в программу прошивки контроллера.

Ядром программатора является микроконтроллер DD1 ATTiny45. Изюминкой схемы является то, что в качестве тактового генератора контроллера используется генератор системы ФАПЧ частотой 16,5 МГц, что позволило отказаться от применения уже привычного в данных схемах внешнего кварцевого резонатора. Конденсатор С1 снижает пульсации по питанию. Резисторы R2, R3 токоограничительные (величиной 68 – 82 Ом), работают в паре со стабилитронами VD1, VD2 и служат для защиты компьютера от высокого напряжения (по стандарту не более 3,6 В) Они могут быть заменены отечественными КС136 либо импортными с маркировкой 3V3, 3V6. Резистор R1 указывает компьютеру, что подключенное устройство работает на скорости LS, его номинал может изменяться в диапазоне 1,5 – 2,2 кОм. Резисторы R4-R7 служат для защиты выходов контроллера от короткого замыкания и согласования логических уровней в случае раздельного питания контроллера и программатора, их величина может изменяться от 270 до 560 Ом. Для соединения программатора и компьютера используется пятипиновое гнездо mini-USB (XS1). Это сделано для уменьшения размеров печатной платы, а также исходя из того, что кабель mini-USB имеется практически у каждого. Подключение программатора к программируемому контроллеру осуществляется при помощи 10-контактного разъема XS2, распиновка которого соответствует стандарту STK200/300 (рис. 2). Можно использовать другую стандартную распиновку либо придумать свою, но тогда придется изменить печатную плату.

Рисунок 2 – Распиновка ISP-разъема.


Программатор собран на плате из одностороннего фольгированного стеклотекстолита размером 14х28 мм. Внешний вид дорожек платы представлен на рис. 3, а расположение деталей на ней – на рис. 4. При этом синим цветом обозначены детали, устанавливаемые со стороны монтажа, а зеленым – с верхней стороны платы. Файл с печатной платой в формате программы DipTrace можно скачать здесь.
Рисунок 3 – Разводка печатной платы

Рисунок 4 – Расположение деталей на плате


Внешний вид программатора со стороны монтажа и общий вид программатора представлены на рисунках 5 и 6 соответственно.
Рисунок 5 – Внешний вид программатора со стороны монтажа

Рисунок 6 – Общий вид программатора


Для тех, кому сложно достать не слишком пока распространенный контроллер ATTiny45, автором была разработана схема на более широко используемом контроллере ATTiny2313 (рис. 7)

Рисунок 7 – Схема программатора на ATTiny2313


Схема отличается от предыдущей только наличием кварцевого резонатора ZQ1, частота которого должна равняться 12 МГц и конденсаторами C1 и C2, емкость которых может изменяться в пределах 18 – 24 пФ. И кроме того, в схеме вместо сложного в распайке гнезда mini-USB применено так называемое «принтерное» гнездо типа USB-B. Печатная плата для данной схемы разработана на обычных деталях, что несколько увеличило ее размеры, но позволило отказаться от сложных для пайки многими радиолюбителями smd-компонентами. 

Плата также выполнена из одностороннего фольгированного стеклотекстолита размером 30х50 мм. Внешний вид дорожек платы представлен на рис. 8, а расположение деталей на ней – на рис. 9. Файл с печатной платой в формате программы DipTrace можно скачать здесь.

Рисунок 8 – Разводка печатной платы программатора на ATTiny2313


Рисунок 9 – Расположение деталей на плате программатора на ATTiny2313 Внешний вид программатора со стороны монтажа и общий вид программатора представлены на рисунках 10 и 11 соответственно.
Рисунок 10 – Внешний вид программатора со стороны монтажа


Рисунок 11 – Общий вид программатора


Теперь что касается программной части. Файлы прошивки контроллера можно скачать вот тут: tiny45.hex и tiny2313.hex. После программирования flash-памяти контроллера для ATTiny45 необходимо установить следующие конфигурационные биты: CKSEL3, CKSEL2, CKSEL1 (тактирование от схемы ФАПЧ), BODLEVEL0 (детектор пониженного напряжения на 1,8 В), RSTDSBL (поскольку количество выводов микроконтроллера невелико, то вывод RESET используется в качестве обычного порта ввода-вывода). Для ATTiny2313 необходимо запрограммировать только бит BODLEVEL0, а остальные сбросить (естественно, SPIEN должен остаться установленным) (в журнале напечатали с ошибкой).

Несколько слов о том, как же запрограммировать контроллер, входящий в состав программатора, в первый раз при отсутствии под рукой самого программатора.

Для этой цели можно применить любую схему из описанных, например, в [1]. Простейший программатор, именуемый в народе «5 проводков», подключается к LPT-порту компьютера и состоит из всего 4 сопротивлений, но сейчас это порт является скорее архаизмом, чем нормой. Сам автор для первоначальной прошивки использовал программатор, представленный на рис. 7 в [1]. Он подключается с СОМ-порту компьютера и имеет ряд панелек для установки различных микроконтроллеров, что позволяет с легкостью запрограммировать контроллер перед его монтажом в устройство. Управляется программатор от известной программы PonyProg. Небольшой нюанс. PonyProg не знает ни ATTiny2313, ни ATTiny45, поэтому выберите любой контроллер с объемом памяти не меньше, чем 4 кб, например, ATMega8. При прошивке программатор выдаст ошибку о неверном типе контроллера. Выберите «Ignore» и контроллер все равно будет прошит.

Кроме того, поскольку прошивка контроллера ведется через интерфейс внутрисхемного программирования SPI, то возможно (и даже желательно для ATTiny45) прошивать его непосредственно в устройстве уже после распайки.

Программирование можно осуществлять либо подпайкой к соответствующим выводам контроллеров проводков и дальнейшим их сопряжением с программатором, либо используя разъем XS2. Соответствие выводов контроллера и их назначения приведено в таблице 1.

Таблица 1 – Выводы для программирования контроллеров

Номер вывода Обозначение Описание 
 ATtiny45ATtiny2313 
20VCC Питание контроллера 
410GND Общий вывод
618MISO Выход данных контроллера
517MOSI Вход данных контроллера
719SCKВход тактовых импульсов
11RESВход сброса

При использовании для программирования разъема XS2 необходимо учесть следующий нюанс. При прошивке контроллера он выступает ведомым, и для него вывод MISO является выходом, а MOSI – входом. Когда же контроллер сам выступает в роли программатора, то он сам является ведущим, и входы MISO и MOSI меняются местами (сравните рисунки 1 и 7 с таблицей 1).

При программировании контроллера ATTiny45 все необходимые выводы подведены к разъему XS2, в этом случае схема подключения будет иметь следующий вид (рис. 12). Поскольку обе части разъемов XS2 и XS3 представляют собой гнезда, то можно либо спаять кабель со штекерами с обеих сторон, либо выполнить соединения проводками, втыкая их в соответствующие контакты гнезд. На разъеме внешнего программатора не проставлены номера выводов – они могу быть различными для разных типов программаторов, и их следует уточнить в документации для каждого конкретного программатора.

При программировании же контроллера ATTiny2313 сигнал сброса, подводимый к выводу RESET, формируется линией РВ0 (см. рис. 7). В этом случае сигнал сброса от внешнего программатора необходимо подключать непосредственно к выводу RESET контроллера ATTiny2313 (вывод 1), подпаяв к нему дополнительный проводок (рис. 13). Можно обойтись и вовсе без него, но тогда необходимо перед подачей питания на контроллер замкнуть вывод RESET на землю, однако в данном случае возможны сбои, и этот вариант не рекомендуется для повторения.

Рисунок 12 – Подключение внешнего программатора при прошивке ATTiny45


Рисунок 13 – Подключение внешнего программатора при прошивке ATTiny2313


Еще одно замечание. COM- и LPT-программаторы обычно не имеют вывода питания, поэтому питание платы с контроллером может осуществляться от шины USB через разъем XS1. В этом случае перемычка VCC-VCC не требуется.

ВНИМАНИЕ!!! Перед установкой бита RSTDISBL убедитесь в работоспособности схемы, иначе после его установки дальнейшее программирование микроконтроллера через ISP становится невозможным.

Схема на микроконтроллере ATTiny2313 при правильном монтаже начинает работать сразу же без дополнительной настройки. 

Для проверки работоспособности схемы на микроконтроллере ATTiny45 можно поступить следующим образом: в flash-память контроллера записать файл tiny45.hex, установить все конфигурационные биты кроме RSTDISBL, собрать схему, подключить ее к USB-порту компьютера. Если все сделано верно, то появится надпись о том, что обнаружено новое устройство MICROPROG (рис. 14) и система попросит установить драйвера на него. 

Рисунок 14 – Подключение программатора в первый раз


Для пользователей систем MS Windows 2000, ME, XP необходимо выбрать «Установка из указанного места» и указать в качестве директории с драйверами папку \avrcdc_inf\raw\ из архива, лежащего здесь. 

Рисунок 15 – Установка драйвера на ОС Windows XP


На сообщение системы о том, что программное обеспечение не тестировалось на совместимость с Windows XP необходимо выбрать «Все равно продолжить» (рис. 16)

Рисунок 16 – Предупреждение ОС


Для пользователей других версий Windows необходимо выбрать папку с соответствующим названием (\vista64, \xpvista7). Следует заметить, что драйвера взяты из оригинальной конструкции Osamu Tamura [7]. 
После установки драйверов в системе появится новый виртуальный COM-порт, в чем можно убедиться, зайдя в диспетчер устройств (рис. 17)

Рисунок 17 – Появление нового виртуального порта в системе


Если посмотреть свойства данного порта, то можно видеть, что это как раз наш программатор MICROPROG (рис. 18)

Рисунок 18 – Программатор определился в системе


Итак, мы убедились, что аппаратная часть программатора исправна. Теперь можно смело устанавливать конфигурационный бит RSTDISBL. Более никаких настроек для работы с программатором на контроллере ATTiny45 не требуется. Если монтаж выполнен правильно, то устройство начинает работать сразу же. Все вышеописанные действия в равной степени относятся и к программатору, собранном на базе ATTiny2313, за исключением установки бита RSTDISBL

Для работы с программатором MICROPROG автором была разработана специальная программа MicroProg.exe. Главное окно программы представлено на рис. 19.

ВНИМАНИЕ!!! Программатор необходимо подсоединять к компьютеру до запуска программы. При перестыковке программатора необходимо перезапустить программу.

Рисунок 19 – Главное окно программы MICROPROG


Разберемся с назначением основных элементов интерфейса программы. Для автоматического определения типа подключенного к программатору микроконтроллера служит кнопка «Автоопределение». При этом автоматически считываются идентификатор микроконтроллера, калибровочные и конфигурационные ячейки и биты защиты. 

Если же по каким-то причинам автоопределение контроллера дает неверные результаты, то можно установить тип контроллера вручную при помощи выпадающего списка «Ручной выбор контроллера». При этом конфигурационные биты и биты защиты устанавливаются по умолчанию для данного типа контроллера, поэтому стоит быть внимательным, чтобы не ошибиться. Следует заметить, что номенклатура поддерживаемых контроллеров несколько отличается от таковой у программатора AVRDUDE [8]. Во-первых, MICROPROG не поддерживает контроллеры семейства Classic и контроллеры с объемом памяти больше 128 кБ. Во-вторых, им поддерживаются новые чипы, еще не включенные в список AVRDUDE. Кроме того, этот список будет постоянно обновляться автором по мере выхода новых контроллеров.

Следующая, и одна из наиболее полезных особенностей данного программатора – это программное изменение частоты тактовых импульсов SCK. При этом имеется на выбор 5 фиксированных частот (1 МГц, 250 кГц, 50 кГц, 10 кГц, 2 кГц). Выбор частоты осуществляется из выпадающего списка «Частота тактового сигнала». По умолчанию при подключении программатора у него всегда устанавливается частота 1 МГц, поэтому будьте внимательны: если подключенный контроллер не определяется устройством, возможно, что для него установлена слишком высокая частота импульсов SCK. Попробуйте снизить ее и повторить попытку.

Возможно, у кого-то возникнет вопрос, зачем нужна столь низкая частота, как 2 кГц. Автор однажды столкнулся со следующей проблемой. При тактировании контроллера ATtiny13 внутренним генератором частотой 128 кГц и запрограммированном фьюзе CKDIV8 реальная тактовая частота контроллера установилась на уровне 16 кГц. При этом как следует из инструкции к контроллерам AVR, частота импульсов SCK должна быть меньше тактовой как минимум в 2,5 раза, то есть на уровне 6 кГц. Минимальная же частота импульсов SCK для того же программатора USBasp составляет 8 кГц, чего как оказалось, недостаточно. Таким образом, абсолютно рабочий контроллер оказался негодным к употреблению, пока не был создан программатор MICROPROG, который таки смог вернуть его к жизни. Но вернемся к описанию.

В поле «Идентификатор» указывается трехбайтовый шестнадцатеричный код, уникальный для каждого типа контроллера. Это поле доступно только для чтения.

В поле «Калибровочные ячейки» указываются значения, занесенные заводом-изготовителем при калибровке внутреннего RC-генератора контроллера. Количество значений зависит от количества фиксированных  тактовых частот микроконтроллера (на рис. 15 для ATTiny13 таких значений два – для 4,8 МГц и для 9,6 МГц). Это поле также доступно только для чтения.

В блоке «Конфигурационные ячейки» задаются конфигурационные биты, или фьюзы. Всего в микроконтроллерах AVR имеется три конфигурационных байта – старший (High Fuse, HF), младший (Low Fuse, LF) и дополнительный (Extended Fuse, EF). В представленной программе имеется двойная возможность задавать значения этих байтов.

1. Побитно, устанавливая или снимая флажки с соответствующих битов (важно помнить, что установленный флажок сбрасывает соответствующий бит в 0)

2. Побайтно, задавая сразу значение всего конфигурационного байта в правой части окна программы. Значение байта задается в шестнадцатеричном коде.

Оба способа задания конфигурационных ячеек равноценны. Изменения, созданные одним способом тут же отображаются и другим способом.

Кнопка «Чтение» позволяет считать фьюзы из контроллера. Кнопка «Запись» – записать выбранные в программе фьюзы в контроллер. Кнопка «Верификация» сравнивает выбранные в программе фьюзы с теми, которые записаны в контроллер. Кнопка «По умолчанию» устанавливает фьюзы по умолчанию для данного типа контроллера согласно инструкции (при этом биты устанавливаются только в программе, для их записи в контроллер необходимо воспользоваться кнопкой «Запись»).

В блоке «Ячейка защиты» задаются биты защиты. Их установка позволяет защитить программный код от несанкционированного чтения или записи. Все компоненты этого поля аналогичны таковым для блока «Конфигурационные ячейки».

В блоке «Программирование» осуществляются операции с flash- и eeprom-памятью контроллера. Кнопка «Стирание кристалла» предназначена для стирания всех областей памяти, включая биты защиты, flash и eeprom (последняя не стирается при установленном бите EESAVE). При этом конфигурационные ячейки остаются без изменения.

Под кнопкой расположено два почти идентичных подблока «Программирование FLASH» и «Программирование EEPROM». По нажатию на кнопку «Файл НЕХ» открывается диалоговое окно выбора файла с расширением *.hex. Имя выбранного файла и путь к нему отображаются в поле справа от кнопки. При этом поле является редактируемым, то есть путь можно прописать и вручную. 

Кнопка «Чтение» позволяет считать flash-память контроллера в выбранный HEX-файл. По окончанию считывания на экране появится соответствующее сообщение. При этом в поле выбора файла можно указать имя несуществующего файла – он будет автоматически создан.

Кнопка «Запись» позволяет записать выбранный HEX-файл в flash-память контроллера. По окончанию программирования на экране появится соответствующее сообщение. ВАЖНО!!! Перед выполнением команды «Запись Flash» автоматически осуществляется выполнение команды «Стирание кристалла».

Кнопка «Верификация» позволяет сверить выбранный HEX-файл с содержимым flash-памяти микроконтроллера. По окончании процесса на экране появится сообщение об успешной верификации или об ошибке. Ошибка может быть вызвана установленными битами защиты или неверно выбранным для верификации файлом.

Назначение кнопок с идентичными названиями в подблоке «Программирование EERPOM» аналогично таковым для подблока «Программирование FLASH» за исключением того, что все операции здесь относятся к области eeprom-памяти, а файлы имеют расширение *.eep.

В нижней части экрана имеется полоса, отображающая ход выполнения процесса.

Для обсуждения работы программатора создана ветка на форуме сайта автора по адресу [9].

Все файлы, встречающиеся в статье, можно скачать одним архивом по этой ссылке

Литература


1. Рюмик С.М. Микроконтроллеры AVR. Ступень 1. – Радиоаматор. 2005. №1. с. 35-39.
2. Хлюпин Н. Два универсальных программатора. – Радио. 2006. №5. с. 27-30.
3. Котов И. Программатор микроконтроллеров AVR. – Радио. 2009. №1. с. 23-24.
4. Thomas Fischl. USBasp — USB programmer for Atmel AVR controllers. http://www.fischl.de/usbasp/ 
5. Рыжков А. USB программатор микроконтроллеров AVR и AT89S, совместимый с AVR910. – Радио. 2008. №7. с. 28-29.
6. Osamu Tamura. Virtual COM Port over Low-Speed USB AVR-CDC
http://www.recursion.jp/avrcdc/cdc-spi.html
7. Osamu Tamura. Virtual COM Port over Low-Speed USB AVR-CDC. Downloads. – http://www.recursion.jp/avrcdc/download.html
8. AVRDUDE — AVR Downloader/UploaDEr. – http://www.nongnu.org/avrdude/
9. Сайт Сокола Сергея. Форум. Программатор MICROPROG. – http://sokolsp.at.ua/forum/2-3-1

bigbenmobileblog.blogspot.com

Программатор USBASP — Инструменты — AVR project.ru

  Решил заменить свою рабочую лошадку STK200+PonyProg, на нечто более современное, легко собираемое и обязательно поддерживающее подключение по USB. Выбор пал на хорошо зарекомендовавший себя программатор USBASP, мозгом которого служит микроконтроллер Atmega8 (так же есть варианты прошивки под atmega88 и atmega48) . Минимальная обвязка микроконтроллера позволяет собрать достаточно миниатюрный программатор, который всегда можно взять с собой, как флэшку. Еще одним плюсом программатора является то, что благодаря большой популярности он приобрел поддержку во многих средствах разработки, в том числе и в Bascom-AVR начиная с версии 1.11.9.6. И поэтому консольность программы, с которой он работал первоначально, перестала быть отпугивающим моментом для начинающих.
 

  Схема программатора USBASP под микроконтроллер Atmega8 в корпусе TQFP32 приведена ниже (обратите внимание, что распиновка микроконтроллера отличается от распиновки в корпусе DIP):

  Перемычка J1 применяется, в случае если необходимо прошить микроконтроллер с тактовой частотой ниже 1,5МГц. Кстати, эту перемычку вообще можно исключить, посадив 25 ногу МК на землю. Тогда программатор будет всегда работать на пониженной частоте. Лично для себя отметил, что программирование на пониженной скорости на доли секунды дольше, и поэтому теперь перемычку не дергую а постоянно шью с ней.

  Светодиод blue показывает наличие готовности к программированию схемы, red загорается во время программирования.
Контакты для программирования выведены на разъем IDC-06, распиновка соответствует стандарту ATMEL для 6-и пинового ISP разъема:

 

  На этот разъем выведены контакты для питания программируемых устройств, здесь оно берется напрямую с USB порта компьютера, поэтому нужно быть внимательным и не допускать кз.
Этот же разъем применяется и для программирования управляющего микроконтроллера, для этого достаточно соединить выводы Reset на разъеме и на мк (см. красный пунктир на схеме). В авторской схеме это делается джампером, но я не стал загромождать плату и убрал его. Для единичной прошивки хватит и простой проволочной перемычки.
Плата получилась двухсторонняя, размерами 45х18 мм.
 


  Разъем для программирования и перемычка для снижения скорости работы программатора вынесены на торец устройства, это учень удобно


Прошивка управляющего микроконтроллера
 

Прошивать, как я писал выше, можно с разъема программирования, соединив выводы Reset микроконтроллера (29 нога) и разъема. Прошивка существует для моделей Atmega48, Atmega8 и Atmega88. Желательно использовать один из двух последних камней, так как поддержка версии под Atmega48 прекращена и последняя версия прошивки датируется 2009 годом. А версии под 8-й и 88-й камни постоянно обновляются, и автор вроде как планирует добавить в функционал внутрисхемный отладчик. Прошивку под свой тип контроллера можно скачать ниже:

Для работы устройства необходимо настроить фьюзы на внешний кварц 12МГц. В PonyProg настройка фьюзов будет выглядеть следующим образом:

  

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

Установка драйвера

Установка велась на машину с системой Windows 7 и никаких проблем не возникло.
При первом подключении к компьютеру выйдет сообщение об обнаружении нового устройства, с предложением установки драйвера. Выбираем установку из указанного места:
 

  Выбираем папку где лежат дрова и жмем Далее


  Мигом появится окно с предупреждением о том, что устанавливаемый драйвер не имеет цифровой подписи у мелкомягких:


  Забиваем на предупреждение и продолжаем установку, после небольшой паузы появится окно, сообщающее об успешном окончании операции установки драйвера


 

  Все, теперь программатор готов к работе. Осталось выбрать программу, посредством которой будем работать с программатором.

USBASP и Bascom

  Как писал ранее, полную поддержку USBASP в Bascom-AVR сделали начиная с версии 1.11.9.6. Попалась тут мне страничка, иллюстрирующая, как можно подружить USBASP с более ранней версией компилятора, но тогда придется ставить avrdude.

  Настройка программатора для совместной работы с Bascom-AVR происходит в пункте меню Options-Programmer, в списке программаторов выбираем USBASP


Строка конфигурации Clock Frequency служит для выбора частоты работы программатора. Помнишь про джампер который необходимо замыкать когда нужно прошить микроконтроллер с частотой тактирования меньше 1,5 МГц? Так вот, в новой версии прошивки программатора реализавана возможность программно изменять частоту работы, эту фишку и использует Bascom. Можно выбрать частоту работы в диапазоне от 500Гц до 1,5МГц, по рекомендациям частота должна быть вчетверо меньше частоты работы прошиваемого микроконтроллера. Например, если требуется прошить контроллер с тактовой частотой 1МГц, нужно ставить частоту работы не более 250кГц или, для надежной работы, еще меньше. Я оставил в этом пункте автоопределение частоты.

Khazama AVR Programmer

Еще одна небольшая программа для работы с программатором USBASP. Мне она понравилась минимальным интерфейсом и кнопочками, срисованными с PonyProg =)
 

  Она работает со всеми ходовыми микроконтроллерами AVR, позволяет прошивать flash и eeprom, смотреть содержимое памяти, стирать чип, а также менять конфигурацию фьюз-битов. В общем, вполне стандартный набор.
Настройка фьюзов осуществляется выбором источника тактирования из выпадающего списка, таким образом, вероятность залочить кристалл по ошибке резко снижается. Фьюзы можно менять и расстановкой галок в нижнем поле, при этом нельзя расставить галки на несуществующую конфигурацию, и это тоже большой плюс в плане безопасности.


 Запись фьюзов в память мк, как можно догадаться, осуществляется при нажатии кнопки Write All.
Кнопка Save сохраняет текущую конфигурацию, а Load возвращает сохраненную.

 Эта фича помогает в случаях когда нужно прошить большое количество микроконтроллеров, не нужно будет каждый раз вручную выставлять галки при каждой прошивке МК.
 Кнопка Default предназначена для записи стандартной конфигурации фьюзов, такой, с какой микроконтроллеры идут с завода (обычно это 1МГц от внутреннего RC).
 !!!! Важно !!!! Как выяснилось, если использовать эту функцию биты Lock Bits необходимо выставлять вручную.

 

 В общем, за все время пользования этим программатором, он показал себя с наилучшей стороны в плане стабильности и скорости работы. Он без проблем заработал как на древнем стационарном пк так и на новом ноутбуке.

  Ниже можно скачать архив с прошивками и печатной платой, а так же программу Khazama:

 Раз народ активно интересуется данным программатором и спрашивает меня о возможности изготовления, решил изготовить печатные платы на производстве и сделать инструмент, которым приятно пользоваться. Пока в наличии имеются готовые печатные платы для этого программатора или можете приобрести уже готовый к работе программатор. 
Предложение ограничено, спешите 😉
 Все программаторы успешно обрели своих владельцев, а тем временем обдумываю о необходимость заново сделать заказ на производство печатных плат. Надо ли?

UPD 26.01.13

Если появятся желающие приобрести программатор USBASP на заводской плате, записывайтесь в очередь;) и делайте предзаказ! Условия на форуме http://avrproject.ru/forum/11-69-1#1307


 

UPD 5.03.13

Программатор снова стал доступен для покупки! Условия и цена приобретения выложены здесь http://avrproject.ru/index/usbasp/0-41 

avrproject.ru

Обзор программатора AVRISP-MKII / AVR / Сообщество EasyElectronics.ru

Попался ко мне в руки вот такой клон программатор AVRISP-MKII вот отсюда.


Что представляет из себя данный программатор? В целом это очередной клон программатора AVRISP-MKII, у которого есть необходимый максимальный набор функций для работы с микроконтроллерами AVR.

А в частности:

  • Наличие питания 5В и 3.3В — выбирается перемычкой. Это значит что от программатора можно запитать наше программируемое устройство.
  • Это высокоскоростной программатор. В целом из всех которые встречались, клон AVRISP-MKII оказался самым быстрым. 50 кило прошивки заливает за 3-4 сек.
  • Поддержка интерфейса программирования TPI, который имеется в некоторых моделях Attiny.
  • Поддержка интерфейса программирования PDI, который имеется в моделях Xmega.
  • Поддержка интерфейса программирования SPI, который имеется в большинствах моделях Attiny и Atmega. Поддержка трех интерфейсов означает, что этим программатором можно прошить огромное количество микроконтроллеров имеющих на борту хотя бы один из данных интерфейсов.
  • Данный программатор работает с программной средой AtmelStudio6.2 и ниже. Это значит что для использования данного программатора не требуется никаких сторонних утилит. AtmelStudio видит его как свою родную железку.
  • Работает так же с утилитой AvrDude. Только для этого надо сменить прошивку в самом программаторе. Но это делается движением одной руки, так как в программаторе имеется стандартный атмеловский загрузчик. Это значит, что для замены прошивки не требуется еще один программатор. Программатор по умолчанию залит прошивкой для работы с AtmelStudio.
  • Работает так же с программной средой Arduino. Это значит, что если в вашей любимой платке Arduino вдруг сдох или затерся загрузчик, то его можно восстановить этим же программатором прямо из среды программирования ArduinoIDE.
  • Есть вывод CLK для воскрешения программируемого микроконтроллера, если в него неправильно записали FUSE биты.

Вот схемка распиновки разъема программатора.


Для того чтобы начать пользоваться этим программатором надо сделать некоторые, не сильно сложные телодвижения.

Если планируем пользовться программатором совместно с AtmelStudio, то ее и нужно установить. Скачать свежаковскую версию можно отсюда Atmel.com. Правда требуется регистрация. После установки AtmelStudio в «управлении» должна появиться следующая фишка.


Далее втыкаем программатор, если драйвера не установились, то вручную указываем путь туда, где стоит AtmelStudio. После установки драйверов в «управлении» появиться следующее:


Если это есть, то программатор готов к совместному использованию с AtmelStudio.
Для использования программатора нужен кабель, который есть на том же сайте, но я себе сделал несколько другой, вот такой:


По той причине что я давно уже отказался от использования стандартного разъема IDC (который на программаторе). В программируемую плату я втыкаю стандартный PLS разъем. Вот примерно так:

В итоге получается вот так:

С AtmelStudio разобрались. А если человеку хочется шить из под AVRDUDE? Тогда надо сменить прошивку. Для начала надо скачать прогу FLIP 3.4.7 for Windows (Java Runtime Environement included) и установить ее. Без этой проги смена прошивки невозможна. После установки проги втыкаем программатор и активируем загрузчик находящийся в программаторе. Чтобы активировать загрузчик, надо на программаторе закоротить перемычкой джампер J_HWB. Потом отверткой или пинцетом кратковременно закорачиваем джампер J_RST. При этом загрузчик активируется и Windows сразу будет пытаться установить драйвера. Но не сможет. Поэтому вручную указываем путь туда где установился FLIP. После установки драйвера в диспетчере устройств должно появиться это:


Вот теперь можно заливать другую прошивку. Для этого запустим программу FLIP.

Нажимаем на:


И в выпавшем списке выберем


Далее нажимаем на Ctrl+U и в появившемся окне нажимаем Open. Появится вот такое окно:


В котором выбираем нашу прошивку клавишами Ctrl+L. И нажимаем RUN. Все прошивку сменили. Нажимаем на Start Application, что приводит к перезапуску программатора. Закрываем FLIP.

Теперь программатор готов к работе с AVRDUDE. Можно нырнуть сюда http://yourdevice.net/proekty/avrdude-prog и качнуть GUI для программатора.

Вот теперь все, да не совсем все. Для того чтоб начать пользоваться AVRDUDE вместе с какой нибудь GUI, надо снести Atmel USB драйвера. И установить другие драйвера libusb_driver для новой прошивки. Ибо драйвера от AtmelStudio для работы с AVRDUDE уже не попрут. Понятное дело что дергать туда сюда драйвера и постоянно перепрошивать программатор, в этом кайфа мало. Поэтому надо определиться в чем то одном. Либо работать с AtmelStudio либо с AVRDUDE. Соответственно для выбранного решения нужно настроить софт, прошивку, драйвера и этого придерживаться.

we.easyelectronics.ru

Чем и как «прошить» МК AVR ? Как загрузить программу в микроконтроллер. Как запрограммировать микроконтроллер AVR.

Я советую прошивать микроконтроллер прямо из программатора встроенного в компилятор CodeVisionAVR через простейший адаптер — буквально «пять проводков» соединяющих принтерный порт ПК с прошиваемым микроконтроллером AVR. ПОДРОБНО: Результат написания и компиляции программы — файл-прошивку с расширением .hex (и возможно файл с содержимым для 
EEPROM МК) нужно записать («зашить») в МК . МК AVR многократно программируются прямо в устройстве в котором будут работать — такое программирование называют — «ин систем программинн» или ISP.

Для этого установите на плате вашего устройства 6 контактов,  а лучше 6-ти штырьковый разъем для ISP

вид сверху платы на штырьки.
выводы подсоединить к МК в соответствии с указанными названиями.


Вывод 2 нужно подключить к 
+ питания МК если вы собираетесь использовать программатор питающийся от вашего же устройства — например фирменный ISP AVR.

Для «5 проводов» этот вывод не подключается. Для программирования достаточно 5 контактов. Соответственно и разъем который вы будете использовать может быть любым удобным для размещения на плате и имеющий минимум 5 контактов. Все контакты ISP разъема подсоединяются к  ножкам  МК в соответствии с названиями.

   
 

ВНИМАНИЕ !  в ATmega64 и ATmega128 выводы MOSI и MISO не применяют для ISP  Внимательно смотрите ДатаШит !     Например для ATmega128 сигналы MISOподключают к ножке PE1,  MOSI подключают к ножке PE0

 
   


Я советую вам пользоваться  интерфейсом программирования встроенным в компилятор CodeVisionAVR и конечно же в нем разрабатывать программу для МК.  Дело в том, что вам вряд ли удастся сразу написать программу без ошибок, даже после прогона в софт эмуляторе — симуляторе ваше устройство может делать не то,  что вы от него ожидаете — значит в программу нужно будет вносить изменения и снова зашивать в МК , и так раз 20 и более.  

Вы можете в компиляторе CodeVisionAVR открыть меню «Проджект -> Конфига -> Афта Мэйк»  и отметить чек бокс  «Program the chip» затем ОК. Еще нужно в меню «Сеттинс  -> Программер» выбрать ваш адаптер (подробней ниже) для программирования. Теперь после безошибочной компиляции программы вам будет доступна кнопка «Program» — нажмите на нее и произойдет программирование МК — т.е. файл .hex будет загружен в память программ МК. Затем МК будет «сброшен» (на ножку RESET будет подан лог. 0 а затем опять «1») и начнет выполнять только что прошитую (загруженную в него) программу. Вам даже не нужно будет отсоединять адаптер программирования от вашего устройства  если вы не используете в устройстве последовательный интерфейс SPI.  … и так до окончательной отладки устройства.
   
  В А Ж Н О !  В диалоге настройки программирования не трогайте галочки установки фьюзов МК если не разобрались четко что они делают! Иначе вы можете отключить режим ISP или внутренний RC-генератор и для следующего программирования вам понадобится ставить кварц с конденсаторами или даже искать Параллельный программатор для AVR. Но популярному ATtiny2313 даже параллельный программатор не поможет!   
   
в ATmegaXXX с завода включен внутренний RC генератор на  частоте 1 МГц   ( уточните это по ДШ  и его возможные частоты ) Если вам нужна другая частота или нужно включить внешний кварцевый или керамический резонатор — вам нужно запрограммировать некоторые фьюзы по таблицам из ДШ или по таблице фьюзов на стр. 2

З а п о м н и т е : 

Пример: Чтобы включить в ATmega16 внешний кварцевый резонатор с частотой от 3 до 8 МГц с конденсаторами (по схеме рис. 12 ДШ) найдите в ДШ раздел «System Clock».

В таблице 2 указаны комбинации фьюзов для разных источников тактового сигнала. Далее написано что с завода МК поставляется с такой комбинацией фьюзов

SKSEL   0001     SUT  10       CKOPT   1


По таблице 4  находим :
Для кварца с частотой от 3 до 8 МГц  нужны конденсаторы от 12 до 22 пФ и  вот  такая  комбинация  фьюзов :

SKSEL   1111     SUT  10       CKOPT   1

Установка фьюзов в программаторе компилятора  CVAVR


Для прошивания МК нажмите кнопку «Program All»

Для использования ATmega16 (и других мег) с внешним кварцевым или керамическим резонатором на частотах выше 8 МГц вам нужно установить фьюзы как в примере выше но запрограммировать CKOPT  — значит сделать его «0». Т.е. вам нужна такая комбинация:

SKSEL   1111     SUT  10       CKOPT   0

CKOPT   0  — нужен и тогда когда вы хотите подключить к XTAL2 другой микроконтроллер или тактируемый прибор.

Фьюзы  SUT   — определяют запуск генератора тактового сигнала, в большинстве случаев их установку можно оставить «как с завода»  —   SUT  10   —  более детально это описано в даташите в таблицах до 12.
  Для соединения компьютера с ISP разъемом устройства на AVR Советую сделать адаптер от STK200  — это «правильные 5 проводков» с микросхемой буфером снижающим вероятность случайного повреждения порта ПК. В установках компилятора CodeVisionAVR интерфейс «5-проводков» называется  «Канда системз STK200+/300»



Программа узнаёт адаптер STK200 по перемычкам на разъеме параллельного порта к которому он подключается — должны быть соединены двумя перемычками пары выводы: 2 и 12,  3  и 11. 

   
  Внимание!   Для программирования к МК должно быть подключено питание. Например +4…+5 вольт ко всем выводам МК в названии которых есть VCC  и 0 вольт ко всем выводам GND (это «общий» провод).     Пример тут 
   

Попробуйте поискать полезную инормацию в Гугле — ее там море !  Учитесь искать!

Если в МК нет внутреннего генератора тактового сигнала (например старые AVR серии AT90sXXXX или мега побывавшая в чьих то шаловливых руках изменивших фьюзы до того как попасть к вам) то нужно подключить кварц  на 1 — 8 МГц и два конденсатора от 15 до 33 пФ. Либо подать тактовый сигнал 1-1.5 МГц от внешнего источника — например генератора на микросхеме 74hc14 или на таймере LM555.

Программатор  AVReAl  может программировать МК без кварца и без конденсаторов. Он выводит тактовый сигнал на выв. 5 LPT его нужно подать на ножку XTAL1 МК и добавить в командной строке AVReAL специальный ключ  «-o0».  Программатор  AVReAl  позволяет назначать какие ножки LPT порта использовать — это будет полезно когда часть ножек LPT вы уже спалите   🙂

(Тактовый сигнал генерирует и программатор на USB по ссылке внизу этой страницы.)

 Еще очень советую поставить подтягивающий резистор 10 кОм от ножки Reset МК на питание VCC и конденсатор 0.01-0.33 мкФ (в апноутах AVR040 и AVR042 рекомендуют 0.01 мкФ) отReset на GND  —  как в схеме к задаче 7 курса.
   
 

Я использую самый простой вариант адаптера STK200 — «для самых ленивых»   — пять поводков соединяющих линии параллельного (LPT) порта ПК и AVR так же как на схеме STK200 выше, но без микросхемы буфера. Лучше все же токоограничительные резисторы от 150 до 270 ом впаять Проводки не более 15 см длиной !

 
   

Адаптер «5-проводков» прекрасно работает с компилятором CodeVision

   
 

Советую для изготовления адаптера взять » принтерный» шнур — он длинный и экранированный, а не экранированные проводки не стоит делать более 10-15 см.

 
   

 
Для питания устройства при программировании и отладке можно кроме сетевого адаптера использовать: 

  • — батарейку на 6 вольт с 2 диодами последовательно для понижения напряжения…

  • — можно три батарейки по 1,5 вольт последовательно соединить 

  • … а можно +5 вольт взять с вывода 1 гейм порта компьютера или осторожно из гнезда USB.

Желательно питать устройство от ПК!  В этом случае «земля» вашего устройства будет соединена с корпусом ПК и можно будет безопасно подключать и отключать разъем программирующего адаптера.

   
 

ВНИМАНИЕ!  Всегда старайтесь первыми соединить «земли» устройств, а затем питание и потом уже сигнальные линии.

 
   

Не поленитесь:  спаяйте адаптер STK200 на микросхеме буфере по рисункам внизу страницы  — так как LPT порт компьютера более нежен чем COM — соответственно его спалить проще…   
   
  Если вы хотите использовать ножки МК SCK, MOSI, MISO в вашем устройстве то подключайте другие компоненты к ним через резисторы 4.7 КОм — чтобы не мешать программированию. Так рекомендовано в апноуте AVR042 Для Мега64, -128, -256 вместо MOSI и MISO используются другие ножки для ISP программирования ! 
   
   
  Существуют специальные программы «бутлодеры» которые записываются в микроконтроллер способами перечисленными выше и после этого микроконтроллер может сам, при включении, закачивать в себя программу (например из ПК через адаптер UART rs232 COM port — схема в задаче 4 курса) и запускать ее выполнение. Есть много бесплатных загрузчиков 
   

Программатор AVR микроконтроллеров. LPT программатор.

Кликни чтобы увеличить

 

Принципиальная схема программатора на LPT порт показана на рисунке. В качестве шинного формирователя используется микросхема 74HC244 (К1564АП5), 74LS244 (К555АП5) либо 74ALS244 (К1533АП5), хотя может использоваться любой другой неинвертирующий шинный формирователь с тремя состояниями (в этом случае может потребоваться соответствующее изменение схемы).Светодиод VD1 индицирует режим записи микроконтроллера,
светодиод VD2 — чтения,
светодиод VD3 — наличие питания схемы.
Напряжение, необходимое для питания схема берёт с разъёма ISP, т.е. от программируемого устройства. Эта схема является переработанной схемой программатора STK200/300 (добавлены светодиоды для удобства работы), поэтому она совместима со всеми программами программаторов на PC, работающих со схемой STK200/300. Для работы с этим программатором используйте программу CVAVR

Программатор можно выполнить на печатной плате и поместить её в корпус разъёма LPT, как показано на рисунках:
Для работы с программатором удобно использовать удлинитель LPT порта, который несложно изготовить самому (к примеру, из кабеля Centronix для принтера), главное «не жалеть» проводников для земли (18-25 ноги разъёма) или купить. Кабель между программатором и программируемой микросхемой не должен превышать 20-30 см.

AVR miniICE —  

Это профессиональное средство для программирования и  отладки программы МК ATmega фирмы Atmel в реальном устройстве. Он полностью совместимый с оригинальным AVR JTAG ICE.

Автор данного устройства Milan Kostomlatsky [email protected]
Оригинальное описание находится здесь

bigbenmobileblog.blogspot.com

Цоколевка коннектора ISP программатора TL866A | avr

Нумерация штырьков 6-выводного коннектора «папа» на корпусе программатора TL866A:

# PIC AVR
1 VPP/MCLR ~RESET
2 VCC VCC
3 GND GND
4 PGD MOSI
5 PGC MISO
6 N.C. SCK

[Проблема программирования ATtiny45 через ISP]

По непонятной причине AVR-ки ATtiny45, ATtiny85 нельзя программировать через интерфейс ISP (ICSP). Радиокнопка выбора ICSP становится серой, когда выбирается ATtiny45.

Хакерскими методами можно эти кнопки разрешить (спасибо [email protected] и его программе Enable button v.1.1, 28253_Enable button.exe), но это мало что дает. Чипы ATtiny45 все равно не программируются, на микроконтроллер подается опасное высокое напряжение, и утилита программирования сообщает о срабатывании защиты ограничения тока.

Ссылку на утилиту 28253_Enable button.exe нашел на 9 странице блога [3].

«Try this link. MD5: 28d10f5ea6f3b1e5de4074aa5294ef92. Run this programm, switch to window with blocked elements and run mouse cursor over them — they will unlock!»

[Ссылки]

1. XGecu TL866II Plus USB High Performance Programmer site:autoelectric.cn.
2. Цоколевки коннекторов ISP.
3. EEVblog #411 — MiniPro TL866 Universal Programmer Review site:eevblog.com.

microsin.net