diff --git a/content/posts/2023/arduino/programming-attiny85-with-avrdude.md b/content/posts/2023/arduino/programming-attiny85-with-avrdude.md new file mode 100644 index 0000000..12e28f0 --- /dev/null +++ b/content/posts/2023/arduino/programming-attiny85-with-avrdude.md @@ -0,0 +1,99 @@ +--- +title: "📟 Программирование Attiny85 с помощью avrdude" +date: 2023-11-09T23:58:07+03:00 +draft: false +tags: [arduino, tutorial, development] +--- + +## О Digispark ATtiny85 + +Digispark — неофициальное семейство Arduino-совместимых плат от Digistump. +Эти ребята из США делают отладочные платы на различных микроконтроллерах и шилды для них. +Китайцы быстро смекнули, что дигиспарк на базе ATtiny85 – отличная штука и начали продавать свою версию. + +> (c) AlexGyver + +Платы Digispark бывают нескольких версий и выглядят во так. + +![](https://s3.timeweb.com/60074440-9f42f663-1649-4eb6-b974-79142c108fc2/blog/2023/arduino/attiny-avrdude/01.jpg) + +Подробности про ATTiny85 и платы Digispark можно прочитать +на странице посвящнной Digispark на сайте [AlexGyver](https://alexgyver.ru/lessons/digispark/). + +## Введение + +Не так давно, я купил несколько плат-пустышек (3-я плата на картинке выше) и отдельно микроконтроллеры, +чтобы поиграться с ATTiny85 и собрать пару устройст для работы с датчиками. + +Иии... у меня ничего не вышло. Спустя несколько попыток я случайным образом догнал, что на МК отсутствует `micronucleus`. +Это такой **bootloader** для ATTiny. + +Обычно прошивка [micronucleus](https://github.com/micronucleus/micronucleus) уже установлена в Digispark +и не нужно никакого дополнительного оборудования для их программирования. +Пишете код, загружаете его на плату с помощью Arduino IDE и радуетесь жизни. + +Приступим 🏁 + +## Загрузка micronucleus на МК с помощью avrdude + +Если вы, как и я приобрели ATtiny85 в DIP-8 корпусе, нужно помнить, что они не поставляются с micronucleus, +и для его прошивки нужен AVR программатор. +Самый дешевый программатор AVR можно купить на AliExpress, но также можно использовать Arduino UNO или RaspberryPi для этой задачи. + +![](https://s3.timeweb.com/60074440-9f42f663-1649-4eb6-b974-79142c108fc2/blog/2023/arduino/attiny-avrdude/02.jpg) + +Чтобы загрузить micronucleus на голый ATtiny85, я использую дешевый программатор AVR как на картинке ниже. + +![](https://s3.timeweb.com/60074440-9f42f663-1649-4eb6-b974-79142c108fc2/blog/2023/arduino/attiny-avrdude/03.png) + +Если у вас установлена версия DIP-разъема Digispark с 8-контактным разъемом, вы можете просто подключить к нему 6-контактный разъем. +Нижние 2 контакта должны быть не подключены, поэтому просто убедитесь, что контакт 5В совпадает. + +У меня подобного передника не было и я себе спаял такой переходник сам 🙂 + +![](https://s3.timeweb.com/60074440-9f42f663-1649-4eb6-b974-79142c108fc2/blog/2023/arduino/attiny-avrdude/04.jpg) + +В ArchLinux AVR программатор определяется автоматически как **USBasp**. + +```text +[ 5465.908131] usb 1-9: New USB device found, idVendor=16c0, idProduct=05dc, bcdDevice= 1.04 +[ 5465.908147] usb 1-9: New USB device strings: Mfr=1, Product=2, SerialNumber=0 +[ 5465.908153] usb 1-9: Product: USBasp +[ 5465.908157] usb 1-9: Manufacturer: www.fischl.de +``` + +Начнём с клонирования репозитория `micronucleus`. +Скомпилированные прошивки лежат в директории `firmware/releases`. +```sh +git clone https://github.com/micronucleus/micronucleus.git +cd micronucleus/firmware/releases +``` + +Нас истересует файл `t85_default.hex`. + +Осталось установить `avrdude`, чтобы загрузить micronucleus в ATtiny85. + +Вводим команды ниже и ждём завершения загрузки. + +```sh +avrdude -c USBasp -p attiny85 -U lfuse:w:0xe1:m -U hfuse:w:0xdd:m -U efuse:w:0xfe:m -B 20 +avrdude -c USBasp -p attiny85 -U flash:w:t85_default.hex:i -B 20 +``` + +Готово! 🍌 + +## Пример + +Далее переходим в Arduino IDE, выбираем плату Digispark и заливаем следующий код, +который будет печатать (эмитация клавиатуры) текст раз в секунду. + +```cpp +#include + +void setup() { } + +void loop() { + delay(1000); + DigiKeyboard.println("I Love You <3"); +} +```