- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Hivatalos a OnePlus 13 startdátuma
- Android alkalmazások - szoftver kibeszélő topik
- Yettel topik
- Google Pixel topik
- Vivo X200 Pro - a kétszázát!
- Magisk
- Honor Magic7 Pro - kifinomult, költséges képalkotás
- Samsung Galaxy A56 - megbízható középszerűség
- Telekom mobilszolgáltatások
Hirdetés
-
Mobilarena
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
Teasüti
nagyúr
Sziasztok ismét!
Kérhetnék egy kis segítséget a stack pointer megértésében?
Annyit tudok róla, hogy the stack pointer is a small register that stores the address of the last program request in a stack.
Valamint átrágtam magam ezen a bevezetőn a pointer-ek használatáról.
Ez alapján úgy sejtem az SP egy uint16_t változóval egyenértékű regiszter, hisz 256-nál több bájt van az SRAM-ban.
Korrekt?
Egy új sketch-ben a Serial.println(SP) nekem 2297-et ad, ami egyrészt egy 16 bites szám, másrészt meg mi a fene?? Nem 2KB SRAM van csak az Atmel 328p-ben?Nem értem továbbá, hogy a stack és heap size vizsgálatakor miért így deklarálják a változókat, ahogy:
void check_mem() {
//uint8_t * heapptr, * stackptr; // I declared these globally
stackptr = (uint8_t *)malloc(4); // use stackptr temporarily
heapptr = stackptr; // save value of heap pointer
free(stackptr); // free up the memory again (sets stackptr to 0)
stackptr = (uint8_t *)(SP); // save value of stack pointer
}A stackptr egy pointer, az SP is egy pointer, stimmt.
De ez miért így van: stackptr = (uint8_t *)(SP); ??
Miért 8 bites? Nálam így a 2297-ből 249 lesz, csak épp azt nem értem ez hogy a fenébe lenne már kívánatos eredmény, amikor itt a 2297 csordul túl, vagyis korrupt adat.
Na meg sehogy nem tudok rájönni hogy tudom kiíratni Serial-ol az SP-n lévő adatot.
Nálam ez hibát dob:uint16_t report;
report = *SP;
Pedig elvileg ez az SP dereference volna a pointer tutorial szerint, vagyis ezen a címen lévő adatot kéne visszaadnia.exit status 1
invalid type argument of unary '*' (have 'uint16_t {aka unsigned int}')És ami még furább, hogy az alábbi pár sor 16 bites számot ír ki a monitorra:
register uint8_t *upStack;
upStack = (uint8_t *)SP;
Serial.println((int)upStack);Nagyra értékelnék egy kis iránymutatást, már egy ideje a netet túrom emiatt, de csak random fórum posztokat találok kevés átfedéssel.
Új hozzászólás Aktív témák
- Honda topik
- BestBuy topik
- Autós topik látogatók beszélgetős, offolós topikja
- Milyen cserélhető objektíves gépet?
- Tuningmesterek, teszterek, figyelem! Itt a Thermal Grizzly spéci tesztpadja!
- Üzleti vita és megbeszélés
- Linux kezdőknek
- Luck Dragon: Asszociációs játék. :)
- E-roller topik
- Proxmox VE
- További aktív témák...
- Szép HP EliteBook 840 G9 Fémházas Hordozható Érintős Ultrabook 14" -40% i5-1235U 32/1TB Iris Xe FHD+
- Logitech G935
- Creative Sound Blaster Live! 5.1-es digitális PCI hangkártya
- Rock Shox Recon Silver Air gyorszáras villa eladó (29-es)!
- ÚJ Nvidia RTX 5060/TI 8-16Gb GDDR7 DLSS4.0 Ryzen 7 5800X 16x4.7Ghz/32GB/512Gb/1TB M SSD/2ÉV gamer PC
- Seagate IronWolf Pro 4TB 3,5 Recertified HDD
- Apple iPhone 13 mini / 128GB / Gyárifüggetlen / 12Hó Garancia / 100% akku
- Apple iPhone 14 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- BESZÁMÍTÁS! Microsoft XBOX One S 512GB lemezes konzol + 6db játék garanciával hibátlan működéssel
- Prémium PC házak akár 20-40% kedvezménnyel eladók garanciával, számlával!
Állásajánlatok
Cég: FOTC
Város: Budapest