Как то приобрел в хозяйство маленькие контроллеры ATTiny13. Недавно руки дошли с ними повозиться.
Приобрести их можно по цене $3.3/10шт в корпусе SOP8 или $4.83/10шт в корпусе DIP8.
Я взял в корпусе DIP8 вместе с панельками
Характеристики ATTiny13A
- Память для программ (FLASH) — 1Кб
- ОЗУ — 64 Байт
- Число входов/выходов — 6
- Выходов ШИМ — 2
- Аналоговых входов (АЦП 10бит) — 4
- Таймер 8 бит — 1
- Напряжение питания 1.8 — 5.5В
- Рабочая частота — до 20МГц
- Потребление в активном режиме 1.8В/ 1МГц — 190мкА
- Потребление в режиме сна 1.8В/1МГц — 24мкА
Все характеристики микроконтроллера в даташите
Программирование ATtiny13
Для программирования я настроил среду Arduino IDE. Как известно, эта среда разработки может поддерживать дополнительные контроллеры. Например, в этой статье, я рассказывал, как программировать в Arduino IDE «народный WiFi» ESP8266. На сайте arduino.cc есть ветка, посещенная программированию ATTiny13 в среде Ардуино. У меня установлена версия 1.6.5. Скачиваю архив ATTiny core for Arduino. Распаковываю в папку c:\Program Files (x86)\Arduino\hardware\ и в Arduino IDE появляются дополнительные платы
Теперь загрузка программ. Объем памяти микропроцессора всего 1Кб и никакой загрузчик туда не поместится. Поэтому загрузка скетчей производится программатором по ISP. USBAsp, которым я программировал Atmega328 работать с тинькой не захотел. Нужна специальная прошивка программатора, с которой я возиться не захотел. Программировать микроконтроллер можно при помощи любой Ардуины. Для этого собираю такую схему:
В Arduino IDE выбираю «Файл->Образцы->ArduinoISP» и загружаю в Ардуино скетч программатора. Затем выбираю «Инструменты->Программатор->Arduino as ISP». Теперь можно загружать скетчи в тиньку. Следует отметить, что ATTiny13 core for Arduino содержит ограниченный набор функций Ардуино.
Применение ATTiny13
На работе у меня есть настольная елочка со световодами
В елочке стояла галогенная лампочка на 12В и моторчик, который крутит цветной круг-цветофильтр, который меняет цвет световодов. За 3 года умерли и лампочка и моторчик.
Вот я и решил восстановить эту елочку кусочком RGB-ленты управляемой ATtiny13. Съема управления лентой получилась такая:
три транзистора и резистора, линейный регулятор напряжения и собственно тинька.
Скетч представляет собой программный трехканальный ШИМ с изменением яркости по разным каналам, в результате которого лента переливается разными цветами
Скетч ATTiny13 RGB-PW...После этого остается только закрепить плату и ленту в корпусе елочки
Белый скотч наклеен для улучшения отражения света внутри корпуса.
Теперь можно собирать корпус
И елочка готова
.
Все просто и функционально! Мне нравится!
На последней версии arduino 1.6.8.0
Не работает! Идет ошибка…
Что делать?
Интересно как получился шим на 3 канала, когда он в 13 тиньке только на 2 поддерживается? Наверное в исходнике пойму…
Ну идет ошибка на последней — что мешает поставить версию как у автора?
Так и получается ШИМ на 3 канала, можно больше. При помощи таймера.
На Атмеге 328 я запускал 12 каналов ШИМ
Версия чего не идет. Arduino IDE
Хотел загрузить скетч через Arduino Nano. Получаю ошибку
C:\Users\E47B~1\AppData\Local\Temp\build5816874580202649740.tmp/core.a(wiring.c.o): In function
__vector_3':
__vector_3′C:\Atmel\Arduino1711\hardware\attiny13\avr\cores\core13/wiring.c:21: multiple definition of
C:\Users\E47B~1\AppData\Local\Temp\build5816874580202649740.tmp\pwm3_1.cpp.o:C:\Atmel\arduino1711/pwm3_1.ino:12: first defined here
collect2.exe: error: ld returned 1 exit status
Ошибка компиляции.
Подскажите пож. в чем дело? А то Новый год на носу, хотел порадовать близких.
Проблема в том в программе Автора используется прерывание Таймера0 для программного ШИМ и оно же используется библиотеками Arduino (которые автоматом подключаются к программе) для отсчета времени millis() — в результате конфликта компилятор не понимает которую процедуру использовать.
Однако, каким то образом у меня скомпилировалось в среде Arduino 1.0.2 (но с другой библиотекой, для ATtiny85), так что попробуйте более старый дистрибутив Arduino (может там другой порядок компиляции).
либо попробуйте закомментировать в C:\Atmel\Arduino1711\hardware\attiny13\avr\cores\core13/wiring.c строки
ISR(TIM0_OVF_vect){
ovrf++; //Increment counter every 256 clock cycles
}
Но надежнее всего компилировать в AVR Studio, тогда точно никакие ардуинские библиотеки не будут мешаться, при том что они и не используются.
Спасибо автору! Делал подобную штуку на Ардуинке и решил сотворить на Тиньке13. Еле уложился в среде Ардуино в 1кБ и всё равно не в полной мере достиг задуманного. А тут 300 байт и так работает! Проблем с загрузкой не было. Открыл авторский скетч в Ардуино 1.6.13 (с подключённой Тинькой) и без проблем загрузил как описано на https://geektimes.ru/post/254970/. Управляю лампой сканера от МФУ — посох Дед мороза. Ключи — 2N7002. можно использовать мощные полевики с материнских плат, но они большие. Не забыть про токоограничивающие резисторы. В лампе сканера их нет. Я использовал на 50 Ом. А так, те же RGB диоды. Ещё раз спасибо автору!
Здесь на тиньке 13 WS2812 работают
http://samopal.pro/ws2812-attiny13a/
По тинькам главное в Arduino IDE не использовать setup() и loop(), а писать все в main()
И не пользоваться digitalWrite и прочими, а использовать напрямую доступ к портам ввода вывода.
Пробовал (Здесь на тиньке 13 WS2812 работают

http://samopal.pro/ws2812-attiny13a/) в IDE 1.0.6 и IDE 1.6.5 на Attiny85 —
Для управления WS2812 использовал 0 pin (5 контакт)
Загораются сразу все диоды белым…
Перестает работать delay(tm)
Если комментировать (вставил для проверки вывод попеременно высокого/низкого уровня на другой вывод) цикл работает, но цвет светодиодов не меняется
А версию библиотеки какую используете?
Попробуйте для Arduino IDE
Которая с setup() и loop()
Заранее извиняюсь(наверно я туплю)

Имеется в виду библиотека из архива light_ws2812-master.zip, которая в папке: light_ws2812-master\light_ws2812_Arduino\ ?
Если она, то на IDE 1.6.5 результат не изменился. Загораются все светодиоды белым и все (и для метеора и и для радуги).
Для Attiny85 похоже delay не работает, так как контрольный светодиод на выводе управления не помигивает.
Для Attiny13A на выводе управления контрольный светодиод помигивает, но все горят белым
Доброго дня!
То ли руки не из того места, то ли звёзды не так сошлись, но у меня возникла проблема. Нет, схема работает, вот только по какой-то причине светодиоды мерцают при смене яркости. И я всё никак не могу разобраться, что я делаю не так. Ну да,я схему упростил, у меня стоит просто 3 светодиода через сопротивление 330 Ом каждый. Но, как мне кажется, это не должно было стать причиной. Пробовал на разных частотах от 1.2 до 9.6 МГц, меняется только скорость смены яркости, а мерцание остаётся
Мерцание означает, что тинька работает на очень низкой тактовой.
Нужно сперва сделать операцию «записать загрузчик» — программатор пропишет фьюз-биты микроконтроллера, а затем уже заливать прошивку. Понятно, что на 9.6МГц без делителя будет самое плавное диммирование.
Большое спасибо, помогло!
Я боялся записывать загрузчик, т.к. уже однажды прибил эту attiny13 поломав фьюзы. Теперь с осторожностью к этому подхожу)
почитайте еще как прошить attiny13
http://phpjs.ru/2017/12/03/arduino-прошивка-attiny13/