Программатор attiny84 usbtiny avr isp

Программатор attiny84 usbtiny avr isp

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

А дело было так. Некоторое количество постов назад мы собрали преобразователь USB to UART на ATtiny2313 (а в прошлой статье мы даже улучшили печатную плату). Еще при выборе схемы преобразователя я планировал на его базе (при помощи заливки различных прошивок) получать устройства различного назначения. Тогда я не подозревал, что данный преобразователь можно использовать шире, чем я планировал. Увидев схему USB программатора – USBtiny на ATtiny2313 я понял, что я уже имею готовый программатор!

Посмотрев на схему, сделанного ранее, преобразователя USB to UART (домашняя страничка )

и схему USB программатора USBTiny

можно увидеть, что это одна и та-же схема. Различия незначительны – отсутствуют сигнальные светодиоды и несколько резисторов. Для того, чтобы преобразователь стал USB программатором нужно просто прошить микроконтроллер новой прошивкой и сделать кабель для подключения.

Теперь все по порядку.
1 Для начала нужно собрать преобразователь (это если Вы его еще не собрали).
Вот рисунок печатной платы преобразователя:
T2313-SMD-2 v2.0 – Рисунок печатной платы UART-USB на ATtiny2313
Для того, чтобы обеспечить все необходимые сигналы для программирования впаиваем защитные резисторы номиналом по 100 Ом в линии ножек 12, 16, 17, 18, 19 (номинал не критичен – можно варьировать).

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

usbtinyisp-T2313.hex v1.04 – Прошивка USBtiny программатора для ATtiny2313
T2313-FuseBit – Фьюз-биты ATtiny2313 для USBtiny
Для Algorithm Builder и UniProf галочки ставятся как на картинке.
Для PonyProg, AVR Studio, SinaProg галочки ставяться инверсно.

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

Схема шлейфа проста.

Из особенностей – я вынес индикаторный светодиод и балластный резистор для него за плату на разъем – это для того, чтобы плату без перепайки можно было использовать для других устройств (ну и так прикольней – светодиод мигает прямо в разъеме ). Кроме того, линия Vcc отделена от общего разъема – это на случай если программируемое устройство запитывается не от USB, а от своего источника (что, в принципе, желательно). Сигнальные линии (SCK, MISO, MOSI) желательно экранировать (например чередованием сигнальных и земляных линий в шлейфе). Длину шлейфа не стоит делать большой – до 50 см, не больше. Если нужно программировать удаленное устройство всегда можно применить USB удлинитель – так надежней. Вот мой готовый шнурок:

4 Сам программатор готов, теперь нужно установить драйвер для того, чтобы Винда смогла с ним работать (для Mac OS X & Linux, вродь-как, драйвера вообще не нужно). Тут все просто:

4.1 Скачиваем драйвер, разархивируем его.
usbtinyisp w32 driver v1.12 – Win драйвер для USBtiny программатора
Если у Вас Винда 64 битная, Vista или Windows 7 нужно установить другой драйвер:
usbtinyisp_libusb-win32_1.2.1.0.zip – Драйвер USBtiny для х64, Vista или Windows 7

4.2 Вставляем наш программатор в USB порт.

4.3 В трее появится сообщение о том, что найдено новое устройство.

4.4 Запустится мастер нового оборудования

4.5 Указываем в окошке «место поиска» папку с драйвером.

4.6 Пройдет процесс установки драйвера. Появится окошко сообщающее о том, что драйвер установлен. Чтобы проверить, что мы там наустанавливали – заходим в «Мой компьютер/Свойства/Оборудование/Диспетчер устройств» и находим там наш программатор

Винда увидела новое устройство и готова с ним работать.

USBtiny программатор поддерживается AVRDude, а это значит, что многие среды программирования будут с ним работать без проблем. Еще одним достоинством работы с AVRDude является то, что для работы с AVRDude существует множество оболочек GUI из которых можно выбрать подходящую именно для Вас (но об этом в следующей статье).

ДОПОЛНЕНИЯ.
1 Дмитрий Шпак сделал довольно удачную разводку программатора. Программатор получился небольшого размера, имеет стандартный разъем для программирования и, я считаю, будет удобен в работе. Плата двусторонняя.

USBtiny.lay – Разводка USBtiny от Дмитрия Шпака

2 Еще один вариант разводки от Андрея Баранова (Andru_48)


USBtiny.lay – Разводка USBtiny от Андрея Баранова

