ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 марта
397508 Топик полностью
fk0, легенда (26.03.2013 17:26, просмотров: 123) ответил mazur на Подкиньте, пожалуйста идей, как лучше сделать. Хочу чтобы параллельно обрабатывалось какое-то кол-во светодиодов. Скажем пусть пока будут 8 штук. В идеале, разбросанные по разным портам. Одним или все портом пока получилось. А вот чтобы несколько,
Делается так. У тебя есть, допустим, 6-битный ШИМ. Значит за один период 64шт. циклов. В каждом цикле сравниваешь значение 6-битного счётчика с коэффициентом каждого светодиода (яркость, от 0 до 64 включительно) и либо включаешь, либо выключаешь. Всё. А "ВАМ" полная фигня ибо в половине случаев мигать будет также противно (или делай dithering). А времени нужно для обслуживания больше, не факт, что успеешь. Циклы эти удобно в прерываниях. А в основной программе логику, порядок зажигания диодов. Единственное что, перед сравниванием счётчика с коэффициентом "яркости" для диода я бы сравнивал не как (count >= bright[N]), а как ((count+64*i/N_LEDS)&63 >= bright[i]), например. Это даёт, что каждого диода (или группы диодов) период будет начинаться в разное время и не будет диких токов потребления в начале общего для всех периода. Ну и мерцать будут несинхронно, меньше бросается в глаза.
[ZX]