Так же использовал BAM вместо PWM для управления 8x8 RGB матрицей:
частота обновления 100*8=800Гц (иначе видны мерцания), 192 светодиода
- с ШИМ просто не хватало ресурсов.
По сути при использовании PWM происходит тот же поворот массива,
только однобитный: или гореть, или не гореть. И вместо 8 сравнений на
BAM происходит 2^8 сравнений на PWM. Количество передаваемых данных на
драйвера (при 2 шт: 10xRGB): по BAM - 8 кадров(8*4=24 байта); PWM - по
количеству каналов(30*4=120 байт).
Выгода очевидна.
-----------
пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ m.mail.ru
Привет, Михаил. Мне кажется, что сосредотачиваться на оптимизации/переделке аппаратуры лайтпака сейчас - борьба с ветряными мельницами. Вы создаете проблемы там, где их пока нет, и этим отвлекаетесь от решения действительно важной задачи. Я не в курсе, зачем вдруг
понадобилось разгружать в 32 раза микроконтроллер (применяя BAM), когда ему и так хорошо. Оставьте железо в покое, CDC добавите потом. Сейчас узкое место только в софте, микроконтроллер вполне справится с управлением RGB даже на обычном ШИМ, так как большая точность управления яркостью не нужна.
-----------
Отправлено с m.mail.ru
пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ. пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ. пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅ 8-пїЅпїЅпїЅпїЅпїЅпїЅ, пїЅ пїЅ 10-пїЅпїЅпїЅпїЅпїЅпїЅ, пїЅ пїЅ 16-пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ - пїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ. пїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ LED-пїЅ - пїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ firmware. пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ/пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅ 10 пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ 7 (пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ).
-----------
пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ m.mail.ru
То, что сейчас - действительно рабочее. Но не стоит на этом
останавливаться.
Как минимум - нужно увеличить кол-во светодиодов. Далее - попробовать
улучшить цветопередачу. А больше по сути ничего и не требуется:
управление яркостью нескольких светодиодов - это основная и
единственная задача устройства.
Переход на BAM - не столько из-за нехватки ресурсов МК, сколько для
оптимизации вывода данных. И именно для сохранения текущего протокола
обмена - поворот массива лучше возложить на МК.
В софте все останется как есть: 1 байт - яркость одного канала. Все
будет передаваться так же, как и сейчас. Или по CDC, как во многих
анологичных проектах.
Конвертировать яркость в 10бит - тоже задача МК.
По сути яркость остается 8-битной. Средний 8бит цвет высчитывается из
8бит значений. И отображается 256 вариантов яркости. И передавать все
логичнее байтом.
Просто эти 256 точек яркости расположены будут не на одинаковом
рассоянии, а неравномерно распределены по ширине 1024. Так половина
значений размещается в 1\10 от общего диапазона.
При текущей реализации яркость при значении 25 светит на половину
максимальной яркости. При 10 бит яркость будет почти линейной, как на
мониторе\тв.