3 Вариант от mebadboy
Доброе время суток.
Новую печатку я не собирал. Я просто исправил старую – Дмитрий Шпак . Там минимум исправлений – одну дорожку перерезать, кинуть проводок, впаять резистор и диод впаять в другое место.
USB-tiny-mebadboy – Печатка USBtiny от mebadboy
Вот лог dmesg при подключении под linux:
usb 4-2: new low speed USB device using uhci_hcd and address 2
usb 4-2: New USB device found, >usb 4-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
usb 4-2: Product: USBtiny

Превращаем Arduino в полноценный AVRISP программатор

Приветствую всех пользователей хабра, в частности тех, кто страдает темой Arduino, как и я.

Меня уже давно спрашивают — можно ли прошивать hex файлы при помощи Arduino? Изменять фьюзы? Считывать прошивку? И всякое такое… Ответ — можно, и я сегодня вам расскажу, как я это делаю.


(Данное видео дублирует представленную ниже информацию)

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

Небольшая предыстория:
Одного прекрасного дня, я наткнулся на отличный проект на ATtiny13, но увы автор выгрузил в сеть только hex-файл и схему, ну и конечно же, я так и не смог его попробовать в железе. Меня этот вопрос мучил всё больше и больше, и тут я случайно наткнулся на одно видео в сети, где автор утверждал, что он при помощи Arduino прошил другой микроконтроллер, имея только hex-файл, ну и схему, само собой. Именно он мне подсказал — используй SinaProg, но с Arduino’вскими файлами…

Загуглив на тему SinaProg, я скачал SinaProg 2.1.1.RUS, но он работать отказывался с Arduino, потому я закинул пару-тройку файлов из Arduino IDE в папку SinaProg 2.1.1data и всё заработало.

Пройдёмся коротко по возможностям софта:

В блоке Hex-file выбираем hex или eep(первый — прошивка, второй — содержимое энергонезависимой памяти).

А той части, где кнопка “>”, мы можем видеть всякие сообщения, типа «OK», или «ERROR», сама же кнопка “>” открывает логи Avrdude.

В блоке Flash есть кнопки:

Program — запись hex-файла в микроконтроллер(возможно, когда выбран Hex-file);
Verify — проверка прошивки, что в микроконтроллере, и hex-файла(проще говоря, их сравнение), если всё норм — программа говорит OK;
Read — считать hex-файл.

С блоком EEPROM всё по аналогии.

Далее блок Device, тут можно выбрать нужный микроконтроллер, вот весь список поддерживаемых(список выдрал из файла Device.txt, который лежит в папке SinaProg 2.1.1data):

Шутка, вон их сколько:

AT90CAN128
AT90CAN32
AT90CAN64
AT90PWM2
AT90PWM2B
AT90PWM3
AT90PWM3B
AT90USB1286
AT90USB1287
AT90USB162
AT90USB646
AT90USB647
AT90USB82
AT90s1200
AT90s2313
AT90s2323
AT90s2333
AT90s2343
AT90s4414
AT90s4433
AT90s4434
AT90s8515
AT90s8535
ATmega103
ATmega128
ATmega1280
ATmega1281
ATmega1284P
ATmega128RFA1
ATmega16
ATmega161
ATmega162
ATmega163
ATmega164P
ATmega168
ATmega169
ATmega2560
ATmega2561
ATmega32
ATmega324P
ATmega325
ATmega3250
ATmega328P
ATmega329
ATmega3290
ATmega3290P
ATmega329P
ATmega48
ATmega64
ATmega640
ATmega644
ATmega644P
ATmega645
ATmega6450
ATmega649
ATmega6490
ATmega8
ATmega8515
ATmega8535
ATmega88
ATtiny11
ATtiny12
ATtiny13
ATtiny15
ATtiny22 2343
ATtiny2313
ATtiny24
ATtiny25
ATtiny26
ATtiny261
ATtiny44
ATtiny45
ATtiny461
ATtiny84
ATtiny85
ATtiny861
ATtiny88
ATxmega64A1
ATxmega128A1
ATxmega128A1D
ATxmega192A1
ATxmega256A1
ATxmega64A3
ATxmega128A3
ATxmega192A3
ATxmega256A3
ATxmega256A3B
ATxmega16A4
ATxmega32A4
ATxmega64A4
ATxmega128A4

Читайте также:  Резисторы. кодовая маркировка

Как видите, есть все популярные микроконтроллеры фирмы ATmel, в частности ATmega328P, ATmega8, ATtiny13, ATtiny2313 и всякие другие…

Далее — кнопка Search, если её нажать, то программа попытается прочитать сигнатуры того микроконтроллера, который подключен к программатору, проще говоря, поищет микроконтроллер. Потом может ответить „OK“ или „ERROR“ в информационном блоке, если всё нормально, или нет, соответственно.

