...

среда, 10 декабря 2014 г.

[Из песочницы] Arduino за 1$


В качестве вступления, я не буду пространно рассказывать о том, как люди, в руках паяльника не державшие, слова «программатор» не знающие, вместе с детьми радостно втыкают провода в разъемы электронного «конструктора» под названием Arduino. И никаким словом не помяну лагерь «хардкорщиков», считающих это баловством и/или надругательством над самой идеологией микроконтроллеров.


Скажу за себя — мне Arduino нравится. Тем, что можно быстро что-нибудь работающее соорудить. По сути, мне не нравятся только цены. Ну, дорого же. Модуль на порядок дороже использованного в нем микроконтроллера. Такие размышления неоднократно подталкивали меня к тому, чтобы «соскочить», но потом я открывал Aliexpress и заказывал очередную порцию. Китайская версия Arduino Nano — 3-4$. Pro Mini (без USB) — 2-3$.


Потом стало интересно — а где предел минимальной розничной (или микрооптовой) цены. Но так, чтобы можно было работать, а не искать хаки с целью сэкономить пару байт. Пара вопросов к всемирному разуму, кратчайшее изучение матчасти, решение: «Буду ковыряться с ATTiny, но чтобы с Arduino».


Прежде чем перейти к железу, софту, граблям и проклятиям, упомяну о характере решаемых задач. Всего два примера. Первый — это четырехканальный таймер для включения и выключения светильников над клетками с птичками. Второй — контроллер светодиодной ленты для освещения неэлектрифицированного гаража (защита от переразряда свинцового аккумулятора, ШИМ-управление яркостью). Примитивно, но за копейки готовых решений нет.



















































ATtiny 44ATtiny 84ATtiny 45ATtiny 85Примечание
Макс. частота, МГц8888От внутреннего генератора
RAM, байт256512256512
Flash, Кб4848
I/O выводов111155RESET не считаем
Цена, $1.661.81.491.69Розница DigiKey, просто для сравнения

Ладно, к делу. Рассматривать будем микроконтроллеры ATtiny 44/84 и 45/85. Базовые характеристики приведены в табличке. У меня в качестве подопытных 85-е в DIP-корпусе, с ценою в 1$ за штуку при покупке десятка у китайцев.


Чего можно добиться?


На ATTiny 85 можно использовать 5 выводов (RESET не рассматриваем, его полезное использование в случае с Arduino сопряжено с битьем в бубен приличного диаметра). На трех доступен АЦП, на двух — ШИМ. То есть, моя вторая задачка-иллюстрация (там нужно 2 канала АЦП, один ШИМ и один светодиод) уже отлично решается. ATtiny 84 позволяет использовать 11 выводов, но дороже — а у нас спортивное удешевление.


Как программировать?



Проще всего — через ISP. В качестве программатора можно использовать плату Arduino, или копеечный ISP-программатор.


На сцене появляются первые грабли


Для экспериментов были заказаны ATtiny 85 и, собственно, программатор. Последний уверенно определялся ПК как USB HID устройство. Это плохо, в таком виде гаджет можно использовать с минимальным количеством ПО, Arduino IDE туда не входит. Впрочем, беглое гугление показало — проблема известна и решаема. Есть готовая прошивка, превращающие чудо китайской науки в USBASP.



Да-да, я беру второй программатор (это было найденное в закромах сомнительное поделие под названием SP300), соединяю его ISP-кабелем с первым, оба втыкаю в USB, ставлю в софте SP300 пункт назначения — ATmega8 ISP, и через долю секунды получаю вожделенный USBASP.


Arduino IDE



Для того, чтобы работать с ATtiny, нужно добавить в IDE описания плат (по факту — чипов). Я использовал вот эти. Описания кладутся в папку со скетчами следующим образом: %папка-со-скетчами%\hardware\attiny, там будут каталог Variants и файл boards.txt.


Материализация вторых граблей


Устанавливаю чип в «хлебную доску», подключаю к программатору, устанавливаю резистор в 10 КОм между плюсом питания и выводом RESET (т.к. сигнал сброса низкого уровня). Выбираю в IDE программатор USBASP, пытаюсь прошить bootloader — и тишина. Точнее, AVRDude утверждает, что нет связи с микроконтроллером.



Ларчик открывается просто, но не совсем очевидно. Дело в том, что «голая» ATtiny не прошивается с настройками AVRDude, используемыми в Arduino IDE. Слишком высокая частота тактирования при ISP-программировании. Более того, эту частоту нельзя указать в настройках IDE.


Решение: берем AVRDude и прошиваем посредством командной строки фьюзы ATTiny таким образом, чтобы чип тактировался от внутренего генератора с частотой 8 МГц. При этом указываем малую частоту (если быть точным — указывается не частота, а длительность такта) тактирования при ISP-программировании (ключ -B). В итоге, «волшебная строка» выглядит следующим образом:



avrdude -p t85 -c usbasp -U lfuse:w:0xC2:m -U hfuse:w:0xDF:m -U efuse:w:0xFF:m -B 5




После этого ATtiny 85 нормально прошивается через Arduino IDE. Проверка работоспособности производится с помощью легендарного демонстрационного проекта Blink. Меняем в скетче пин с 13-го на 4-й (это 3-й вывод ATtiny 85), подключаем светодиод и резистор, выполняем загрузку с помощью программатора. Светодиод мигает, цель достигнута.

Итого


Делаем вывод, что с микроконтроллерами ATtiny 85 (а также 44, 84, 45) вполне можно работать через Arduino IDE. Желающие могут придти в ужас от того, что код моргания светодиодом бодренько кушает почти килобайт памяти (при 8 доступных).



Сделать однозначный вывод о практической ценности проведенных изысканий я не могу (экономия небольшая, а памяти и выводов мало), но это было достаточно забавно.


Источник вдохновения (англ.)


This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.

Want something else to read? How about 'Grievous Censorship' By The Guardian: Israel, Gaza And The Termination Of Nafeez Ahmed's Blog


Комментариев нет:

Отправить комментарий