arduino прошивка attiny13

Attiny13 не имеет встроенного UART преобразователя на популярных микросхемах CH340, FT232R, cp2102. Записать скетч во флеш память можно по протоколу SPI методом внутрисхемного программирования (ISP). Такой программатор называется USBASP (avr isp). Данный прогр-р сделаем из ардуино нано.

C гитхаба качнем фреймворк Core13 https://github.com/orlv/at13/archive/master.zip

Папку core13 переносим в /usr/share/arduino/hardware/arduino/cores


sudo cp -r core13 /usr/share/arduino/hardware/arduino/cores

Фреймворк предоставляет следующее апи


map()
random()
randomSeed()
millis()
micros()
delay()
delayMicroseconds() *
analogRead()
analogWrite()
pinMode()
digitalRead()
digitalWrite()

В boards.txt добавляем новую плату attiny13.


attiny13.name=ATtiny13 (ATtiny13a)
attiny13.upload.using=arduino:arduinoisp
attiny13.upload.maximum_size=1024
attiny13.maximum_data_size=64
attiny13.upload.speed=19200
attiny13.bootloader.tool=arduino:avrdude
attiny13.bootloader.low_fuses=0x6a
attiny13.bootloader.high_fuses=0xFF
attiny13.bootloader.unlock_bits=0xFF
attiny13.bootloader.lock_bits=0xFF
attiny13.build.mcu=attiny13
attiny13.upload.tool=avrdude
attiny13.build.core=core13
attiny13.upload.verbose=true
attiny13.build.board=AVR_ATTINY13
attiny13.build.f_cpu=1200000L

Подготовительный этап завершен.
2-й этап. Теперь из платы arduino nano надо сделать программатор. Для этого открываем приложение arduino и в примерах ищем ArduinoISP. Должно быть такое


// pin name:    not-mega:         mega(1280 and 2560)
// slave reset: 10:               53 
// MOSI:        11:               51 
// MISO:        12:               50 
// SCK:         13:               52 
и т.д.

Выбираем плату Arduino nano 328, а программатор AVR ISP или AVRISP mkII.
Заливаем эту прошивку в нашу Nano. Готово! Наша ардуинка теперь программатор AVR ISP. Проверить это можно, подключив к 9 пину светодиод, он должен плавно мигать (blink).
3-й этап.

Подключаем пины к attiny13.
RESET — 10
GND — GND
VCC — 5V
SCK — 13
MISO — 12
MOSI — 11

4-й этап.
Проставляем fuse tiny13. Это и есть запись загрузчика. Делаем это с помощью avrdude. Нам нужны лишь low high фьюзы. Нижний ставим в 0x6A, для частоты 1.2 МГц.

Если хотим 9.6 МГц ставим 0x7A.


avrdude  -v -p t13 -c stk500v1 -P /dev/ttyUSB0 -e -U hfuse:w:0xff:m -U lfuse:w:0x6a:m  -b 19200

C baudrate можно поиграться, 9600, 14400, 28800.

Также bootloader можно прописать в IDE Сервис- Записать загрузчик.
Если выдало ошибку


avrdude: Expected signature for ATtiny13 is 1E 90 07
         Double check chip, or use -F to override this check.

проверьте провода и пины.
Ошибка


avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x10

означает проблемы с самим программатором. Перепрошейте его.
Завершение. Плата t13 готова. Можно заливать туда скетчи. Если через arduino IDE не получается, можно через avrdude. Сделать это просто: в настройках IDE выбираем Показывать подробный вид при компиляции и загрузке. Так, при нажатии на «Проверить» скетч в консоли выдаст путь к скомпилированному hex бинарнику типа /tmp/build7166344483964498492.tmp/sketch_dec03a.cpp.hex

По историческим причинам HEX является стандартом де-факто при прошивке разнообразных микросхем с памятью (микроконтроллеров, ПЗУ, EEPROM и т. п.)

Заливаем этот скетч


avrdude  -v -p t13 -c stk500v1 -P /dev/ttyUSB0 -b 19200 -e -U flash:w:/tmp/build3468589420345126132.tmp/sketch_nov26a.cpp.hex

Эту же команду можно получить в консоли при нажатии на Загрузить.


Размер скетча в двоичном коде: 386 байт (из 1 024 байт максимум)
/usr/share/arduino/hardware/tools/avrdude -C/usr/share/arduino/hardware/tools/avrdude.conf -v -v -v -v -pattiny13 -cstk500v1 -P/dev/ttyUSB0 -Uflash:w:/tmp/build7166344483964498492.tmp/sketch_dec03a.cpp.hex:i 

В итоге должны получить


avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.05s

avrdude: Device signature = 0x1e9007 (probably t13)
avrdude: safemode: hfuse reads as FF
avrdude: erasing chip
avrdude: reading input file "/tmp/build7166344483964498492.tmp/sketch_dec03a.cpp.hex"
avrdude: input file /tmp/build7166344483964498492.tmp/sketch_dec03a.cpp.hex auto detected as Intel Hex
avrdude: writing flash (386 bytes):

Writing | ################################################## | 100% 1.05s

avrdude: 386 bytes of flash written

Leave a comment

Your email address will not be published.


*