Отговори на тема  [ 40 мнения ]  Отиди на страница Предишна  1, 2, 3
WS2812 светодиодна лента .... 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 28019
Местоположение: София
Мнение Re: WS2812 светодиодна лента ....
Зависи как предаваш. Ако ги рефрешваш постоянно, след като предадеш 24-те бита за последният светодиод трябва да направиш този ресет, иначе всичко което предаваш няма да влиза в тези светодиоди а те ще го трансферират за следващите.
Например имаме лента с 3 светодиода, А,В,С, искаш бяла бягаща точка :
reset
пакет 1 0х000000 ; 0х000000; 0х000000
reset
пакет 2 0хFFFFFF ; 0х000000; 0х000000
reset
пакет 3 0х000000 ; 0хFFFFFF; 0х000000
reset
пакет 4 0х000000 ; 0х000000; 0хFFFFFF

Ако не направиш ресет между пакетите светодиодите ще си останат изгасени, а пакети 2-4 ще се минат през тях очаквайки че са за други светодиоди след тях.

Идеята е съвсем проста, всеки светодиод след ресет поглъща първите 24 бита, и всички останали пропуска към изхода си. Също така вски светодиод преповтаря състоянията на входа си към изхода, разбира се минавайки през вътрешната логика. Ако имаш ресет на входа, той прави ресет на изхода.

В зависимост какво правиш може и да нее толкова лошо. В мануала пише NRZ, но на практика не е така, те затова сигурно са написали NZR :D.
Основните пробелми са няколко, аз по-нагоре съм ги описал, но ако сега се бориш и не ти се чете ...
1. Ледовете се дялкат от много производители, има разминаване в таймингите.
2. Поради 1 не може да си сигурен с кой лед ще ти доставят лента, освен ако не е от наистина реномиран доставчик, но отиваш на цени 15-18 $/м
3. Пак поради 1 не може да си сигурен дали няма да ти умре, ние имахем няколко хиляди метра дефектна лента, просто мре след месец два.
4. Различните производители имат различна честота на вътрешния PWM, може да се окаже че колкото и бързо да зареждаш вътршения PWM e много бавен
5. Ресета изобщо не е по спецификация, поне при мен, и раликата е в минус, т.е. ресетват се при по-малък период. От тук чисто софтуерни кахъри.
6. Поради 1, се принуждаваш да правиш доста точни тайминги, малките чепове не са много дори в това, ако трбява да вършиш и нещо съществено освен рефреша на тов светодиод.
7. Трудно, ако не и невъзможно да изпозлваш хардеурна перифериа на чепчето за да търкаляш протокола. Ако си един канал може да успееш с SPI в малко по странна конфигурация и с външен компонент, или с логическите целове на новите пиковци. Но ако си с повече канали забравяш за хардеур.
8. Храни се на 5 V, отделно пода в самата лента не е малък, а консумацията като характер е неприятна, има големи импулсни токове.

Та ако имаш един канал си ОК с някакъв чеп, ако искаш 5,6 до 8 канала, някои чепове са по-подходящи от други, 16 и 32 битовите биха имали предимство че ще ротираш по-малко, от там можеп да оптимизираш алгоритъма и да си го правиш софтуерно и за повече канали.

Ако обаче искаш да рефрешваш с висока скорост, и да имаш повече канали според мен най-удачно е малко FPGA или пък нещо с dual port memory. Хората правят и ЛЕД стени с такива.

Най-сериозният проблем за мен се оказва качеството и цената. Всичко осанало съм го преборил, имам читав DC/DC, каквото ми трябва съм го събрал в малък чеп, стъкмил съм таймингите за да работи с всичко което ми е попаднало като лед, нямам твърде дълги ленти за да ми е проблем пада в самата лента, общо взето работи стабилно.


Сря Авг 02, 2017 12:57 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2588
Местоположение: Велико Търново / София
Мнение Re: WS2812 светодиодна лента ....
ToHu написа:
Идеята е съвсем проста, всеки светодиод след ресет поглъща първите 24 бита, и всички останали пропуска към изхода си.

Ако е така то първо идват данните за първи светодиод, ресет и поглъжаща първите 24 бита..
Само че тук пише "Для того, чтобы значения цветов из временной памяти пикселей стали активными должна быть выдержана пауза в передаче (reset code) в течении 50мкС. После этой паузы цикл можно повторять снова."
Както е описано, по-скоро поглъща последните 24 бита които са стигнали до него. Т.е. ако имаш 3 диода почваш да предаваш първо данните за последния (най-отдалечения). Когато първия ги получи, следват нови 24 бита, при които първия почва да препредава на втория докато той получава за втория. Следва още едно последно 3то предаване при което първите 24 бита достигат от втория до крайния трети диод. Спира предаването на данни за поне 50 uS, което е ресет и установяване на данните.
Само не ми е ясно дали при ресета текущите данни във временната памет (преместващите регистри) се изтриват, предполгам че да ?

