116 lines
5.6 KiB
Markdown
116 lines
5.6 KiB
Markdown
---
|
||
title: "📟 Программирование Attiny85 с помощью avrdude"
|
||
date: 2023-11-09T23:58:07+03:00
|
||
lastmod: 2024-02-24T15:59:00+03:00
|
||
draft: false
|
||
tags: [arduino, tutorial, development]
|
||
---
|
||
|
||
## О Digispark ATtiny85
|
||
|
||
Digispark — неофициальное семейство Arduino-совместимых плат от Digistump.
|
||
Эти ребята из США делают отладочные платы на различных микроконтроллерах и шилды для них.
|
||
Китайцы быстро смекнули, что дигиспарк на базе ATtiny85 – отличная штука и начали продавать свою версию.
|
||
|
||
> (c) AlexGyver
|
||
|
||
Платы Digispark бывают нескольких версий и выглядят во так.
|
||
|
||
![](https://cdn.a2s.su/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://cdn.a2s.su/blog/2023/arduino/attiny-avrdude/02.jpg)
|
||
|
||
Чтобы загрузить micronucleus на голый ATtiny85, я использую дешевый программатор AVR как на картинке ниже.
|
||
|
||
![](https://cdn.a2s.su/blog/2023/arduino/attiny-avrdude/03.png)
|
||
|
||
Если у вас установлена версия DIP-разъема Digispark с 8-контактным разъемом, вы можете просто подключить к нему 6-контактный разъем.
|
||
Нижние 2 контакта должны быть не подключены, поэтому просто убедитесь, что контакт 5В совпадает.
|
||
|
||
У меня подобного передника не было и я себе спаял такой переходник сам 🙂
|
||
|
||
![](https://cdn.a2s.su/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
|
||
```
|
||
|
||
**Обновление от 24.02.2024:** У меня в ArchLinux начала пявляться следующая ошибка (версиия `avrdude` 7.3):
|
||
|
||
```text
|
||
USBasp is not a unique start of a programmer name; consider:
|
||
usbasp = USBasp ISP and TPI programmer
|
||
usbasp-clone = Any usbasp clone with correct VID/PID
|
||
```
|
||
|
||
Решается установкой имени программатора (_параметр `-c`_) `usbasp`:
|
||
|
||
```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 <DigiKeyboard.h>
|
||
|
||
void setup() { }
|
||
|
||
void loop() {
|
||
delay(1000);
|
||
DigiKeyboard.println("I Love You <3");
|
||
}
|
||
```
|