Fórum témák

» Több friss téma
Lapozás: OK   125 / 138
(#) Rober_4 válasza Rober_4 hozzászólására (») Feb 4, 2023 /
 
É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
(#) pipi válasza Rober_4 hozzászólására (») 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?
(#) pipi válasza Rober_4 hozzászólására (») Feb 4, 2023 /
 
Arduino 1.8.15-el ez csont nélkül lefordul
32000*2byte tömb 7db
  1. #define TEMPLittleFSSIZE 32000  //max címezhető 32K, de 2 táblázat befér...
  2. int16_t temptbl1[TEMPLittleFSSIZE + 1]; //6mp-es mérések, 10*érték(mivel 1 tizedes), max 53óra hossz
  3. int16_t temptbl2[TEMPLittleFSSIZE + 1]; //6mp-es mérések, 10*érték(mivel 1 tizedes), max 53óra hossz
  4. int16_t temptbl3[TEMPLittleFSSIZE + 1]; //6mp-es mérések, 10*érték(mivel 1 tizedes), max 53óra hossz
  5. int16_t temptbl4[TEMPLittleFSSIZE + 1]; //6mp-es mérések, 10*érték(mivel 1 tizedes), max 53óra hossz
  6. int16_t temptbl5[TEMPLittleFSSIZE + 1]; //6mp-es mérések, 10*érték(mivel 1 tizedes), max 53óra hossz
  7. int16_t temptbl6[TEMPLittleFSSIZE + 1]; //6mp-es mérések, 10*érték(mivel 1 tizedes), max 53óra hossz
  8. int16_t temptbl7[TEMPLittleFSSIZE + 1]; //6mp-es mérések, 10*érték(mivel 1 tizedes), max 53óra hossz
  9.  
  10. void setup()
  11. {
  12.   Serial.begin(115200);
  13.   Serial.println("Compile date: " __DATE__ " " __TIME__ "\r\n" __FILE__);
  14. }//setup end
  15.  
  16. void loop()
  17. {
  18.  
  19. delay(5000);
  20. }// loop end
  21. ///************************************************************************
  22. ///************************************************************************
(#) Rober_4 válasza pipi hozzászólására (») Feb 5, 2023 /
 
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...
(#) Rober_4 válasza pipi hozzászólására (») Feb 5, 2023 /
 
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
(#) kapu48 válasza Rober_4 hozzászólására (») Feb 5, 2023 / 1
 
(#) kapu48 válasza Rober_4 hozzászólására (») Feb 5, 2023 / 1
 
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
(#) Rober_4 válasza Rober_4 hozzászólására (») Feb 5, 2023 /
 
Elírtam: 2minta 2kbájt. Elnézést. A másik kettő 10k.
(#) kapu48 válasza Rober_4 hozzászólására (») Feb 5, 2023 /
 
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
(#) kapu48 válasza kapu48 hozzászólására (») 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.
(#) Rober_4 válasza kapu48 hozzászólására (») Feb 5, 2023 /
 
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!
(#) pipi válasza Rober_4 hozzászólására (») Feb 5, 2023 /
 
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.
(#) Rober_4 válasza pipi hozzászólására (») Feb 5, 2023 /
 
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ó!
(#) kapu48 válasza Rober_4 hozzászólására (») Feb 5, 2023 /
 
Nem kel SD kártya. Van rengeteg szabad hely a flashban, csinálhatsz rá patrició táblát.
Bővebben: Link
(#) pipi válasza Rober_4 hozzászólására (») Feb 5, 2023 / 1
 
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
(#) kapu48 válasza pipi hozzászólására (») 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
(#) Rober_4 válasza pipi hozzászólására (») Feb 5, 2023 /
 
Ó 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:
  1. const int sample0[10537] =  { -623, -718, -812,...};
  2. int *genstartadress[4];
  3.  
  4. setup()
  5. {
  6. genstartadress[0] = sample0; //hiba
  7. }
  8.  
  9.  
  10.  
  11. }
(#) kapu48 válasza Rober_4 hozzászólására (») Feb 5, 2023 /
 
  1. //D50WAVESAMPLES:------------
  2. int16_t sample0[10537] =  { -623, -718, -812, -


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
(#) Rober_4 válasza kapu48 hozzászólására (») 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
(#) kapu48 válasza Rober_4 hozzászólására (») 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
(#) Rober_4 válasza kapu48 hozzászólására (») Feb 5, 2023 /
 
Igen de int16_t-ből nem tudok konstansot csinálni valahogy. Este megnézem, lehet elkapkodtam. Köszönöm mindenkinek!
(#) pipi válasza kapu48 hozzászólására (») Feb 5, 2023 /
 
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
(#) kapu48 válasza pipi hozzászólására (») Feb 5, 2023 /
 
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
(#) pipi válasza kapu48 hozzászólására (») Feb 5, 2023 /
 
Valóban igazad lehet sebesség ügyben, de nem hely problémája van, hanem kezelési, szerintem
(#) Rober_4 válasza pipi hozzászólására (») Feb 5, 2023 /
 
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
(#) kapu48 válasza Rober_4 hozzászólására (») Feb 6, 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
(#) Rober_4 válasza kapu48 hozzászólására (») Feb 6, 2023 /
 
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...
(#) Rober_4 válasza Rober_4 hozzászólására (») Feb 6, 2023 /
 
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
  1. int* - pointer to int
  2. int const * - pointer to const int
  3. int * const - const pointer to int
  4. int const * const - const pointer to const int
A hozzászólás módosítva: Feb 6, 2023
(#) szitko hozzászólása Feb 23, 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.
Következő: »»   125 / 138
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