Вопрос не праздный. Решился я изучить основы работы светодиодной ленты. Типа WS2812b.
Управление у нее имеет весьма высокоскоростной интерфейс аж на 800 кГц, однако это только так кажется. Для управления 1-10 или даже 20 светодиодами нам вполне хватает времени передать данные.
Точнее, для управления одним светодиодом нам надо передать 3 байта данных, а это суммарно 30 микросекунд.
А вот когда светодиодов уже доходит до сотни и больше и мало того, у нас динамическая индикация, то тут уже ресурсы управляющего устройства весьма затребованы.
Для управления последовательностью в 100 светодиодов нам потребуется 3000 мкс или 3 мс, что уже весьма много. В режиме реального времени, что бы сделать к примеру бегущую строку, максимальная скорость будет равна 330 Гц. Что пока терпимо, но уже осязаемо.
Возможно существует аппаратный интерфейс для передачи данных, но я об этом не знаю.
Передача одного бита у нас занимает 0.4+0.85 или 0.45+0.8 микросекунд.
Значится нам надо успеть поднять на выходе 0 или 1 за указанное время.
Изначально я хотел управлять небольшой лентой с помощью микроконтроллера pic12f629 и аналогичных. В нем заявлено максимально тактовая частота 20 МГц, время выполнения простой команды 200 нс.
Выходит что подать в ленту 0 или 1 я как бы успеваю, ибо 2 команды - это заявленные 0.4 мкс. А вот дробное значение типа 0.85 или 0.45 я никак не могу реализовать. С другой стороны протокол адресной ленты допускает разброс +-0.125 нс. Но я в него все равно не укладываюсь.
Итог. Микроконтроллер типа pic12 не может выставить нужные сигналы на выходе за указанное время. Даже если бы протокол управления лентой был более лояльным, то максимум что можно было бы добиться от контроллера - передача потока данных, записанных в ПЗУ, а хочется в перспективе большего. И не просто загрузить контроллер передачей данных, что что бы он при этом еще и свю какую то полезную работу выполнял.
Я понимаю, что вариант не морочить голову, взять адруино или типа того было бы очевидным, но стрелять из пушки по воробьям как то не хочется.
Есть варианты управления адресной светодиодной лентой кроме адруино ? Может где внятное описание с примером программ на ассемблере есть ?
Или все же обратить взор на AVR ?
Возможно в расчётах есть неточности, на ходу все писал.