Hirdetés
- Megérkezett a Google Pixel 7 és 7 Pro
- Ford SYNC 3 infotainment rendszer teszt
- Bemutatkozott a Poco X7 és X7 Pro
- Apple Watch
- Xiaomi 15T Pro - a téma nincs lezárva
- EarFun Air Pro 4+ – érdemi plusz
- Külföldi prepaid SIM-ek itthon
- Okosóra és okoskiegészítő topik
- Yettel topik
- Garmin Instinct – küldetés teljesítve
-
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
- Gamer PC - Ryzen 7 5700X / RX 9060 XT 16GB / B550 WIFI / 32GB RAM 3600Mhz / 1TB M.2 SSD / 650W GOLD
- Canon EOS M50 Mark II kit obival, 2db eredeti aksival, 1000 expoval, gyári dobozában, táskával.
- Hibátlan, 32" (81 cm) méretű Panasonic Viera LCD tv eladó
- ASRock H61M-GE LGA 1155 alaplap
- Eladó Komplett gép
- BESZÁMÍTÁS! ASRock B450 R5 5600X 16GB DDR4 512GB SSD RTX 3060 12GB Zalman Z1 Plus Cooler Master 750W
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7500F 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7800X3D 32/64GB RAM RTX 5080 16GB GAMER PC termékbeszámítással
- Update 11.13. Dell Latitude Precision Üzleti gépek, 2-in-1 gépek, 8-12. gen.
- Gamer PC-Számítógép! Csere-Beszámítás! R5 5500 / RX 6600XT / 32GB DDR4 / 512GB SSD
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


ekkold

