Давно уже как-то заказал на побаловаться или куда-то в платы встраивать несколько ATtiny85. Не в виде
USB-платы, а хардкорно, чипом
Cheap dip, Buy Quality dip 20 Directly from China Suppliers:5PCS ATTINY85-20PU ATTINY85 20PU ATTINY85- 20 ATTINY85 ATMEL DIP
// www.aliexpress.com
Программатор к ним сразу не брал, т.к., знаю, можно программировать и подручными средствами, но потом для упрощения жизни заказал:
Cheap board performance, Buy Quality board clock directly from China boarding dog Suppliers: Pluggable Development Board For ATtiny13A/ATtiny25/ATtiny45/ATtiny85 Programming Editor Micro Usb Power Connector
// www.aliexpress.com
Но программатор всё ещё в пути, а у меня выдалось свободное утро и я решил побаловаться с «колхозным» программированием.
Первый облом — я почему-то думал, что ATTiny85 можно программировать через последовательный порт. Приготовил уже USB/serial плату, полез гуглить, как подключать... Фигушки! Нельзя
Зато можно программировать через ISP. А в роли ISP активно используют Arduino. Полез разбираться. Не особо хотелось, так как проводов относительно последовательных rx/tx много, но делать нечего.
И вот тут начались проблемы
Часа полтора угрохал, пока всё разобрался. Вся цепочка без и ошибок не интересна, наверное, да я и не вспомню, поэтому привожу готовый рецепт.
1. Обязательно обновляем Arduino IDE до последней версии. Оказывается, уже 1.8.x текущая, а у меня всё была 1.6.x. Со старой версией будут глюки с новыми библиотеками, компиляторами и т.п. Я сперва пытался ручками всё делать, компилятор отдельно качал устанавливал, в настройках рылся — довёл систему до вообще нерабочего состояния. А надо было просто обновить саму IDE
2. Прошиваем в Arduino скетч ArduinoISP. Он находится в примерах. Это не во всех мануалах указано, подразумевается, что оно итак понятно. Мне было непонятно и я сперва не понял, почему всё собрано верно, а прошивка ATiny85 не проходит
2.1. Наступил на двое граблей. Оказывается, Arduino нормально прошивается не со всеми USB-кабелями и не на всех USB-портах. Дольше всего с этим воевал. Не шьётся, виснет. Но раньше-то шилось! Думаю, что проблема в обновлённом IDE. Пробую другие платы (а у всех разъёмы разные — полный USB, mini-USB, micro-USB), у них-то другие разъёмы, они шьются. Удаляю в Windows COM-порт, сканирую заново — мало ли, настройки/драйвера. Пофиг. Мысли про кабели есть, меняю кабель — ничего не меняется, прошивка не идёт. Значит, проблема в плате. Сгорела, что ли? Но всё равно не сдаюсь и по наитию меняю USB-порт. Заводится! Тестовый «blink». Но, как оказывается, не очень устойчиво. И ArduinoASP не прошивается совсем. Начинаю играть с кабелями и портами, нахожу железно рабочую комбинацию!
2.2. Вторые грабли тут же. Для прошивки ATtiny85 через Arduino рекомендуют на последний ставить конденсатор 10мкФ между RESET и GND. Так вот с этим конденсатором у меня Arduino не прошивается!
Убрал — всё ок.
Ну а дальше всё совсем просто.
3. В Arduino IDE загружаем поддержку ATtiny чипов.
Open File -> Preferences,
Additional Boards Manager URLs и вписываем туда ссылку
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json.
4. В менеджере плат (
Tools -> Board -> Board Manager) добавляем «ATtiny»:
5. В списке плат выбираем ATiny85:
5.1. Рекомендую выставить частоту «Internal 8MHz» и прошить под неё загрузчик (нижний пункт в предыдущем скрине).
6. Всё, готово. Вешаем светодиод (через резистор, конечно) на 3-ю ногу (4-й пин) и прошиваем скетч Blink, поправив пин на 4:
code cpp
void setup() {
pinMode(4, OUTPUT);
}
void loop() {
digitalWrite(4, HIGH);
delay(500);
digitalWrite(4, LOW);
delay(500);
}
Готово!