В блоке Fuses есть предустановки для ATmega8 для работы на разных частотах, но, увы, только для ATmega8 и ATmega32, можно добавить в файле Fuse.txt (который лежит в папке SinaProg 2.1.1data).

Есть кнопка Program — записать предустановки, смотрим на абзац выше.

А так же Advanced — лихая кнопка, после её нажатия можно увидеть вот такое окно:

Device signature — какие-то циферки, я так понял это идентификатор микроконтроллера, по ним программа опознаёт, что за микроконтроллер мы ей суём.

Информационная часть, всё как выше.

Чуть ниже идут фьюзы… если уж зачешется, то не забывайте их сначала считать кнопкой Read(чтобы не нарочно изменить важные фьюзы, например «SPIEN» или «RSTDSBL»), записать фьюзы — кнопка Write, кнопка Chip Erase стирает микроконтроллер, что-то примерно напоминает — форматирование флешки на компьютере(но фьюзы не устанавливаются по умолчанию, так что забывать об этом не стоит).

Пару слов о фьюз-битах — это такие как бы тонкие подстройки микроконтроллера, то частоту поднять, то убавить, то вкл/выкл тактирование от внутренней RC цепочки то ещё что-то… в общем, туда лезть только в крайнем случае, иначе можно заблокировать микроконтроллер(нашаманить так, что перестанет работать, серьёзно), и уже без Atmega fusebit doctor никак.

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

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

Итак, последний блок основного окна программы — Programmer, тут выбирается тип программатора, если вы используете Arduino в качестве программатора — ставьте всё, как у меня на скрине, только не COM19, это у меня такой, у вас, наверное, будет другой, в любом случае точно не COM1, первый это системный, актуален только для программаторов, которые подключаются к реальному COM порту, например, Программатор Громова. На ноутбуке COM-порта может не быть, а на компьютерах, как правило, COM-порт ещё есть, особенно тех, что постарше. Можно использовать и другой программатор, к примеру, USBASP, только не забываем выбрать его в списке, скорость для него я ставлю такую же как и в случае с AVRISP.

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

Gromov
USBtiny
ALF
Arduino
AT ISP
AVR109
AVR910
AVR911
AVRISP
AVRISP 2
AVRISP mkII
AVRISP v2
Bascom
Blaster
BSD
Butterfly
C2N232I
DAPA
DASA
DASA 3
Dragon_DW
Dragon_HVSP
Dragon_ISP
Dragon_JTAG
Dragon_PP
DT006
ERE-ISP-AVR
Frank-STK200
Futurlec
JTAG 1
JTAG 1Slow
JTAG 2Slow
JTAG 2
JTAG 2Fast
JTAG 2ISP
JTAG 2dW
JTAG mkI
JTAG mkII
MIB510
pAVR
Picoweb
Pony-STK200
ponyser
SI Prog
SP12
STK200
STK500
STK500 HVSP
STK500 PP
STK500 v1
STK500 v2
STK600
STK600 HVSP
STK600 PP
USBasp
Xil

Лично я тестировал только на программаторах AVRISP(Arduino с прошитым скетчем ArduinoISP) и USBasp, на двух микроконтроллерах — ATmega8 и ATtiny13.

Чтобы можно было шить/читать/изменять фьюзы/ убить микроконтроллер при помощи Arduino, предварительно нужно зашить скетч ArduinoISP, подключив всё, как я писал, например вот тут:

Если в двух словах, то подключаем пины Reset, MOSI, MISO, SCK микроконтроллера, который будем прошивать/считывать прошивку/изменять фьюзы так, как указано в скетче в комментариях, а именно:

Вот пример подключения к ардуине ATmega8:

Ну и по аналогии… Ищем карту пинов, например, в даташите (техдокументация на МК) интересующего нас микроконтроллера, вот, к примеру, первая ссылка из гугла по запросу «ATmega8 pdf».

PS У меня было такое, что ATtiny13 перестала прошиваться, на попытки её программирования, после того, как я попробовал запустить её на частоте 128 kHz, откопал где-то вот такой, слегка модифицированный код ArduinoISP который заставляет прошивку/изменение фьюзов происходить медленнее в несколько раз и может ещё какая-то магия, не разбирался, честно.

Записываем программу в Attiny85

Май 2020 года. Самоизоляция. Свободное время. Вспомнил старое увлечение.

Очень давно хотел освоить микроконтроллеры Atmel Attiny 85. Мастерил программатор на основе этого же микроконтроллера, но что-то не получалось. На самоизоляции почитал статьи на эту тему. Ребята не сидели без дела. Развитие бесплатной системы разработки программного обеспечения, технических средств для работы с микроконтроллерами фирмы Atmel не остановилось. Бойцы этого фронта приходят и уходят, а результаты остаются в сети. Применение этих знаний осложняется отсутствием стандартизации. Поэтому постараюсь подробнее рассказать о своем опыте.

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

