Fórum témák

» Több friss téma
Fórum » PIC programozása C nyelven, C-Compiler
Lapozás: OK   145 / 153
(#) 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
(#) kontár hozzászólása Aug 8, 2020 /
 
Aki szeret C(C++) ban programozni,annak ajánlom a sourceboost programot.Eddig nagyon jó pénzért árulták most(nem tudom meddig) ingyenes. Szimulációt is lehet vele csinálni. Itt a link :Sourceboost
Csak ez a plusz szolgáltatás fizetős:Bővebben: Link
A hozzászólás módosítva: Aug 8, 2020
(#) icserny válasza kontár hozzászólására (») Aug 9, 2020 /
 
Mi a helyzet a licenszfüggő korlátozásokkal? Bővebben: Link
(#) Hp41C válasza icserny hozzászólására (») Aug 9, 2020 /
 
Idézet:
„SourceBoost V8.00

SourceBoost is now FREE. Version 8.00 is available to download. We are crawling trough our web site to bring it up-to-date. Please ignore references to licensing if you find any.”
(#) icserny válasza Hp41C hozzászólására (») Aug 10, 2020 /
 
Köszönöm, ez jó hír!
(#) bistvan196700 hozzászólása Aug 26, 2020 /
 
A SorceBoost c fordítóval szenvedek, valaki megtudná mondani mi ez a hibaüzenet?

hiba.jpg
    
(#) Hp41C válasza bistvan196700 hozzászólására (») Aug 26, 2020 /
 
Úgy tűnik, a fordító érzékeny a kis/nagy betűkre. Töröld a "peie = 1" sort.
(#) bistvan196700 válasza Hp41C hozzászólására (») Aug 26, 2020 /
 
Nagy betűvel is ugyan ez a hiba jön. A GIE =1; vagy a gie=1; is ez a probléma.
A hozzászólás módosítva: Aug 26, 2020
(#) Hp41C válasza bistvan196700 hozzászólására (») Aug 26, 2020 /
 
A SourceBoost honlapán levő mintapélda a
  1. set_bit(intcon, PEIE);

verziót tartalmazza.
(#) icserny válasza bistvan196700 hozzászólására (») Aug 26, 2020 /
 
Az általad használt #define nem teszi "változóvá" a PEIE szimbólumot, így nem szerepelhet értékadás baloldalán.
(#) lokátoros válasza bistvan196700 hozzászólására (») Aug 26, 2020 /
 
A hibaüzenet azt mondja hogy a bal oldali operandus ( PEIE ) nem balérték, vagyis nem állhat egy értékadás bal oldalán.
Oka:
A PEIE konstansként van definiálva.
A makró behelyettesítése után a fordító ezt látja amivel nem tud mit kezdeni: 0x0006 = 1;

Látom közben megelőztek
A hozzászólás módosítva: Aug 26, 2020
(#) bistvan196700 válasza icserny hozzászólására (») Aug 26, 2020 /
 
Köszi mind kettőtök válaszát. A regiszter fájlban szerepel PEIE is és #include "PIC16F690.h" is be van rakva. A tmr0=1; nem reklamál a fordító, ezt nem értem.

hiba.jpg
    
(#) bistvan196700 válasza lokátoros hozzászólására (») Aug 26, 2020 /
 
Köszi. Az set_bit(intcon, PEIE); ezt elfogadja. A hitech, vagy mikroc fordítóknál ez nem gond, akkor hozzá kell ehhez is szoknom.
(#) Bakman válasza bistvan196700 hozzászólására (») Aug 26, 2020 /
 
Esetleg:
  1. intcon.PEIE=1;
(#) bistvan196700 válasza Bakman hozzászólására (») Aug 26, 2020 /
 
Köszi ez is működik. A #define _PEIE intcon.PEIE utána _PEIE=1; is jó.
(#) bistvan196700 hozzászólása Aug 27, 2020 /
 
Sziasztok! Sourceboost C Újabb problémába ütköztem, valós számokkal műveletek. Tehát float típusú változókkal műveletek, nem tudom rá venni a fordítót, hogy működjön a dolog.
A hozzászólás módosítva: Aug 27, 2020

hiba.jpg
    
(#) _BiG_ válasza bistvan196700 hozzászólására (») Aug 27, 2020 /
 
Létezik-e ilyen néven a használni kívánt függvény? Mert a hibaüzenet azt mutatja, hogy ilyen nincs. Kis betű, nagy betű nem mindegy!
(#) bistvan196700 válasza _BiG_ hozzászólására (») Aug 27, 2020 /
 
Szia! a float.h-ban benne van.

hiba.jpg
    
(#) bistvan196700 válasza _BiG_ hozzászólására (») Aug 27, 2020 /
 
Kezd az agyam eldurranni ettől a SourceBoost c progitól, de ez ingyenes sajnos. Más fordítóknál működik a X=(int)300/0.09765; .Ennél telerakták ilyen hülye függvényekkel amik vagy működnek vagy nem.
(#) bistvan196700 válasza _BiG_ hozzászólására (») Aug 27, 2020 /
 
Közben rájöttem igazad volt hiányzott a float.pic16.lib fájl.
(#) _BiG_ válasza bistvan196700 hozzászólására (») Aug 27, 2020 /
 
Örvendek, hogy sikerült megoldani. A .h file csak a header, maga a kód a lib-ben van.
(#) bistvan196700 válasza _BiG_ hozzászólására (») Aug 29, 2020 /
 
Köszi, jó ez csak hozzá kell szokni.
(#) usane válasza bistvan196700 hozzászólására (») Aug 29, 2020 /
 
A jó ez attól füg milyen kódot fordít. Az XC is működik, de botrányos amit fordít.
Legalábbis az ingyenes verzió.
A hozzászólás módosítva: Aug 29, 2020
(#) bistvan196700 válasza usane hozzászólására (») Aug 29, 2020 /
 
Erről nem tudok mit nyilatkozni, most használom először.
(#) Bakman válasza usane hozzászólására (») Aug 29, 2020 /
 
Flowcode v7 vagy régebbi alapértelmezett fordítója a SourceBoost. Fényévekkel rövidebb kódot generál, mint az XC ingyenes verziója.
Következő: »»   145 / 153
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem