Светодиоды WS2812B

Форум, с конкретными примерами и реальными задачами и их решением.
Пишите в личку (admin, LEV-PRAV, mim) ссылки на темы, достойные быть скопированы сюда.

Модератор: Иван Николаевич

Re: Светодиоды WS2812B

Сообщение breaker (Тёма) » 13 ноя 2022, 23:07

andrewproffi писал(а):предлагаю свой вариант, на основе компонента ONEWIRE. Без всяких страшных букавок...
ps: на заставке видео не мое творчество
pss: если у кого старая версия протеуса, схема показана на рисунке, хотя в седьмой версии протеуса нет модели ws2812

вопрос:как работает 1wire?
это по прерыванию или в момент передачи данных в 1wire микроконтроллер больше ничем не занимается и не может заниматься?

лирика:
видео посмотрел, попытался разобраться. немного накидал "го***код", накидал в протеусе осцилографф и прочую фигню...
хочу как то наладить регулировку яркости, монитор 1602 приделать, пару АЦП регулировок и кнопочек....такое ощущение что с таким алгоритмом передачи данных в светодиоды 328P(условная абдурина на 16МГц) не вытянет....

1)на 20 светодиодов 11,05 мс (11,35 как курсор поставишь и померяешь) измерял время от начала до конца выдачи пакета данных( на осла порт D3 повесил )
так как:
1с/0,01105с=90,50 условных герц можно выдушить . как то мало. я что то делаю не так ?

хотелось бы разобраться как логично/правильнее управлять WS2812B.
но вот 1wire для меня какая то не понятная фигня.
в видео :
https://youtu.be/XsRb7xF4AxM?t=167
2:47 речь идёт о том , что согласно мануалу при 1024 светодиодах можно выжать 30. то есть логично предположить что при 100 светодиодах я должен получить 300 герц или свои 100 и какое то время в запасе на остальную работу. опять же еслия правильно понял,если 328р поддержит 800 Kbps . верно?
я где то ошибся с настройкой частот процессора в симуляции?

Proteus ARES/ISIS 7.8 SP2 (с форума)
Flowecode_AVR v5.5.2.1
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: breaker
Имя: Тёма
(минск)
Разработчик
Разработчик
Информация о пользователе

Re: Светодиоды WS2812B

Сообщение breaker (Тёма) » 13 ноя 2022, 23:34

В отрыве от того что была изменена библиотека 1wire, по мануалу:

T*H T*L сумма
0 CODE 0,40 0,85 1,25 мкс
1 CODE 0,80 0,45 1,25 мкс
RESET 50,00мкс

то есть бит данных передаётся 1,25 мкс
24 бита на светодиод , тогда: 1,25*24=30мкс - на светодиод
30мкс*20 светодиодов=600мкс или 0,6мс. у меня 11,5 . в 20 раз почти.

я явно где то ошибся. помогите найти где.
Ник: breaker
Имя: Тёма
(минск)
Разработчик
Разработчик
Информация о пользователе

Re: Светодиоды WS2812B

Сообщение Taska (Максим) » 18 ноя 2022, 09:23

Ну во первых ты ошибся в протеусе.
Нужно сделать так.
Screenshot_222.jpg

Тогда будет такая картина.
Screenshot_111.jpg

А вот мой 21 светодиод
Screenshot_333.jpg

Теперь подумай как правильно управлять WS2812B, через библиотеку с ассемблером или переделанным компонентом 1wire .
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Taska
Имя: Максим
(Кривой Рог)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Светодиоды WS2812B

Сообщение breaker (Тёма) » 20 ноя 2022, 14:20

Taska писал(а):Теперь подумай как правильно управлять WS2812B, через библиотеку с ассемблером или переделанным компонентом 1wire .

(изменил сообщение уже после того как разобрался чуть ниже)

Не уверен что правильно понял, это призыв к тому что я не правильно управляю/строю логику/блок схему, или размышление о том более правильно управлять через библиотеку с ассемблером, а переделка компонента 1wire является "костылём" ?
Если это вопрос, то как разовая акция на сделать гирлянду на 1wire меня устроит. но в целом мне кажется это решение кривым, так как существует какая то привязка к выбору частоты процессора...время от этого пляшет...или не знаю как обьяснить, но интуитивно решение мне не нравится. наверное до конца ещё не разобрался а больше механически повторяю чужой путь.
я попробовал открыть твой код в первом посту, испугался и закрыл. не хватает знаний. что почитать?

и я явно зря добавил вычисления и цикл while в момент вывода данных на светодиоды (хотя всё работало, автор делал акцент на том что так делать нельзя!)
Последний раз редактировалось Тёма 21 ноя 2022, 00:58, всего редактировалось 1 раз.
Ник: breaker
Имя: Тёма
(минск)
Разработчик
Разработчик
Информация о пользователе
Вернуться наверх

Re: Светодиоды WS2812B

Сообщение breaker (Тёма) » 21 ноя 2022, 00:48

Часть вопросов снята.
Отпустил ситуацию...походил подумал, отвлёкся вообще на другие проблемы...
Осенило что если бы проблема была реальной, время реальное было бы как в симуляции,то у меня бы в железе ничего не работало.А в железе всё работает- огоньки на полу лежат светятся всё меняется. Из чего я сделал вывод что проблема с PROTEUS.

Начал заново. написал простейшую программу с выводом на 20 светодиодов и задержкой 10мс после. засёк с помощью изменения сигнала на PD3 до и после паузы 10мс какова реальная пауза, и оказалось что у меня пауза 80мс ( это уже после совета выше по настройкам в протеусе). Гугл в помощь и о эврика!!!
CLKDIV8 изменить на Unprogrammed (деление на 8).изменил и пауза стала 10мс.
Запустил то что скидывал раньше, изменил CLKDIV8, время вывода стало соизмеримо с комментируемым выше( у меня вышло на 20LED 720мкс).
Посмотрим что будет следующим обо что я споткнусь.

итого: реальность /(8*2)=16 раз медленнее. у меня грубо было по подсчётам 20.всё нашёл по сути. рассчётное время теперь максимально совпадает с временем замерянным в протеусе.
Ник: breaker
Имя: Тёма
(минск)
Разработчик
Разработчик
Информация о пользователе
Вернуться наверх

Пред.

Вернуться в Готовые решения и примеры

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей

cron