Давайте разберёмся, что нужно записать в микроконтроллер для его правильной работы в изделии. Сделать это необходимо до момента принятия решения на повторение проекта, так как иногда авторы забывают важные моменты конфигурирования (настройки) микроконтроллера. У них все работает, а мы начинаем повторять, но у нас не получается. Автор занялся другими проектами, с ним нет связи, ему уже трудно вспомнить о своем старом проекте. Ситуация трудная, фактически тупиковая.

Итак, для правильной работы изделия микроконтроллер необходимо подготовить (настроить).
Для настройки микроконтроллера для конкретного проекта требуется:

1. Записать в память программ (flash) программу, она присутствует в технической документации в виде файла с расширением hex (например, такой timer.hex).

2. Записать в энергонезависимую память (EEPROM) данные (постоянные величины, которые программа будет считывать при необходимости), они присутствуют в технической документации в виде файла с расширением eep (например, такой timer.eep). В простых проектах часто в энергонезависимую память ничего не записывают.

3. Включить, выключить или изменить режим работы электронных устройств, находящихся в микроконтроллере. Решается эта задача изменением специальных ячеек памяти (Fuse) программ, которые нельзя изменить при записи файла с расширением hex.

4. Разрешить или запретить считывание, изменение памяти программ. Решается эта задача изменением специальных ячеек памяти (Lock Bits) программ, которые нельзя изменить при записи файла с расширением hex.

5. Система разработки программ для плат семейства Arduino – Arduino IDE.

6. Программатор – электронную схему (Hard). Я буду использовать плату Arduino China (CH340). На сайте – https://github.com/AndrewBiz/avr-programmer-info/blob/master/docs/test-AVR-programmers-RU.md опубликовано следующее заявление: «Замечательно прошивает, не требует особых телодвиждений, работает в режиме моста UART-Host. В качестве USB-UART переходника используется китайский чип CH340G. Работает он вполне надежно, при этом на порядок дешевле варианта m16u2 (Arduino Original (m16u2))». Для его работы в качестве программатора, скомпилируем скетч ArduinoISP (входит в примеры Arduino IDE) автора Randall Bohn и запишем результат в микроконтроллер atmega328 платы Arduino China (CH340). Как записано в самом скетче: «Этот скетч превращает Arduino в AVRISP». У нас есть программатор AVRISP (В статьях в сети его называют иногда не так).

Перевод заголовка скетча ArduinoISP.

7. Программа, которая будет управлять нашим программатором AVRISP.
Я выбрал программу SinaProg 2.1.1 SinaProg – это графическая оболочка для программы AVRdude, с простым и функциональным AVR fuse-калькулятором. SinaProg является бесплатным и свободно распространяется. Данная утилита портативная, то есть работает с любого места без установки. Помимо собственных файлов она включает в себя программу AVRdude. SinaProg создана иранскими ребятами, которые занимаются сейчас другими делами. Если SinaProg не запускается, то возможно у вас в системе не установлена программа NET Framework для windows от Microsoft, поэтому потребуется установить его.

6. Соединительные провода.

7. Макетная плата.

Используя, Фото 0_1 собираю схему программирования микроконтроллера ATtiny85 с помощью платы Arduino China (CH340) превращенной с помощью скетча ArduinoISP в программатором AVRISP, макетной платы и соединительных проводов с наконечниками.

Читайте также:  Двойной изолированный вольтметр для латра на atmega8-arduino

Приступаем к освоению программы управления программаторами SinaProg и записи управляющей программы в микроконтроллер Attiny85. При первом запуске SinaProg выставляю параметры программатора – AVRISP, COM16 (моя плата Arduino China (CH340) на моем ПК с операционной системой Windows XP определяется на Сom16), BR 19200. На вкладке Device стоял микроконтроллер ATtiny84, я нажал на кнопку Searh (поиск). Все прошло хорошо, программа правильно определила микроконтроллер ATtiny85 и на вкладке Device выставила ATtiny85. SinaProg сообщила так же: «У микросхемы, которую я определяю, персональный идентификационный номер равен 0x1e930b, а у микроконтроллера ATtiny84, который был выставлен в окне Device, номер равен 0x1e930C. Для автоматического определения микроконтроллеров нажимайте на кнопку Searh два раза». Перевод смысловой, не дословный.

Проблемы нарисовались при нажатии на кнопку Advanced. Окна программы lock Bits, Calibration (калибровочный коэффициент), High Fuse, Low Fuse, Ext. Fuse прозрачные (неактивные), то есть программа не может работать с этими объектами.

После долгих поисков, чтений статей пришлось дописывать файл avrdude.conf из состава SinaProg 2.1.1 для полной поддержки микроконтроллера ATtiny85.

Скачать файл avrdude.conf с поддержкой ATtiny85

После замены файла avrdude.conf, SinaProg 2.1.1 считала lock Bits, Calibration (калибровочный коэффициент), High Fuse, Low Fuse, Ext. Fuse.

Работу SinaProg 2.1.1 в Windows XP (32bit) c микроконтроллера ATtiny85 я проверил.
У меня есть ПК с операционной системой Windows 7 (32bit). Я читал о том, что SinaProg 2.1.1 не работает на системах с Windows 7.
Я все же решил проверить работу SinaProg 2.1.1 на системе с Windows 7. А также заодно проверить работу Arduino China (CH340) как программатора AVRISP на системе, где не установлена Arduino IDE.

Я подключил кабелем USB Arduino China (CH340) – программатор AVRISP к ПК с операционной системой Windows 7 (32bit), и в диспетчере устройств появилось устройство USB2.0-Serial cо знаком !. Система требует установить драйвер.

Устанавливаем драйвер: разархивируем файл CH341SER.rar, запускаем setup, затем install. Скачать файл CH341SER.rar

Установка драйвера прошла успешно, и в диспетчере устройств появилось новое рабочее устройство USB-SERIAL CH340 (COM5) – Arduino China (CH340) – программатор AVRISP).

Далее я настроил в свойствах устройства SERIAL CH340 (COM5), скорость передачи данных – 19200 бит в секунду.

К моему удивлению SinaProg 2.1.1 запустилась, но я не смог выставить COM5. Его не было в выпадающем списке. Там были только COM1, COM2, COM3, COM4, LTP, USB. При установке USB не заработало. Но тут я решил посмотреть каталог программы SinaProg 2.1.1 и обнаружил там файл Port.txt

Посмотрев содержимое файла Port.txt, я дописал в него строку COM5 com5 и сохранил его.

И случилось чудо. Я смог настроить SinaProg 2.1.1 (см Фото 13 окно Programmer). SinaProg 2.1.1 определила микроконтроллер ATtiny85 после двойного нажатия кнопки Search,

SinaProg 2.1.1 считала lock Bits, Calibration (калибровочный коэффициент), High Fuse, Low Fuse, Ext. Fuse.

Для полной уверенности я записал в микроконтроллер ATtiny85 файл timer.hex, списал данные с ATtiny85 в файл timer2.hex , а затем переключился к ПК с операционной системой Windows XP и считал данные с ATtiny85 в файл timer3.hex. Сравнил файлы timer2.hex и timer3.hex – они оказались одинаковые.

Затем я переключился к ПК с операционной системой Windows 7 и стер программу (Chip Erase) и считал память Flash в файл timer3.hex, он оказался чистым.

В итоге я получил возможность работать с микроконтроллером ATtiny85 на ПК с операционными системами Windows XP и Windows 7. И могу утверждать, что программа SinaProg 2.1.1 работает на ПК с операционной системой Windows 7 (32bit). Также хочется сказать спасибо создателям хорошей программы SinaProg 2.1.1.

Теперь я задумался, а не сделать ли мне платку (шильд) типа такой, кtimerак на Фото 0_3, которая будет сверху устанавливаться на мою Arduino China (CH340) и подключаться к ее разъёмам.

Пример применения.
Предположим, я хочу собрать Программатор vusbtiny.
В технической документации я нахожу файл – vusbtiny85.hex, файла vusbtiny85.eep нет. Информация по фьюзам оказалась в виде графического файла. Скачать файл vusbtiny85.rar с файлом vusbtiny85.hex

Записываем файл – vusbtiny85.hex в микроконтроллер ATtiny85.

Теперь попробуем поработать с фьюзами. На вкладке Advanced в окне Low Fuse меняем 62 на E1 и нажимаем кнопку Write, а затем Read. Значение фьюза E1 не меняется, а значит, Low Fuse прописался.

Теперь при изменении Hign Fuse c DF на 5D я потеряю возможность моего программатора к работе с этим микроконтроллёром, т.к. мы изменим назначения выводов микроконтроллёра. Так и произошло. Теперь с этим микроконтроллёром можно будет работать только в режиме High Voltage Serial Programming.

