Fórum témák

» Több friss téma
Fórum » PIC programozása C nyelven, C-Compiler
 
Témaindító: histu1985, idő: Feb 11, 2006
Témakörök:
Lapozás: OK   145 / 145
(#) Peppe válasza usane hozzászólására (») Ápr 29, 2020 /
 
Megpróbáltam értelmezi, de elég nehéz volt. De nem sikerült úgy látom a válaszodból.
1. pontosabban specifikáld a problémád
2. mellesleg sok megoldás lehet erre a problémára. FOR IF akkor is kell.
3. nem oldom meg a problémád. max segítek
(#) usane válasza Peppe hozzászólására (») Ápr 29, 2020 /
 
Nyilván nem úszom meg a for-if kombót, de minimalizálni szeretném.
Még nem nagyon számolgattam, de jó lenne, ha ez a feltöltés beleférne 10-15ms-ba, ami elég karcsú, még az ESP32 esetében is, de majd ha haladok a projektel akkor majd kiderül.
(#) cross51 válasza usane hozzászólására (») Ápr 30, 2020 /
 
Nem teljesen értem mit szeretnél, de ha ismétlődő elemeit vannak "amikor ráérsz" kidolgozol egy buffert és memcpy vagy ha van memória akkor csinálsz valami generátort ami constans tömböket csinál neked majd ezeket memcpy-vel töltöd a bufferedbe.

Szerk.:
A "ráérsz" művelet mellé ha van DMA és double buffered-be csinálod akkor amíg megy ki az info addig tudsz még egy buffert kidolgozni.
A hozzászólás módosítva: Ápr 30, 2020
(#) usane válasza cross51 hozzászólására (») Ápr 30, 2020 /
 
Nem hiszem, hogy az ESP32 RMT-je DMA-s de utánanézek. Az info elvileg 800kb/s sebességgel távozik ebből ez kb 7.5ms, de el tudom fogadni a dupláját, az még belefér egy dinamikus frissítésbe. A következőt kell elképzelni.
Van egy címezhető LEDsorom, SK6812RGBW egyszerűség kedéért mondjuk 6db LED amire feltöltök, valamilyen mintát, (piros, kék, sárga, zöld kék, piros). A szín az ismétlődés, ami összevissza, de a minta mindig ugyanaz.szám. Érthetőség kedvéért számokkal jelölve a mintát(1,2,3,4,2,1)Mindegy , hogy a szám milyen szín, de az azonos számok azons színt jelölnek, ezt értem mintán.
Az egyes elemek nem egy byte, hanem mivel RGBW kód így 4 byte, vagy egy 4 byteos tömb. Piros esetében pl {255,0,0,0}. Ezeket kell a megadott minta szerint bemásolni ( a példa szerint egy 6x4=24 elemű pufferbe). Egy szín esetében ez még nem is nehéz, de ha a mintában az összes szín változik akkor már valami kereső algoritmus szerűt kellene írni, ami mondjuk 1500 LED vagyis 6000 byte esetében egyenlőre nem tudom mennyi idő alatt fut le, még 240MHz-es ESP32-n is. Na valammi ilyesmin töröm a fejem most, de nagyon, hogy minél gyorsabb legyen
Kigészítésként, a minta is változtatható lesz majd, ha minden jól megy és sikerül kitalálnom.
A hozzászólás módosítva: Ápr 30, 2020
(#) cross51 válasza usane hozzászólására (») Ápr 30, 2020 /
 
Ha jól látom kb 500k RAM-od van ha a címezhető led-ek 6k foglalnak és tudod hogy egy frame kitolása 7.5ms akkor miért nem csinálsz egy queue-t?
Amiben annyi frame-et előre dolgozol ahhoz, hogy legyen időd a következő a renderelendő frame-t mindig renderelni.

Kétlem, hogy a 240 MHz controller-ben ne lenne DMA, de ha nincs használsz UART-ot vagy SPI-t és IT-vel pakolod ki az adott buffer-t.
Természetesen a címezhető led-ekhez egyik periféria sem jó, de eSDi rakott össze egy egyszerű logikát (amit CLC-vel (csak PIC) használt, de diszkrétbe is meg tudod oldani) amivel tudod SPI-vel hajtani a LED-eket így a software-nek nem kell pollingal a byte-okat küldeni Bővebben: Link.

Nem tudom, most hogyan van implementálva nálad a kommunikáció a LED felé, de ha a software pörgeti ki a bit-eket akkor másik lehetőség, hogyha az előző nem tetszik, használj TIMER-t így megint tehermentesítheted a software-t és több időd lesz renderelni.
(#) usane válasza cross51 hozzászólására (») Ápr 30, 2020 /
 
Az ötlet jó lenne, de a dinamikus frissítés egy spektrumanaliztor-szerű dolog, tehát zene fogja meghajtani, amit sajnos nem tudok előre bufferelni. Nem tudom konkrétan hogy kezeli az arduino könyvtár a kiküldést,annyira nem mentem bele, de ez a leggyorasabb és legjobb amit találtam, de nem bitbillegteti az biztos, hanem az RMT hardver küldi ki. Az RMT buffer feltöltése nem tudom hogy történik a háttérben. A PIC-en én is SPI-vel küldtem ki az adatokat, de ez itt nem játszik, mert így is szét kell bontanom a kimenetet (8 RMT csatorna van az EPS32-ben), hogy megmaradjon a hang dinamikája ennyi LED esetében. Ha eljutok odáig akkor írok valami egyszerű rutint, hogy a statikus adat mennyi idő alatt megy ki. Egyébként mintha meg is lenne adva, ez egy jól dokumentált könyvtár, majd utánanézek. Mindenesetre köszönöm az ötletelést, majd jelentkezem mi hogy megy
Következő: »»   145 / 145
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu