Думаю над протоколом, а его не придумаешь, пока не продумаешь железо и связь между частями всей конструкции
Видится все примерно так: у меня есть ATtiny2313, он недорогой, но у него хватает ног/мозгов и сил делать практически все, что нужно для моего проекта: связываться с компом (uart), связываться с другим контроллером (usi), зажигать с заданной яркостью светодиоды; со светодиодами я игрался со встроенным генератором 8 МГц, хотя вчера для опытов с uart я поставил внешний кварц на 11 с чем-то МГц
Конструкция будет состоять из нескольких (одинаковых) контроллеров, из которых один будет главнее – подключаться к компу, а остальные будут подключаться к нему последовательно
У основного контроллера вычитаем ноги: PA0, PA1 – используются для подключения кварца; PD0, PD1 – связь c сом-портом компьютера (или с ft232rt с usb портом); PB5, PB6, PB7 – связь с другими контроллерами по two/tree wire interface – остаются PD2-PD6, PB0-PB4 (еще PB6 если использовать two wire), т.е. всего 10 (11) выводов/каналов цвета или 3 полных источника цвета
У вспомогательных контроллеров – 12 выводов или 4 источника; всего у меня запланировано 14 светодиодов по периметру равномерно -> нужно 3 * 4 + 1 * 3 контроллера
Правда есть вариант сократить количество – у меня болтается с давних времен 3 меги16, одна в jtag, а две – для опытов; т.е. можно взять мегу для основного контроллера, в бенефитах – много ног + отладка в устройстве, если правильно считаю, то доступно будет PA0-PA7 + PB0-PB7 + PC6-PC7 + PD2-PD7 = 22 вывода -> 7 светодиодов сразу (это с учетом того, что jtag занимает 4 ножки); и памяти у него побольше, что с моим умением может оказаться аргументом..
Так что пока играюсь с макеткой с тини, а на вторую макетку вставлю мегу – как только прошью jtag, и с этой связкой буду разбираться с связью между контроллерами
С такими исходными можно думать про протокол; в любом случае (используется для главного контроллера тини или мега) понятно, что главный контроллер не такой как все остальные. Для подсветки всего экрана надо определить цвет в 14 точках экрана (накрыв экран сеткой 5 * 4) и передав в контроллер 42 значения компонентов цвета – или взяв цвет в 20 точках при другом разбиении и другом количестве контроллеров, и передав 60 значений компонентов цвета
В любом случае мастер (основной контроллер) получает пакет из компонент цвета, грубо говоря оставляет себе х * 3 значений (х – количество источников цвета, которое он поддерживает), а остальные значения передает дальше по цепочке
Следующий (рабочий) контроллер получает пакет, берет х * 3 значения из него (где опять же х – это количество источников цвета, которое он поддерживает), а остаток передает дальше
Но это я еще не изучал, если связь организована по принципу мастер-подчиненный, то контроллер может общаться только с мастером – и тогда механизм должен быть другим..