RAM terhelés

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
IzLuCSi
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2017. szeptember 26. kedd, 14:34

RAM terhelés

Hozzászólás Szerző: IzLuCSi »

Mik fogyasztják a memóriát?
Ha pl szervokat akarok vezérelni a Servo.write() paranccsal, akkor az fogyasztja a memóriát, ha beírok neki 180-at pl. vagy ha egy konstanst írok be neki, amit a progmem parancsal a flash memóriába mentetek le vele?

Ha létrehozok egy függvényt, akkor az abban lévő dolgok csak addig terhelik a RAM -ot ameddig az fut? Ha pedig ugyan azt a programrészt nem függvénnyel oldom meg, akkor pedig jobban terheli?
vargham
Chipgyilok
Hozzászólások: 308
Csatlakozott: 2014. január 8. szerda, 8:32

Re: RAM terhelés

Hozzászólás Szerző: vargham »

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: RAM terhelés

Hozzászólás Szerző: Robert »

Tessék a cikket végigolvasni... :(
- Progmem: Flashban van, SRAMba csak a részkiolvasásra kerül, amikor szükség van rá.
- a létrehozott függvény a HEAPban foglal helyet. A memóriafelszabadítás (ideális esetben) ha kilépsz belőle (véget ér a függvény). De csak akkor, ha nem hívtál meg alóla újabb függvényt illetve nem körkörösen hívtad meg a függvényt (ekkor elfogy teljesen a SRAM).
- sok függvényed újabb eljárásokat/függvényeket hív meg - az újabb memóriafoglalást jelent.
http://www.tavir.hu - a gazda :)
IzLuCSi
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2017. szeptember 26. kedd, 14:34

Re: RAM terhelés

Hozzászólás Szerző: IzLuCSi »

El olvastam és akkor ha csak 1-1 fügvényt hívok be egyszere majd miután az végzet az után a következőt akkor elvileg kevésbé lesz terhelt a program. Az úgy oké.
De az első kérdésrészre nem találtam benne választ. Az a baj nem tudom hogy ha pl Servo.write(180); ezt így be írom neki akkor a 180-at ő most egy új konstansként kezeli és minden ilyen parancs egy egy új konstans neki?

#include -ot lehet rakni függvénybe? hogy a könyvtár is csak akkor legyen meg hivva amikor a függvény? (csak akkor van rá szükség amikor arra a függvényre is)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: RAM terhelés

Hozzászólás Szerző: Robert »

#include - neked kényelmi rész, hogy ne kelljen egybe begépelni mindent.
Azt jelenti, hogy ide az include utáni file tartalma jön, mintha ide lenne gépelve....

Servo.write(szám) - a fordító miatt ez változóként fordul - ha jól emlékszem.
http://www.tavir.hu - a gazda :)
IzLuCSi
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2017. szeptember 26. kedd, 14:34

Re: RAM terhelés

Hozzászólás Szerző: IzLuCSi »

Tehát akkor jó ha a függvénybe rakom.
De nekem mégis hibát jelez.

Kód: Egész kijelölése

"program neve".o: In function `giros()':
"program helye":286: undefined reference to `giros()::Kalman::Kalman()'
"program helye":287: undefined reference to `giros()::Kalman::Kalman()'
"program helye":299: undefined reference to `giros()::PID::PID(double*, double*, double*, double, double, double, int)'
"program helye":300: undefined reference to `giros()::PID::PID(double*, double*, double*, double, double, double, int)'
"program helye":304: undefined reference to `giros()::PID::SetMode(int)'
"program helye":305: undefined reference to `giros()::PID::SetMode(int)'
vargham
Chipgyilok
Hozzászólások: 308
Csatlakozott: 2014. január 8. szerda, 8:32

Re: RAM terhelés

Hozzászólás Szerző: vargham »

Az undefined reference azt jelenti, hogy hivatkozol valamire, amit nem talál... Nem azt, hohy elfogyott a RAM.
C++ láthatóság megvan?
IzLuCSi
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2017. szeptember 26. kedd, 14:34

Re: RAM terhelés

Hozzászólás Szerző: IzLuCSi »

Ezt akkor adta ki amikor a 2 könyvtárat meg próbáltam egy függvénybe át rakni. Elöször engedte is. De aztán amikor a függvényben egy a könyvtártól független változótt meg akartam változtatni egy másikra akkor onnantól ezt írta ki.

Nem tudom mire gondolsz "C++ láthatóság " alatt.
Válasz küldése