Да, всё именно так. Только 1wire - довольно тормознутая вещь и в реалтайме гнать поток может быть тяжёлой задачей. Главным образом надо рассматривать как некую альтернативу dmx512. Т.е. для запуска и управления эффектами. Но лишать мастера возможности управлять светодиодами каждой сосульки тоже не разумно. Поэтому у меня в голове созрел такой набор команд. 1)Каждый слейв имеет адрес(например 1-10). Адрес 0 - общий и принимается всеми устройствами. Т.е. можно обратиться как к конкретному так и ко всем девайсам. 2)Команда выбора номера эффекта и его скорости. 3)Команда загрузки байтов яркости в сосульку(полностью внешнее управление). 4)Команда Выполнить действие. Например мы сосулькам раздали задания, говорим Выполнить. Они все синхронно перешли в нужное состояние. В обратной связи(сосулька->мастер) смысла большого нет.
Это не просьба к реализации. Просто решил поделиться своими мыслями.
Попробовал ради интереса переписать алгоритм, пока без анимации, просто статичная картинка, но: - загрузка ядра ~4%, при том что ШИМ уже 4 разрядный и частота сканирования около 180Гц; - флеша заняло около 25%, ОЗУ свободно, таймер свободен, EEPROM свободен; Т.е. хватит времени и флеша на обработку какого-либо протокола связи, есть мысль сделать управление+питание по 2м проводам (очень удобно будет делать гирлянду из нескольких сосулек) Для ШИМ оставил 4 бита из соображений компактности кадра, так на один кадр по-прежнему хватает 6 байт, а вместе с адресом и контрольной суммой хватит 8 байт на один кадр на одно устройство. Получается для анимации со скоростью 10 к/с для 8 устройств нужен протокол со скоростью около 5кб/с, думаю это можно реализовать. При этом можно управлять каждым светодиодом каждой сосульки отдельно. А если и после этого флеш останется, то можно оставить "офф-лайн" анимацию Запихать сложную анимацию и после подать команду на выполнение не получится, ОЗУ всего 64 байта, это максимум 10 кадров, так что или прямое управление или выбор из "зашитых" эффектов. PS: это пока только теория, проверял в протеусе.
Интересное наблюдение : сваял эту схемку , набил туда смд светодиодов ,прошил, включил , а.... не работает (. Долго разбирался , в итоге отпаял несколько светодиодов , и.. о , чудо - заработало ! В итоге запаял обычные св/диоды и все работает. Вот не пойму , почему , смд светодиоды , когда паралельно-обернуты -не работают ???
Все- таки воткнул смд св/диоды !. Никогда бы не подумал , что их нужно подбирать . Выбрал 12шт из 40шт.. - видно те 40 мощнее по току получались , либо еще чего , короче из-за них не работало. А теперь "все пучком" )). PS. Может еще - кому пригодится наука.!
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Резисторы подбирал в меньшую и в большую сторону - никаких изменений , кроме яркости св/диодов. Зато уже протестировал ,оставил на ночь - никаких нареканий .
Реализовал прием и декодирование команд. Осталось передающую часть написать, пока не определился с контроллером... Мне дальше "сеть на сосульках" изобретать или не стоит?
Кстати, прикинул еще вариант размещения диодов, в виде звезды...
Мое мнение , чем проще - тем надежнее . Я вот что думаю , у тиньки13 можно ли использовать вход ресет под разные нужды , например доп выход под св-диоды или времязадающую цепь для регул. скорости. Либо ипользовать флеш для изменения скорости капель. Тогда можно увеличить кол-во диодов.
Я думаю, что большинство off-line эффектов можно реализовать на уровне алгоритма. Тогда не надо будет тратить флеш на хранение кадров. Или по крайней мере получится увеличить кол-во анимаций. Как раз так делал на простых мигалках вроде бегущих огней.
К вопросу со второй страницы о синхронности работы нескольких девайсов. В качестве "генератора случайного числа" для запуска можно использовать значение из регистра OSCCAL. Правда может случиться что МК с одной партии будут иметь одинаковые калибровочные константы. Кстати, еще же RC 9МГц через OSCCAL здорово разогнать можно. ДШ говорит, что аж до 18МГц. Норм думаю будет где-то до 16МГц. Это я к скорости ШИМ и частоте моргания диодов.
Питание с управлением по двум проводам наверное не стоит. Лапша не такая дорогая. А схема усложнится и чтобы прокормить светящиеся диоды с тинькой, надо будет на каждую плату вешать жирный электролит.
Лично для меня интерес представляет девайс с числом диодов от 16-18. HVPP программатор/dW отладчик для Tiny в наличии есть, поэтому может буду ваять своё.
Я думаю, что большинство off-line эффектов можно реализовать на уровне алгоритма. Тогда не надо будет тратить флеш на хранение кадров.
Да, это верно, думаю даже каплю с замедлением и ускорением падения можно алгоритмизировать...
uk8amk писал(а):
В качестве "генератора случайного числа" для запуска можно использовать значение из регистра OSCCAL. Правда может случиться что МК с одной партии будут иметь одинаковые калибровочные константы.
Можно любой из каналов АЦП задействовать перед стартом, шум младших бит хороший источник RND.
uk8amk писал(а):
Кстати, еще же RC 9МГц через OSCCAL здорово разогнать можно. ДШ говорит, что аж до 18МГц. Норм думаю будет где-то до 16МГц. Это я к скорости ШИМ и частоте моргания диодов.
После переделки алгоритма и 9МГц хватит, загрузка ядра мизерная, даже с обработкой команд.
uk8amk писал(а):
Питание с управлением по двум проводам наверное не стоит. Лапша не такая дорогая. А схема усложнится и чтобы прокормить светящиеся диоды с тинькой, надо будет на каждую плату вешать жирный электролит.
Не все так плохо, питание - меандр 10-20кГц, 5.6В, конденсатор нужен только для питания во время фронтов от - к +, помимо этого только мелкий мостик на двух sot23 шоттки - диодах, и резюк с одного полюса питания на МК, в остальном схема такая же...
uk8amk писал(а):
Лично для меня интерес представляет девайс с числом диодов от 16-18. HVPP программатор/dW отладчик для Tiny в наличии есть, поэтому может буду ваять своё.
Неполноценность моего программатора меня убивает Все, буду делать fusebit доктор... Если для связи задействовать reset, то можно замутить 20 светодиодов.
Спаял я линейку на 20 диодов. Смотрится получше 12-ти. Отладил пока 2 эффекта - капля и метеор. Получился 4-битный ШИМ. Скорость регенерации подбирал чтобы визуально не было заметно мерцания. Резисторы поставил по 100 Ом. Но кажется многовато, синие СД светятся не шибко ярко. Надо будет поменять на 50 Ом. Шью МК сейчас через debugWire. Через SPI мешали диоды и приходилось туда-сюда дёргать провода.
Придумаю ещё несколько каких-нибудь эффектов и можно будет приступать к реализации сетевого протокола. Было бы удобнее приём сделать через INT0, потому что через PCINT5/RST я буду ловить прерывание по каждому фронту. Но у PB5 малая нагрузочная способность поэтому здесь без вариантов.
Спаял я линейку на 20 диодов. Смотрится получше 12-ти.
Ну неудивительно) Кстати, ШИМ можно сделать и поразряднее, но яркость делать 4 битной, а нелинейность реализовать через таблицу. Т.е. в команде передаем яркость по 2 канала на байт, а при обработке команды через таблицу преобразуем яркость в ШИМ. Так можно 20 каналов запихнуть в 10 байт + байт адреса (туда же код команды) + CRC.
uk8amk писал(а):
Отладил пока 2 эффекта - капля и метеор. Получился 4-битный ШИМ. Скорость регенерации подбирал чтобы визуально не было заметно мерцания. Резисторы поставил по 100 Ом. Но кажется многовато, синие СД светятся не шибко ярко. Надо будет поменять на 50 Ом.
Питание какое? У меня 5В. Я тоже с синими экспериментирую, у меня килоомы стоят, но не на порту, а персональные для каждой пары диодов.
uk8amk писал(а):
Было бы удобнее приём сделать через INT0, потому что через PCINT5/RST я буду ловить прерывание по каждому фронту. Но у PB5 малая нагрузочная способность поэтому здесь без вариантов.
Я бы как раз PCINTом и ловил, вернее ловлю, оба фронта, но т.к. reset я задействовать не могу, я использую PCINT4.
О, у меня же есть куча TINY24, OSCCAL подкрутить, порт переназначить и можно отлаживать код для 20 светодиодов
Питание у меня 5В, без диодов. Не знаю почему не очень ярко. Но реально видно только в сумерках.
Вот ещё мысля. Когда идёт регенерация, то перебираются по очереди все светодиоды с 1 по 20-й, вне зависимости от того, включены они или нет. Т.е. макс яркость = 1/20. Возьмём какой-то эффект, пусть будет метеор. Одновременно горит пусть 8 светодиодов. Тогда не горящие мы можем пропустить и получим меньшую скважность и бОльшую яркость. Чтоб во время эффекта яркость не прыгала от числа зажженых диодов, установим мин число светодиодов на регенерацию = 8 (для данного эффекта).
Боюсь пропуск регенерации для не горящих светодиодов только усложнит алгоритм. Я сейчас применяю другую хитрость. Весь период регенерации за один такт ШИМ делится не на 20 частей, а только на 5! Ведь потенциально комбинацией с 2-мя или более DDR=1 и одним PORT=1 можно зажигать от 1 до 4х (при n=20) светодиодов. Таким образом, перебирая PORT=00001,00010,00100,01000,10000 можно засветить все 20 светодиодов, а уж какие из 4х на каждой части периода зажигать определяется через DDR, именно поэтому в таком варианте нужно ставить резисторы на каждую пару: 1) чтобы не было различий в яркости 2)чтобы не было засветки через паразитные цепи (в обход HI-Z портов через 2-3 диода).
Хотя как показала практика, паразитные цепи все-таки есть (проверял на n=12), при том что резисторы стояли на 1к (точнее 2х510). При этом у меня горела 4х20Вт лампа дневного света и "нормально горящие" светодиоды было отлично видно
Упихал в 998 байт чарлиплексинг 20 светодиодов, 64 битную ШИМ (16 уровней, через таблицу), обработку команд, и простую анимацию на 20 кадров (типа сосульки, только с постоянной скоростью, пока таблицей) Проверил в железе на тини24. Мерцания нет, засветки нет (только в статике, если глаз напрячь) и это на 8МГц... Обработку команд пока не проверял, нужно прошивку для управляющего контроллера писать.
Запустил сегодня алгоритм с пропуском негорящих диодов. В метеоре у меня 9 диодов, я пропускаю 11. Стало резко ярче.
Капля на 3 диода(пропуск 17) не понравилась. Светит слишком ярко и субъективно не видно перелива яркости через ШИМ(зависит от яркости освещения). Поэтому оставил пока 9. Сейчас думаю что с ускорением делать. Как-то она резко срабатывает. Интервал паузы между каплями и метеорами хочу сделать псевдослучайным.
С Tiny24 у меня облом. Наши магазины не знают о её существовании.
Мастером - МЕГА8 (8МГц), с переменником в качестве входного сигнала, слейв - ТИНИ13 (9.6МГц, ресет отключен!) должен отображать уровень, задаваемый переменником. Без мастера (по умолчанию, если порвать линию CONTROL) - некое подобие сосульки. Резисторы по-вкусу.
Думаю к мастеру можно управление с компа сделать, а то и DMX-512 замутить
Забавно. К сожалению сильно отличается от моего железа.
Я сегодня глюк интересный словил в AVRStudio 418. Код дорос где-то до 50%, после очередной компиляции пошла загрузка в таргет и всё зависло на Loading Event Memory с сообщением Emulator timeout. И после Target platform disconnected. Я уж было подумал что дракона спалил. Знаю, что версия посвежее может быть пофиксена, но на моей машине свеженькие почему-то идут со страшными глюками. Ничего что я рассказываю в вашей ветке про свой девайс?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 46
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения