Управление лентой ws2812b с attiny2313 при помощи CVAVR,avrdude и usbasp
решил я собрать зеркальный куб,собрал каркас и возник вопрос:как же им управлять?
гугл предлагает множество проектов на arduino,пару с использованием light_ws2812.h c гитхаба и 1 на atmega8 с spi
у меня же был дешёвый и популярный attiny2313, программатор usbisp v3.0, CodeVisionAvr и avrdude
библиотека light_ws2812.h содержит ссылки на библиотеки,которых нет в CVAVR
У 2313 нет spi
самое сложное сформировать сигнал,согласно даташиту ленты каждый пиксель должен получить 24 бита информации: 8 бит зелёного,8 - красного,8 - синего
ноль=(400+-125 нс) 1 и (850+-125 нс) 0
единица=(800+-125 нс) 1 и (450+-125 нс) 0
ноли можно делать с большей погрешностью,при ноле >50 мкс происходит сброс
вывод информации можно подключить к любой ноге 2313,никаких специальных библиотек,
никакого spi
2313 работает от внутреннего генератора 8 МГц без делителя на 8
для avrdude lowfuse=0xC4 highfuse=0xDF
ниже приведены ссылки на код,hex и bat файл для avrdude
https://drive.google.com/file/d/1d9Lla5lc_H34YJYbp2I3Ntq95xs...
https://drive.google.com/file/d/12M_fUuYblJ4UKbnNJdsYkRP11Pl...
https://drive.google.com/file/d/1-mNcP5KFxhlnp0FXIf4e0yXSUe1...
в коде реализована передача информации и 2 функции:медленная радуга и падение яркого жёлтого пикселясразу бросается в глаза отсутствие чего-то вроде for(n=0;n<NUM_PIXEL;n++) write();
пробовал - все пиксели горят белым,последний горит правильным цветом
если Вам нужны 35 пикселей,просто напишите в write() -
write_1_pixel(0);
write_1_pixel(1);
...............
write_1_pixel(34);
из функций в коде можно собрать любой эффект на Ваш вкус
радуга занимала всего 40% флэш памяти из 2кБ 2313,следовательно,код будет работать на большинстве микроконтроллеров atmel
на видео представлены радуга с шагом 50 по ргб сетке и задержками в 1 секунду(да,оно может быстрее работать) и ненапряжный для глаз режим люстры с падением яркого жёлтого пикселя