Но об этом в следующей статье. А в технической документации на программатор vusbtiny указано: «Далее необходимо поменять фьюзы так, чтобы firmware могло использовать вывод 1 микроконтроллера (который пока по умолчанию используется для сброса). Для этого выполните команду:

Внимание! Эта команда запретит дальнейшую перепрошивку запрограммированного чипа, так как вывод 1 перестанет работать как вход сброса. Чтобы стереть/перепрограммировать микроконтроллер, нужно использовать специальный высоковольтный программатор HVSP. Только им можно восстановить фьюзы, чтобы чип снова программировался по ISP».

Но теперь у меня есть микроконтроллер ATtiny85, подготовленный для работы в программаторе vusbtiny.

Скачать файл с SinaProg 2.1.1. rar с программой SinaProg 2.1.1

Программатор attiny84 usbtiny avr isp

Часто можно слышать отзывы об Arduino, что это дорого, неэффективно, профанация идеи и т.п. Если задуматься, то окажется, что во многом эта критика справедлива. Одним Arduino сыт не будешь. Если мне требуется микроконтроллер для чего-то простого, например: дисплей и пара кнопок, то использование для такой тривиальной задачи Arduino, действительно можно сравнить с забиванием гвоздей электронным микроскопом. Но если отбросить эмоции и подумать, что наиболее ценное в Arduino-проектах? На мой взгляд, это колоссальный объем открытого кода написанного под различные проекты. Называя вещи своими именами, я не хочу писать с нуля программу для работы микроконтроллера с дисплеем, я хочу использовать уже готовую библиотеку, которую я использовал для Arduino. И не потому что мне “слабо”, а потому что я не вижу смысла в изобретении еще одного велосипеда.

О портировании проектов Arduino для “младшего” семейства микроконтроллеров AVR ATtiny пойдет речь в этом посте.

Из литератуты рекомендую почитать книгу: Андрей Евстифеев “Микроконтроллеры AVR семейства Tiny”

    • Что будем программировать?
    • Проект позволяет задействовать микроконтроллеры ATtiny84 (84/44/24), ATtiny85 (85/45/25), и ATtiny2313 (4313).
    • ATtiny84/44/24 это 14-pin микроконтроллеры с размером флеш-памяти под прошивку 8/4/2 Кбайта соответственно.
    • ATtiny85/45/25 – это то же самое, но на 8-pin. ATtiny2313/4313 – Выделяется из общего ряда являясь по сути ревизией AVR Classic AT90s2313. На борту имеется и I2C и UART, 20-pin, 2/4 Кбайта под прошивку. Вкусная штучка.

