Fórum témák
» Több friss téma |
Érdemes lenne-e másik idére váltani esetleg? Ti melyikkel dolgoztok? Nálam csak a régi Arduino ide képes elindulni, az új szerintem összeakad vele. De lehet nem is azt erőltetném Esp32-re...
A hozzászólás módosítva: Feb 4, 2023
Miért?
Valahol az egész tömböt adod át fg. paraméterként? Pointert kell átadni, akkor nem zabálja a stack-et. Egy minimál fordítható progit mellékelsz?
Arduino 1.8.15-el ez csont nélkül lefordul
32000*2byte tömb 7db
Deklarálni én is tudom. Ha használni szeretném, akkor hal meg. Küldök kódot csak rendbeszedem, kikommentelem. Meglepően a mutatók sem oldják meg, pedig pont azért csináltam a dolgot mutatósra, mert egyszerre max 4db mintatömböt használnék, viszont, hogy a mögött melyik minta van a deklarált tömbökből az változhat...
Na meg is van. A Roland D50 Szinti hangmintáiból akartam egy azt hasonlóan lejátszó samplert készíteni. Ez így működik is 4 mintával. De csak azért mert 3 minta csak 2kbájt. És sajnos a reverbnek is kellett egy nagy tömb, nem nagyon tudom megúszni. Sok fórumon olvastam, hogy van egy fájl a fordító könyvtárában, ahol meg tudnám növelni a heap-ot. Mondjuk ha a mostani kétszerese lenne, az már elegendőnek tűnik...
Dobok egy kapcsolási rajzot is, hogy lásd miről van szó! A hozzászólás módosítva: Feb 5, 2023
Még több hasznos infó: Bővebben: Link
PSRAM javasolt: Bővebben: Link A hozzászólás módosítva: Feb 5, 2023
Elírtam: 2minta 2kbájt. Elnézést. A másik kettő 10k.
Hamar kinőted a HW-t!
Itt a nagyobb memóriával rendelkező: Bővebben: Link Pár kivezetésben eltér, mivel a beépített PSRAM-nak kötött a bekötése. A hozzászólás módosítva: Feb 5, 2023
A PSRAM-ba telepíthetsz FFAT fájl rendszert. Amit aztán el tudsz érni az USB OTG csatlakozón keresztül, és módosíthatod a tartalmát. Fel tölthetsz tetszőleges tömböket menetközben.
PC-ről.
Mi ez a PSRAM? Egy külső RAM? Rákötöm persze, ha ott tudom tárolni a mintákat. Hogyan tudnám ezt a legegyszerűbben kivitelezni?
Sd-kártyán is gondolkodtam. Illetve egy fájlfs-en magán az ESP-32-őn. De inkább tennék valami flastromot rá, ami eltárolna 50hullámformát. És mindig csak az aktuális 4-et kellene betöltenem... (Bár ahogy én Mórickaként elképzeltem, hogy minden mintára mutatna egy mutató, és tetszőlegesen ugrálok közöttük, az úgy látszik esélytelen, mert abban a pillanatban, ahogy a mutatót létrehozom, már nem fordítja le a fordító, jön a memóriahiba... Köszönöm tanulmányozom a doksikat!
Azt a hibaüzit már a fordító dobja nem? Vagy ez megszűnt? Lefordítani nem tudom mert include/library hiánya van...
Rakd tele a programod serialprint-el, vagy led villogtatótval, hogy lásd hol száll el.
Ez működik jól, illetve a midi részben van 1 kis bug, de azt majd javítom. De ha nagyobb méretű "sample" tömböt választanék a hullámformáknak, akkor jönne a hiba. Nincs elszállás, lefordítani nem tudom akkor, ez még jó.
Telepítve van a midi.h, illetve az esp32 alaplapkezelő dolgai. Más spéci nincs benne. Az lcd rész még nincs implementálva azt kikommentelheted. Egy ilyen nem árt hozzá. De elvileg megoldható, hogy ahelyett az i2s a beépített dac-ra küldjön, bár nem próbáltam, és rosszabb minőségű. Az usb midi is cserélhető a kódban a sima midi helyett... Annyiban azonban igazad lehet, hogyha ki tudnám menet közben a memóriafoglaltságot írogatni, akkor lehet látnám, hogy mi hogy van. Egyébként imádom ezt a hardvert, zseniálisan jó!
Nem kel SD kártya. Van rengeteg szabad hely a flashban, csinálhatsz rá patrició táblát.
Bővebben: Link
PSram van az esp32-cam-on...
Ha azok a tömbök konstansok, akkor tárold a flash-ban vagyis írj elé egy "const"-ot const int16_t sample0[10537] =.... így a progi is gyorsabban indul, kimarad a futás közbeni értékadás/változó inicializálás A hozzászólás módosítva: Feb 5, 2023
Az esp32-cam-nak kevés a szabad kivezetése!
Az újabb ESP32 S3-as modulok vannak különböző memória méret választékban: ESP32-S3-DevKitC Bővebben: Link
Ó lehet nem láttam a fától az erdőt? Viszont kicsit másképpen kell kezelnem a mutatókat constanssal, ahogy nézem, de lehet ez a megoldás! Köszönöm!
A lényeg az lenne, hogy megváltoztató lehessen genstartadress címe. Ebben még valami hiba van constans tömb esetén:
A tömböd int16_t, a pointered pedig: int *genstartadress[4]; Legyen agyforma a típusa. És const mind a kettő (Az int 32 bites) A hozzászólás módosítva: Feb 5, 2023
Idézet: „invalid conversion from 'const int*' to 'int*' [-fpermissive]” Egyforma a típusa. Átírtam már a fenti kódban is, mert int16_t-re nem engedte a konstanst... A hozzászólás módosítva: Feb 5, 2023
De az int kétszer akkora helyet foglal, és te csak a felét fogod használni. Mivel 16 bitesek az adataid
32 bites rendszeren az int is 32 bites: Bővebben: Link
Igen de int16_t-ből nem tudok konstansot csinálni valahogy. Este megnézem, lehet elkapkodtam. Köszönöm mindenkinek!
Csak kiegészíítésképp : mivel a proc 32bites, gyorsabb lehet a 32 bites int kezelés, mint a 16 bites int. Már ha hely mint a tenger
A ki induló pont a kevés memória volt! Most ha a fele tömbnek kétszer akóra helyet foglal az megoldás lesz?
Más! Mivel ez MIDI mindig sebesség problémája van, volt! Most ha át helyezi a nagy tömbjeit a flashba úgy jóval lassabb lesz az olvasás. Ez jó lesz? A külső flash memória 4 bites adat vonallal rendelkezik, mért gyorsabb ha kétszer nagyobb tömböt olvasol mint ami szükséges? A hozzászólás módosítva: Feb 5, 2023
Valóban igazad lehet sebesség ügyben, de nem hely problémája van, hanem kezelési, szerintem
Igen az volt a problémám, hogy nem fordult le a projekt mert nagy méretűek a tömbök. Memóriám és sebességem is van még rengeteg. Szerintem nem vettem észre az elég kézenfekvő megoldást a konstanst. Pont erre találták ki. Tudom alapdolog, de nekem eddig mindig olyan projektjeim voltak, ahol problémát okozott valamit változatlanul hagyni, most meg rengeteg fix változatlan mintám van.
A hozzászólás módosítva: Feb 5, 2023
A konstansok a flashban maradnak. Flashból nem tudsz DMA-n küldeni perifériába.
Mégis kel foglalnod memória puffert amibe be töltögetsz adatot és onnan DMA-val küldöd ki. Bővebben: Link
Köszi ez tök jó videó, próbálom lefordítani, de szerintem a lényege, hogy ne használjunk túl nagy puffert, mert megtelik a srack memóriánk, hanem használjunk több kicsi puffert az i2s-nél, így nem nagy adattömegeket kell egyszerre mozgatni és kisebb az esélye a stack owerflow-nak.
Viszont én a latency miatt biztosan nem fogok 1024-es buffernél nagyobbat használni, és szerintem ehhez a projekthez megfelelő is, a bedugulás esélye is kicsi, de ha lesz ilyen problémám mindenképpen átgondolom. A constansok megoldották a kérdésemet, kipróbáltam, köszönöm a segítséget! 10 mintával lett 35% a memóriafoglalásom ebből 17% a global memória, és szerintem még bőven elfér...
A kérdésemre a válasz meg itt találtam meg.
A lényeg, hogy van mutató, konstansra mutató mutató, nem konstansra mutató konstans mutató, konstansra mutató konstans mutató, és még egyéb nyalánkságok
A hozzászólás módosítva: Feb 6, 2023
Sziasztok
ESP8266-al, hogy tudok kiterjesztett ASCII kódot küldeni sorosporton Arduino IDE környezetben? Akár ékezetes betüket, vagy különleges karaktereket. |
Bejelentkezés
Hirdetés |