Fórum témák

» Több friss téma
Lapozás: OK   135 / 137
(#) pipi válasza KoblogPerGyok hozzászólására (») Okt 9, 2023 / 1
 
Jól gondolod nincs rá nyomtatva a külső PSRAM chip
(#) KoblogPerGyok válasza pipi hozzászólására (») Okt 9, 2023 /
 
Hát ez baj...

Megpróbálom az állandó értékeket a Flash-ba pakolni, de az meg lassú. De ez van.
(#) pipi válasza KoblogPerGyok hozzászólására (») Okt 9, 2023 / 1
 
Esp32-cam-on van
(#) kapu48 válasza KoblogPerGyok hozzászólására (») Okt 9, 2023 / 1
 
Ilyen S3-as panelt keres: Bővebben: Link

Adatlap: Bővebben: Link
5. oldal: 8Mb flash, 8Mb PSRAM
A hozzászólás módosítva: Okt 9, 2023
(#) KoblogPerGyok válasza kapu48 hozzászólására (») Okt 9, 2023 /
 
Jó, mert ezen sem látom a memória ic-t, ezért lehetett volna akár az enyémen is!

Ezek az IC-k benne vannak a fém lap alatt a pricival együtt? A wroom-nak nincs, csak az 1-nek, meg a többinek. Ezt már kibogaráztam.

( 8 mega nem is kevés különben!)
(#) icserny válasza KoblogPerGyok hozzászólására (») Okt 10, 2023 / 1
 
Az ESP32-S3-DevKitC-1-N8R8 típusszám végén az N8R8 jelzi, hogy 8 MB QD flash és 8 MB OT RAM memóriát tartalmaz a modul. Mivel az OT rövidítés octal SPI-t takar (8 adatvonal), feltételezem, hogy ez négy további kivezetést elvesz a GPIO lábak közül.
(#) teglascs válasza icserny hozzászólására (») Okt 10, 2023 /
 
Pár éve valaki linkelt egy russzki videót, amikor is memória chip-et cseréltek házilag valamelyik ESP32-es lapkán.
32MB-t tettek fel, és a proci a teszt szerint tényleg ennyit is látott utána.
(#) kapu48 válasza icserny hozzászólására (») Okt 10, 2023 /
 
Tudtommal.
Mind a két memória modul ugyanazon a SPI buszon van, csak a CS címzés van külön.
És a RAM kétszer (vagy négyszer?)gyorsabb mint a FLASH.
Persze a kivezetett pinek azért változnak, erre oda kel figyelni a kiosztásuknál!
A hozzászólás módosítva: Okt 10, 2023
(#) KoblogPerGyok válasza kapu48 hozzászólására (») Okt 10, 2023 /
 
Sziasztok!

Küzdök még kicsit, de nem jó.
Mintaszam=16384;
Float típusú tömbökkel operálnék.

Elvileg ekkor 1 tömb 4*16384 Byte, ami 65536byte, ami 64KByte.

Két ilyennél ezt a hibát kapom a fordítótól:

DRAM segment data does not fit.
region `dram0_0_seg' overflowed by 28848 bytes

Elvileg az 520KByte-ba ennek és a kicsi kódnak bele kéne férnie.
Arduino IDE 2.1.0

Board:
ESP32-WROOM-DA Module

De ezzel sem jó:

NodeMCU-32S

Mi lehet a gond?
(#) KoblogPerGyok válasza KoblogPerGyok hozzászólására (») Okt 10, 2023 /
 
Ok, megvan a hiba. Egy cikluson belül nem lehet értéket adni mindegyik tömbnek, mert nincs lefoglalva a memóriában, szerintem összezavarodik. Most elvileg megy, ha külön cikusban egymás után adok értéket nekik.
(#) icserny válasza kapu48 hozzászólására (») Okt 11, 2023 /
 
"Mind a két memória modul ugyanazon a SPI buszon van, csak a CS címzés van külön."
Meg az adatvonalak száma különbözik. A flash négy adatvezetéket használ, a RAM meg nyolcat. Ezért írtam, hogy feltehetőleg 4 GPIO kivezetést elvesz a RAM nélküli modulokhoz képest.
(#) pipi válasza icserny hozzászólására (») Okt 11, 2023 /
 
Ez gyanús nekem hogy ram függő... én nem láttam még 8bites psramot az esp-en.
https://www.reddit.com/media?url=https%3A%2F%2Fpreview.redd.it%2Fyv...7fa9eb
Itt a psram össz 8lábú 4 adat, 2 vezérlő, 2 táp
(#) kapu48 válasza pipi hozzászólására (») Okt 11, 2023 / 1
 
Itt a doksi róla, nézd meg a 26. oldal táblázatát:
Bővebben: Octal SPI
Már 8bites adatvonalal rendelkeznek.

Bővebben: Link
Octal SPI flash/PSRAM memóriával ellátott ESP32-S3-WROOM-1/1U modulokkal és ESP32-S3-WROOM-2 modulokkal rendelkező kártyák esetén a GPIO35, GPIO36 és GPIO37 érintkezők az ESP32-S3 közötti belső kommunikációt szolgálják. és SPI flash/PSRAM memória, így külső használatra nem áll rendelkezésre.
A hozzászólás módosítva: Okt 11, 2023
(#) pipi válasza kapu48 hozzászólására (») Okt 11, 2023 /
 
Köszi az infót, Nem tudtam hogy az S3 már ilyen okos, én leragadtam a simánál, ott még csak 4 bit volt
(#) KoblogPerGyok válasza kapu48 hozzászólására (») Okt 11, 2023 /
 
Vennem kell másikat, de szűkös a keret mostanában sajnos. Tegnap borozgattaam, miközben a Malloc-al foglalkoztam. De ma megnéztem, és rájöttem miért hagytam ott és ittam inkább tovább...

  1. Serial.begin(115200);
  2.   Serial.println ("Eddig megy...");
  3. // Dynamically allocate memory using malloc()
  4. //https://www.geeksforgeeks.org/dynamic-memory-allocation-in-c-using-malloc-calloc-free-and-realloc/
  5.   ptr = (int*)malloc(2 * Ciklus_max * sizeof(float));
  6.  
  7.     if (ptr == NULL) {
  8.         Serial.println("Memory not allocated.\n");
  9.     }
  10.     else
  11.     {
  12.       Serial.println("Memory allocated.\n");
  13.     }


A Ciklus_max az a tömb mérete, 16384. De nem férek el benne, de elvileg 500+KByte-nak kellene lennie. Ebben el kellene férnie nem? Ez 128KByte, de már ez sem fér el. Az IDE nem panaszkodik minden esetben, de volt olyan futás ami felment az ESP-re, de folyton újraindult. De azt egy hibás const -okozta.

Szóval hibásan írtam, hogy megvan a hiba. Sajnos nincs meg.

Másképpen kell a memóriát használni? Nekem sajnos kell ez a fajta memória, a Flash-ben is kell valamennyit tárolnom, de 3-4 ilyen tömbre szükségem lenne. Még így is Hanoi tornyait kell játszanom.
A hozzászólás módosítva: Okt 11, 2023
(#) pipi válasza KoblogPerGyok hozzászólására (») Okt 11, 2023 /
 
Normál deklarációval/helyfoglalással létre tudod hozni ezt a tömböt, a fordító elfogadja?
Mi az oka hogy futásidőben malloc-al foglalsz helyet?
(#) pipi válasza KoblogPerGyok hozzászólására (») Okt 11, 2023 /
 
A linkeden másképp írják... ptr = (cast-type*) malloc(byte-size)
Akkor ez miért is ptr = (int!!!!*)malloc(2 * Ciklus_max * sizeof(float!!!!));
(#) KoblogPerGyok válasza pipi hozzászólására (») Okt 11, 2023 /
 
Ha csak létrehozom, akkor afordító nem szól semmit sem. Azonban, ha fel akarom tölteni adatokkal, akkor már igen.
Másképpen van a linken? Az azért jó, mert másoltam!

Megnézem. Valamit nagyon benézek úgy érzem.
(#) GFI hozzászólása Okt 11, 2023 /
 
Sziasztok

Egy ht-ct62-est szeretnék programozni (ESP32C3+SX1262 Lora modul van 1 modulban)
Egy külső CP2102-es usb-ttl modullal szeretném programozni.
Az EN-lábon nyomógomb+kondi+ellenállás IO0 GND-re kötve. IO9-et is GND-re húztam ellenálláson keresztül.
VCC pedig USB 5V -> A1117/3,3 + kondi -ról kapja a tápot.

Kipróbáltam már több Bordot és a sebességet is lejjebb vettem, de Failed uploading: uploading error: exit status 2 vel száll el mindig.

Nagyon kevés info van erről az eszközről. Tudnátok segíteni, hogy miket nézek meg mit állítsak?
(#) KoblogPerGyok válasza pipi hozzászólására (») Okt 11, 2023 /
 
Linkről:

ptr = (int*) malloc(100 * sizeof(int));
Since the size of int is 4 bytes, this statement will allocate 400 bytes of memory. And, the pointer ptr holds the address of the first byte in the allocated memory.

Kód:
  1. //malloc-hoz kell
  2.  int* ptr;
  3.  
  4.  
  5. void setup() {
  6.   //long i;
  7.  
  8.   Serial.begin(115200);
  9.   Serial.println ("Eddig megy...");
  10. // Dynamically allocate memory using malloc()
  11. //https://www.geeksforgeeks.org/dynamic-memory-allocation-in-c-using-malloc-calloc-free-and-realloc/
  12.   ptr = (int*)malloc(2 * Ciklus_max * sizeof(float));
  13.  
  14.     if (ptr == NULL) {
  15.         Serial.println("Memory not allocated.\n");
  16.     }
  17.     else
  18.     {
  19.       Serial.println("Memory allocated.\n");
  20.     }


Nem sikerül allocálni. Nem lehet, hogy elromlott az ESP?

Futás a Serial monitoron:

Eddig megy...
Memory not allocated.

Ciklusok után...

Ha értéket adnék nekik, akkor rögtön hibával elszáll, azaz az IDE is azt mondja, hogy túlléptem a megengedett határt. A Malloc-al ki szerettem volna deríteni, hogy rosszul csináltam-e valamit és azért nem jó, vagy nincs elég memória ehhez, nem töltöm fel a tömböket, csak létrehozom például így:

float Adatok[16278];
float Re[16278];
float Im[16278];

A pointernek egésznek kell lennie, mert a memória területre mutat. Lehet ennek long-nak kell lennie? 540KByte meghaladná az integert? Na ez még lehet. Megnézem.
(#) KoblogPerGyok válasza KoblogPerGyok hozzászólására (») Okt 11, 2023 /
 
Átírtam a pointert long-ra, és a tömböket sem definiáltam előre, úgy sem sikerül lefoglalni ekkora értékeket.

Kipróbálom sokkal egyszerűbb adatokkal feltölteni.
(#) vargham válasza KoblogPerGyok hozzászólására (») Okt 11, 2023 /
 
Miért akarsz dinamikusan foglalni?
Mikrokontrollereken erősen ajánlott a statikus foglalás.
(#) pipi válasza KoblogPerGyok hozzászólására (») Okt 11, 2023 / 1
 
De miért long ha float?
Foglald inkább statikusan, "megfelelően"... és első körben ne csak pointert foglalj...
A hozzászólás módosítva: Okt 11, 2023
(#) KoblogPerGyok válasza KoblogPerGyok hozzászólására (») Okt 11, 2023 /
 
Erre már a fordító is mérges, de már nem látom át rendesen....

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. float PI_=3.141592653;
  6.  
  7. const long Mintaszam=32768/2; //32768
  8. long Ciklus_max=32768/2;
  9. float Re[Mintaszam];
  10. float Im[Mintaszam];
  11. float Adatok[Mintaszam];
  12.  
  13. //malloc-hoz kell
  14. long* ptr;
  15.  
  16.  
  17. void setup() {
  18.   long i;
  19.  
  20.   Serial.begin(115200);
  21.   Serial.println ("Eddig megy...");
  22. // Dynamically allocate memory using malloc()
  23. //https://www.geeksforgeeks.org/dynamic-memory-allocation-in-c-using-malloc-calloc-free-and-realloc/
  24.   ptr = (long*)malloc(2 * Ciklus_max * sizeof(float));
  25.  
  26.     if (ptr == NULL) {
  27.         Serial.println("Memory not allocated.\n");
  28.     }
  29.     else
  30.     {
  31.       Serial.println("Memory allocated.\n");
  32.     }
  33.  
  34.   for (i=0; i<Ciklus_max; i++)
  35.     {
  36.       Re[i]=1.1*(float)i;
  37.     }
  38.   for (i=0; i<Ciklus_max; i++)
  39.     {
  40.       Im[i]=10.1*(float)i;
  41.     }
  42.   for (i=0; i<Ciklus_max;i++)  //HIBA ROSSZUL MÁSOLTAM!!!!
  43.     {
  44.      Adatok[i]=456.1*(float)i;
  45.     }
  46.   Serial.println ("Ciklusok után...");
  47. }


A (float)i is egy teszt, ha nincs előtte, akkor sem megy.

IDE
DRAM segment data does not fit.
region `dram0_0_seg' overflowed by 94392 bytes

De ilyen hibát dobott akkor is, mikor a const Mintaszam-al akartam pár dolgot megoldani, ezért kellett a Ciklus_max. Ez teszt, nem éles, több változó is kell majd. Sokkal.
A hozzászólás módosítva: Okt 11, 2023
(#) KoblogPerGyok válasza pipi hozzászólására (») Okt 11, 2023 /
 
A pointer nem lehet float. Az egész szám ami a kezdő memória címre mutat. float-el el sem idul. Nálam nem, kipróbáltam.
(#) KoblogPerGyok válasza pipi hozzászólására (») Okt 11, 2023 /
 
Az volt az első. Ha adatokat adok ciklusban akkor elszáll minden. Addig jó. Értékadásnál lenne baj? Nem tudom. Ez volt az első, nem ment, ezért próbálta a foglalással.
(#) vargham válasza KoblogPerGyok hozzászólására (») Okt 11, 2023 /
 
Elolvastad az általam linkelt dokumentációt? Ott le van írva, hogy melyik RAM (nem egy összefüggő RAM van a mikrokontrollerben) mekkora és mire használható. Ráadásul egy RTOS környezet fut rajta, ami egy csomó mindent lefoglal, taskokat hoz létre, stb.
(#) KoblogPerGyok válasza vargham hozzászólására (») Okt 11, 2023 /
 
Átnézem mégegyszer, de nem vágom ennyire. Angolom már nem az igazi.
Átfutottam, de nem láttam a megoldást, de most megnézem részletesebben.
(#) pipi válasza KoblogPerGyok hozzászólására (») Okt 11, 2023 / 1
 
persze hogy nem lehet, De floatra mutató pointer igen, és neked az kell, nem int, meg long....
ptr = (long*)malloc(2 * Ciklus_max * sizeof(float));
itt tuti float* kell
---
Azért javasoltam a statikus foglalást, mert a hibaüzenet szerint ez nem fér be ebbe a ram-ba...
Ha meg nem fér be akkor a malloc sem tudja begyömöszölni
Következő: »»   135 / 137
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