Arduino использует старшее семейство микроконтроллеров ATmega. Портируя программы на ATtiny придется отказаться от некоторых плюшек. Что мы теряем кроме меньшей памяти и меньшего количества ног? Отказаться придется от UART и I2C интерфейсов(ATtiny2313 это по сути не совсем ATtiny). Если вас это не пугает, то идем дальше.

  • Программатор. Для того чтобы залить прошивку в чип, нужен будет программатор. Здесь я буду использовать сам Arduino в качестве программатора.
  • Используемое ПО: Slackware64-14.1 + Arduino-1.0.5
    1. Сначала нужно добавить поддержку ATtiny для Arduino IDE. Заходим по первой ссылке на сайт проекта arduino-tiny На текущий момент я вижу два zip архива доступных для скачивания, для версий Arduino IDE v1.0 и v1.5. Хм. Я пользуюсь последней доступной версией 1.0.5, какой архив следует выбрать? Выбирать надо первое. Версия 1.5 еще только разрабатывается. Итак: Получаем папку tiny в которой лежит файл README. Открываем его вашим любимым текстовым редактором и внимательно читаем секцию INSTALLATION/УСТАНОВКА
      Если присмотреться, то мы уже дошли до этапа:

      Здесь, пожалуй, сразу следует пояснить. oscillator – генератор тактовой частоты. Если вы купили микроконтроллер и еще не успели поменять fuse-биты, то генератор должен быть встроенным и работать на частоте 1MГц. Что будет, если ошибешься с частотой? Работать будет, но или медленнее или быстрее.

      BOD – детектор пониженного питания ака Brown-out Detection. Датчик позволяющий определить пониженный уровень питания и “мягко” выключить чип предотвратив дребезг питания. Дело в том, что выключение питания, процесс не мгновенный, чип доли секунды работает при не достаточном питании. В таком состоянии, программа зашитая в нем, начинает выполняться с произвольных адресов т.е. работать хаотически. Это чревато чем? Если ваша программа пишет в EEPROM, то в этом состоянии она запишет туда кашу.

    2. Программатор. Здесь все просто. Подключите Arduino к компьютеру, запустите Arduino IDE, и запишите программу из примеров: меню -> Файл-> Примеры->ArduinoISP. Программатор готов.
    3. Сборка схемы. Для прошивки через ISP интерфейс на каждом микроконтроллере имеются четыре контакта MOSI, MISO, SCK, RESET. ISP-программатор позволяет перепрошить чип уже впаянный в схему. Он так и называется In-System Programming внутрисхемный программатор. В связи с этим, контакты MOSI, MISO, SCK по совместительству имеют функции тех или иных цифровых/аналоговых выводов. Расположение контактов Вашего микроконтроллера можно посмотреть по datasheet на официальном сайте.

      У меня под рукой оказался ATtiny45

      Схема подключения такая

      Я использовал в качестве программатора Arduino на ATmega168. Конденсатор электролитический 10мФ x 16В. Минус на GND, плюс на RESET. Я не уверен, что он нужен на Arduino c ATmega328. Видел схемы без конденсатора, но шить через ATmega328 не пробовал.

    4. Прошивка. В Arduino IDE в меню Сервис – Программатор установите опцию: Arduino as ISP В меню “Плата” укажите тип прошиваемого микроконтроллера.
      Откройте из “Примеров” программу “Blink”. В самом начале, строку: исправте на К Pin0 (пятый контакт ИС) подключите подтягивающий резистор, на другой конец резистора анод светодиода, катод которого соедините с землей.
      Скомпилируйте и залейте программу. Работать должно сразу.
      При прошивке микроконтроллера может выдать предупреждение:
      Вашим любимым текстовым редактором откройте файл
      найдите секцию со своим микроконтроллером и добавьте в нее две строки
      Попробуйте перепрошить микроконтроллер, предупреждение должно исчезнуть. Подробнее смотрите по четвертой ссылке

    USBasp – USB программатор для микроконтроллеров Atmel AVR

    USBasp – это внутрисхемный USB программатор для микроконтроллеров Atmel AVR . Данный программатор состоит из одного микроконтроллера AT m ega8 и небольшого количества пассивных элементов, поэтому он довольно компактный (70х20мм) и имеет элегантный дизайн.

    Для работы с программатором необходимо установить только USB драйвер и нет необходимости прошивать сам микроконтроллер с использованием дополнительного оборудования.

    • работает с несколькими платформами: Windows (XP, Vista и Windows 7), Linux и Mac OS X;
    • нет необходимости использовать дополнительные микроконтроллеры или SMD элементы;
    • скорость программирования до 5 кБ/сек;
    • SCK-джампер позволяет программировать низкоскоростные микроконтроллеры (

    Указываем папку в которой лежат драйвера для USBasp программатора.

    Нажмите кнопку «Далее» и начнется процесс установки.

    После установки драйвера мастер оборудования завершит работу.

    Установка драйвера для USBasp программатора на Windows Vista x64 и Windows 7:

    1. Скачайте драйвер –

    2. Вставьте USBASP в порт USB;

    Система будет пытаться установить драйвер из Центра обновления Windows

    Теперь, перейдите в диспетчер устройств и найдите запись для программатора USBASP. Он должен отображаться с желтым значком предупреждения;

    Щелкните правой кнопкой мыши на устройстве и выберите пункт “Обновить драйвер”

    В ответ на запрос “Как вы хотите найти драйвер”, выберите “Выполнить поиск драйверов на этом компьютере”

    Выберите папку, в которую вы распаковали файлы драйвера нажмите кнопку “Далее”

    После чего, в окне появится красная полоса, которая предупреждает Вас сообщением “Windows не может проверить издателя этого программного драйвера”;

    Нажмите кнопку “Установить программное обеспечение этого драйвера” и драйвер будет установлен.

    Программы для работы с программатором:

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

    ? AVRDUDE – поддерживается USBasp начиная с версии 5.2;

    ? BASCOM-AVR – поддерживается USBasp начиная с версии 1.11.9.6;

    ?Khazama AVR Programmer – Windows XP/Vista GUI приложение для USBasp и avrdude;

    ?eXtreme Burner – AVR – программа Windows GUI для USBasp.

    В комплекте с программатором идет 10-контактный кабель, как показано на основной фотографии.

    Распиновка 10-контактного кабеля

    1 – MOSI (Выход данных для последовательного программирования)

    2 – VTG +5V (Выход +5В, для питания программируемой платы от шины USB током до *200мА . )

    3 – NC (Не используется)

    4 – GROUND (Общий или минус питания)

    5 – RESET (Подключается к выводу RESET микроконтроллера)

    6 – GROUND (Общий или минус питания)

    7 – SCK (Выход тактирования данных)

    8 – GROUND (Общий или минус питания)

    9 – MISO (Вход данных для последовательного программирования)

    10 – GROUND (Общий или минус питания)

    При разомкнутом джампере — частота SCK будет высокой = 375 кГц, при замкнутом — пониженной = 8 кГц. Это сделано для программирования микроконтроллеров с низкой частотой тактирования (меньше 1.5 МГц).

    Зеленый (желтый) светодиод “P” (POWER)— сигнализирует о том, что программатор находится в рабочем состоянии. Красный светодиод “F” (FIRMWARE) зажигается только когда идет процесс обмена данными с компьютером (запись либо считывание данных).

    USBasp – USB программатор для программирования микроконтроллеров AVR

    Пользователи, знакомые с микроконтроллерами Atmel или хотя бы с Arduino скорее всего знают о дешевом программаторе USBasp, цена которого на Ebay около $ 3. Распространены две версии программатора:

    • USBasp 2.0 — с стабилизатором на 3.3 вольта.
    • USBasp 3.0 — плата поменьше, без стабилизатора. Так же у него не выведены на разъем порты PD0 и PD1(Аппаратный UART).

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

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

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

    USBASP Программатор AVR поддерживает все микроконтроллеры ATMEL с режимом последовательного программирования ISP (In System Programming), это все микроконтроллеры у которых есть порт SPI (Serial Peripheral Interface):

    • ATtiny11, ATtiny12, ATtiny13, ATtiny15, ATtiny22, ATtiny2313, ATtiny24, ATtiny25, ATtiny26, ATtiny261, ATtiny28, ATtiny44, ATtiny45, ATtiny461, ATtiny84, ATtiny85, ATtiny861
    • AT90S1200, AT90S2313, AT90S2323, AT90S2343, AT90S4414, T90S4433, AT90S4434, AT90S8515, AT90S8535
    • ATmega8, ATmega48, ATmega88, ATmega16, ATmega161, ATmega162, ATmega163, ATmega164, ATmega165, ATmega168,ATmega169, ATmega32, ATmega323,ATmega324, ATmega325, ATmega3250, ATmega329, ATmega64, ATmega640, ATmega644, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega128, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega103, ATmega406, ATmega8515, ATmega8535
    • AT90CAN32, AT90CAN64, AT90CAN128
    • AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
    • AT90USB1286, AT90USB1287, AT90USB162, AT90USB646, AT90USB647
    • AT89S51, AT89S52
    • AT86RF401.

    Устройство программатора USBasp

    Программатор состоит из небольшого числа деталей. Мозгом программатора является микроконтроллер Atmega8, который имеет всего 8 кб флеш памяти и 1 кб ОЗУ(SRAM).Вроде и слабенький микроконтроллер по современным меркам, но столько всего можно на нем сделать.Из-за особенностей работы программного USB м/к работает на частоте 12мгц. Соответственно, при написании своей прошивки необходимо учитывать это.

    USBasp имеет 10 контактный разъем, на который выведены 6 выводов микроконтроллера: PB5 (SCK), PB4 (MISO), PB3 (MOSI, PWM), PB2(PWM), PD0 (RXD), PD1 (TXD).

    Плата имеет два встроенных светодиода на выводах PC0 и PC1.Выводы м/к PB0,PB1 и PD2 используются для программного USB,PC2 выведен на перемычку JP3.Остальные выводы микроконтроллера не распаяны.

    распиновка разъема USBasp

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

    На плате имеются три перемычки, задающие разные режимы работы программатора:

    JP1 — замыкается в случае обновления прошивки самого программатора
    JP2 — тройная перемычка, здесь выбирается, какое напряжение будет подаваться на прошиваемый микроконтроллер, либо 5В (левое положение) и 3.3В (правое положение)
    JP3 — если её замкнуть, то программирование контроллера будет происходить с пониженной частотой

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

    Чтобы начать пользоваться программатором, необходимо сперва поставить на него драйвера. Драйвер для программатора USBASP (v 2.0) USB ISP ранее был основан на libusb-win32. После того, как действие сертификата истекло, библиотека была заменена на libusbK.

    Работа драйвера тестировалась на версиях от Windows XP до Windows 10 (32-разрядные и 64-разрядные версии). Поскольку драйвер подписан, отпадает необходимость принудительного отключения сертификата драйвера или использования Zadig, достаточно скачать драйвер USBasp и запустить файл InstallDriver.exe из распакованного архива. В Windows XP можно просто указать мастеру установки папку с распакованными файлами драйвера.

    ВНИМАНИЕ! Вы устанавливаете этот драйвер на свой страх и риск!

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    Adblock
    detector