ATtiny85 распиновка: пины, Digispark и подключение к Arduino IDE
ATtiny85 — восьминогий собрат Arduino: тот же AVR-чип, те же setup() и loop(), но флеша 8 КБ, а ног всего шесть. Плата Digispark на его основе стоит копейки, влезает в патрон, выключатель и игрушку, и прошивается прямо из USB без программатора. Первый взгляд на чип рождает вопросы: подписи PB0–PB5 на корпусе превращаются в P0–P5 на Digispark, два пина уехали внутрь USB, а пин 1 корпуса — это RESET, который нельзя занимать без последствий. Ниже — вся карта выводов: DIP-8 по ножкам, Digispark по подписям, куда смотрят аналоговые входы, где живёт ШИМ и чем опасен пятый порт.
Если чип ещё едет с маркетплейса, логику скетча удобно отработать на симуляторе Arduino — мигалка и ШИМ там собираются без пайки. Прошивке ATtiny85 из Arduino IDE посвящён отдельный урок: ниже разбирается только «железная» сторона — что и куда подключать.
Чип, корпус и плата Digispark: кто есть кто
ATtiny85 продаётся в трёх видах: голый чип в корпусе DIP-8 (втыкается в макетку), SOIC-8 на платах-переходниках и готовая плата Digispark — маленькая платка с USB-разъёмом прямо на борту. Чип внутри один и тот же: 8 КБ флеша под скетч, 512 байт SRAM и 512 байт EEPROM, десяток GPIO и встроенный тактовый генератор на 1/8/16 МГц — кристалл не нужен. Питание широкое: от 2.7 до 5.5 В, поэтому чип одинаково живёт и от USB-пятёрки, и от литиевой батарейки 3.7 В, и от пары батареек АА.
| Критерий | ATtiny85 (DIP-8) | Плата Digispark |
|---|---|---|
| Корпус | 8 выводов, шаг 2.54 мм — прямо в макетку | Мини-плата ~18 × 26 мм, USB на борту |
| Питание | 2.7–5.5 В (16 МГц — от 4.5 В, при 3.3 В ставьте 8 МГц) | От USB 5 В или вывода VIN |
| Порты | PB0–PB5 (шесть штук, PB5 обычно RESET) | P0–P5, подписаны по чипу один в один |
| USB | Нет — прошивка проводами через программатор | Загрузчик micronucleus: USB-порт появляется на 5 секунд при прошивке |
| Флеш под скетч | 8 КБ, из них пара килобайт съест USB-загрузчик на Digispark | ≈ 6 КБ свободно на скетч |
| Логика | Высокий уровень = VCC (питанию чипа) | 5-вольтовая: плата ест от USB-пятёрки |
Распиновка ATtiny85 по выводам корпуса (DIP-8)
Нумерация ножек в DIP-корпусе идёт против часовой: точка-ключ на корпусе — первая нога, дальше вниз по левой стороне, потом вверх по правой. В скетче ноги зовутся не номерами корпуса, а именами портов PB0–PB5 — таблица сводит всё вместе.
| Ножка | Порт | Функции | Особенности |
|---|---|---|---|
| 1 | PB5 | RESET, ADC0, вывод отладки dW | По умолчанию — сброс: LOW на нём перезапускает чип. Как обычный пин — только после перепрошивки фьюза RSTDISBL, и тогда ISP-прошивка умирает: не делайте этого без HV-программатора |
| 2 | PB3 | ADC3, ШИМ OC1B, кварц XTAL1, USB D− | На Digispark занят линией USB D−; после старта скетча освобождается |
| 3 | PB4 | ADC2, ШИМ OC1A, кварц XTAL2, USB D+ | На Digispark — USB D+; свободен вне прошивки. Один из трёх ШИМ-пинов |
| 4 | — | GND | Земля, общий провод схемы |
| 5 | PB0 | MOSI (ISP), ШИМ OC0A, SDA (USI), AREF | Самый востребованный пин: ШИМ, I2C-данные, первая линия прошивки |
| 6 | PB1 | MISO (ISP), ШИМ OC0B, компаратор AIN0 | На Digispark к нему подключён бортовой светодиод |
| 7 | PB2 | SCK (ISP), ADC1, SCL (USI), компаратор AIN1 | I2C-тактирование и такт ISP-прошивки; аналоговый вход второй очереди |
| 8 | — | VCC | Питание 2.7–5.5 В; логика чипа равна напряжению питания |
Распиновка Digispark: P0–P5 и что занято USB
На Digispark подписи короткие: P0–P5 соответствуют PB0–PB5 чипа один в один, digitalWrite(0, HIGH) дёргает пин P0. Бортовой светодиод висит на P1 — им мигает скетч из коробки. USB-разъём соединён с P3 и P4: на них сидят линии D− и D+ загрузчика micronucleus. Пока IDE шьёт плату, эти два пина заняты обменом; после старта скетча их можно использовать как обычные порты — но всё, что вы к ним подключите, должно не мешать пяти секундам подключения платы к компьютеру.
| Пин Digispark | Порт чипа | Что умеет | Комментарий |
|---|---|---|---|
| P0 | PB0 | Цифровой I/O, ШИМ, SDA (I2C), MOSI (SPI) | Рабочая лошадка: ШИМ + I2C-данные |
| P1 | PB1 | Цифровой I/O, ШИМ, MISO (SPI) | Бортовой светодиод; второй ШИМ-пин |
| P2 | PB2 | Цифровой I/O, ADC1, SCL (I2C), SCK (SPI) | Аналоговый вход + такт шин; ШИМа нет |
| P3 | PB3 | Цифровой I/O, ADC3, ШИМ, USB D− | Занят USB при прошивке; аналоговый вход после неё |
| P4 | PB4 | Цифровой I/O, ADC2, ШИМ, USB D+ | Занят USB при прошивке; третий ШИМ-пин |
| P5 | PB5 | RESET (по умолчанию), ADC0 | Не занимать: фьюз RSTDISBL убивает ISP-прошивку |
| 5V / VIN | — | Питание от внешнего источника | Можно запитать плату без USB: 5 В на VIN |
| GND | — | Земля | Общий провод |
Аналоговые входы, ШИМ и шины: что где живёт
- АЦП — 10-битный (0–1023), канала четыре: ADC1 = P2, ADC2 = P4, ADC3 = P3 и ADC0 = P5 (тот самый RESET — без потери RESET недоступен). Опорное напряжение по умолчанию — питание VCC, точнее читать датчики с внутренним опорником 1.1 В или 2.56 В (analogReference).
- ШИМ — три пина: P0, P1 (таймер 0) и P4 (таймер 1); analogWrite работает на них как на Uno, частота по умолчанию ~60 кГц на таймере 0 и ниже на таймере 1 — светодиод не мигает, пищалка на P4 тоном может шептать иначе.
- I2C — через блок USI: SDA = P0, SCL = P2. В ATTinyCore и у Digispark Wire.begin() поднимает именно эту пару; экраны SSD1306 и модули RTC на чипе живут штатно, но флеша под тяжёлые библиотеки мало — 8 КБ надо считать.
- SPI — тот же USI: MOSI = P0, MISO = P1, SCK = P2, CS — любой свободный пин. Скорости ниже, чем у аппаратного SPI Uno, но для карт и радиомодулей уровня nRF24 хватает.
- Аппаратного UART нет: Serial в классическом виде недоступен. В ATTinyCore работает SoftwareSerial на любых пинах, в Digispark-ядре обмен с компьютером — через USB-библиотеки DigiUSB/DigiKeyboard, съедающие пару килобайт флеша.
- Ток с пина — до 40 мА: светодиод с резистором вешается напрямую, а моторы, реле и сервоприводы — только через транзистор или драйвер, иначе чип прощается с выходным каскадом.
Первый скетч: мигаем светодиодом Digispark
Схема не нужна вообще — бортовой светодиод уже на P1. Скетч ничем не отличается от уно-мигалки, кроме номера пина:
// Бортовой светодиод Digispark висит на P1 (PB1 чипа)const byte LED = 1; void setup() { pinMode(LED, OUTPUT);} void loop() { digitalWrite(LED, HIGH); delay(500); digitalWrite(LED, LOW); delay(500);}Порядок прошивки на Digispark особый: жмёте «Загрузить» в IDE, IDE пишет «вставьте плату сейчас» — и только тогда втыкаете Digispark в USB: загрузчик micronucleus живёт пять секунд, и окно легко проспать. Полный маршрут — пакет ATTinyCore или Digispark-ядро, выбор платы и нюансы — собран в уроке про прошивку ATtiny85. Голый DIP-чип так не умеет: ему нужен программатор — от Arduino as ISP до внешнего usbasp, схема подключения ног та же, что в таблице выше (PB0–PB2 — MOSI/MISO/SCK, PB5 — RESET).