_________________
https://github.com/slav4ocom/


Сря Авг 02, 2017 1:24 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 28019
Местоположение: София
Мнение Re: WS2812 светодиодна лента ....
Значи първо идват данните за първия светодиод, но нямаш ресет след това, ако имаш ресет следващите 24 пак ще се погълнат от него.
Светодиода няма как да зане кои са последните, той е много глупаво у-ва. Строба му е така нареченият ресет сигнал. Предаваш първо данните за първия. Вътре във всеки диод предполагам има много проста логика, нещо като шифт регистър който се зарежда от DIN, брояч до 24 и тригер, който след като се напълни сетва тригера и той прехвърля входа към изхода, по същият този сигнал данните от шифт тегистъра се прехвърлят към PWM регистъра, и най-вероянтоима нещо като чакаш мултивибратор който ако не получи фронт за повече от 50 us, ресетва тригера на брояча и самият брояч. Всичко според мен е реализирано с елементарна логика, не ми се вярва вътре да има процесор или каквото и да е по-интелигентно. 20-на тригера и няколко ЛЕ това е всичко.


Сря Авг 02, 2017 1:31 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 28019
Местоположение: София
Мнение Re: WS2812 светодиодна лента ....
п.с. значи руснака е взел диаграмаъта от pdf, забележи, там пише next data refresh cycle, т.е. ако искаш да рефрешнеш този светодиод, трябва да му подадеш ресет, иначе той ще гълта всичко. Проблема е че тия 50 uSне са толкова,на повечето ленти са между 15-20 uS, даже имах някои с още по-малко време за ресет. нямам обеснение защо се разминават, а ако четеш pdf който пуснах по-горе, който изглежда и по-истински, там пише 300 uS ....накрая ще с еокаже че никога не съм работил с оригинален светодиод :D
И сега като се замисля, вътре може би няма чакащ мултивибратор а друг брояч който се клоква я от PWM-а я от нещо друго. И тук или накои китайци са решили да спестят накой друг тригер и са редуцирали брояча, или което също не е изключено са повишили тактовата честота, ако се взема от PWM започва да сатва съвсем логично, някои ледове са на доста по-висока PWM честота от оригинала, други пък са на по-ниска, за там нямам обеснение, може би са понижили честотата, редуцирали брояча и това се е получило, еидн господ знае.


Сря Авг 02, 2017 1:36 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2588
Местоположение: Велико Търново / София
Мнение Re: WS2812 светодиодна лента ....
Да вярно, че поглъща първите 24 бита. Обаче не е ли малко глупаво така. Какво ще се спечели от това ? Трябва допълнителна памет за още 24 бита, защото те не могат да се подадат директно към PWM. Идеята е данните да се стробират едновременно

_________________
https://github.com/slav4ocom/


Сря Авг 02, 2017 1:50 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 28019
Местоположение: София
Мнение Re: WS2812 светодиодна лента ....
Ммм защо да е глупаво, така е максимално ефективно. Ти така или иначе трябва да имаш PWM, самият PWM има регистър в който стои заданието и брояч и компаратор. Заданието си стои в регистъра и PWM си работи без да го е грижа ти какво подаваш, кога и как. При всички положения на теб ти трбява междинен регистър, няма как да пишеш директно в регистъра на PWM-а тъй като той работи през това време. Освен това я кажи някакъв начин по който реализираш поглъщане на последните 24 бита. Кои са последните ? Няма как да знаеш, освен ако не имплементираш протокол който да каже имам пакет от 1364 бита, и ти да чакаш твоите си 24 ... много повече логика, започва д асатва дори трудно за реализация с оглед неяснотта колко могта да са битовете. Така вече отиваш не на стейт машина ами на процесор, не че не можеш и чисто хардуерно да го реализираш но ...
Идеята не е толкова лоша,в крайна сметка по подобен начин са ни работили сума и лед табла, само че там имаме шифт регистри които се зареждат по SPI, наливаш всички регистри и след това подаваш един строб те да се прехвърлят в буфера на дисплея.
А ако си имал в предвид защо не са го реализирали така, защота така е нямало да работи. Ако се зареждат като шифт регистри опресняването няма да е синхронно, защото сигнала пак трябва да се предава от един на друг. Представи си че имаш 500 диода, и сигнал ресет е 50 uS. За да се рефрешнат ледовете първо трябва да предадеш всички битове, 500х24х1.2 14.4 mS, след това 50 uS за първия, след той трбява да изработи такъв сигнал за втория, втория за третия .. 500-ния ще се стробира след 500х50 = 25 ms и тотално ти стават 14 мс за предаване + 25 ms което е 39 мс на фрейм, като между първи и последен ще имаш 25 ms. Отделно ресета е специфициран като мин. т.е. някои може да са 50 uS, други 60, трети 80. Отделно оригинала е специфициран с 300 us ресет, което вече прави горната сметка още по-груба.
Както е реализирано всеки диод се рефрешва веднага щом получи своите 24 бита. Т.е. цялата лента ще се рефрешне за 14.4 мс, а разликата между първия и последният ще е само 13.2 мс вместо 25. Сега естествено те нещата се движат във времето, след като ресетнеш първия, той изработва ресет сигнал за втория, трябва да внимаваш кога започваш да ги пълниш, особенно ако имаш 300 us ресет интервал. От тук всъщност има логика ресет интервала да е възможно по-малък, за да не се случи това което предаваш да се застъпи с диод който още предава ресет. Да речем ако направиш 50 us ресет и веднага започнеш да наливаш, изхода на първият диод ще е още в ресет, докато той вече ще е получил своите 24 бита, и ще се опитва да ги препредава на следващият.
И от тук е логично ресета да не е по-дълъг от времето за предаване ан 24 бита, или 28.8 us, и сега след като взех да го мисля по-отблизо, нищо чудно нарочно да са променили пресета, и това което меря около 15 us идва много логично като време за ресет. Сега забележи че той се ресетва само ако нивото е ниско.

едит. малко се увлякох с байтовете ...битове навсякъде имам в предвид ..


Сря Авг 02, 2017 2:12 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2588
Местоположение: Велико Търново / София
Мнение Re: WS2812 светодиодна лента ....
ToHu написа:
Освен това я кажи някакъв начин по който реализираш поглъщане на последните 24 бита. Кои са последните ?

Ами нали като спре предаването на данни за 50 uS това индикира - край на данните. :)
PWM регистъра се стробира от временния регистър, но защо не директно от шифт регистъра да се зарежда ?

_________________
https://github.com/slav4ocom/


Сря Авг 02, 2017 2:35 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 28019
Местоположение: София
Мнение Re: WS2812 светодиодна лента ....
Ами то най-вероянто точно така става, шифта отива в PWM регистъра директно, а ако питаш защо PWM да не сравнява със шифта, защото като го пълниш той се мени, и pWM-а и той ще се мени. Зависи в какво състояние оставиш data бита, или поне на теория е така, нещо от което не успях да се възползвам. Аз си мислех ченаистина така работи, т.е. държиш датата в 1-ца и може и 1 сек да не се ресетне ... да ама не, не ще така :)
Иначе .... при по задълбочена промяна на логиката може и така да се измисли, но не виждам плюса, ако спреш предаването някъде на средата сума и диоди ще останат грешно заредени, иначе ще имаш най-много един, защото предходните ще са с новите сетинги, а след ходните ще са със старите, но все верни ...


Сря Авг 02, 2017 7:28 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2588
Местоположение: Велико Търново / София
Мнение Re: WS2812 светодиодна лента ....
ToHu написа:
а след ходните ще са със старите, но все верни ...

За тях няма да има данни и след ресета ще останат тъмни.
Както и да е, просто ми станаха интересни тия ленти та като посъбера пари може да взема и да си поиграя с тях. Иначе ти все пак си работил доста с тях и знаеш всичко точно как е...

_________________
https://github.com/slav4ocom/


Сря Авг 02, 2017 7:42 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 28019
Местоположение: София
Мнение Re: WS2812 светодиодна лента ....
Не няма. Това дали му зредиш нещо или не не е свързано със състоянието на диода. Когато не си го клочил той няма да зане че изобщо са му подаванинови данни, освне ако не предлагаш тотално различна концепция да бъде изградена. В момента управлението на светодиодите, т.е. PWM и комуникацията са асинхронни процеси. В диода си има еидн PWM модул, в който си му заредил някакви данни, и той си ги върти до безкрай тия данни. Като дойде ресета просто се приготвя и чака нови данни. Без значение дали по оригиналната схема, или по нова, в този преместваш регистър ще ти стоят старите данни, които ще с епрехвърлят пак към лед-а. Това в в твоят вариант, а в оригиналния той изобщо няма да инициира прехвърляне, защото не е приел неговите си 24 бита.
Значи няма никакъв проблем ако имаш 20 светодиода да предадеш само 48 байта, това ще зареди първите 2, а останалите ще продължат да си светят както са светели до момента.


Сря Авг 02, 2017 8:34 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 40 мнения ]  Отиди на страница Предишна  1, 2, 3

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 6 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни