RAM terhelés

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

RAM terhelés

HozzászólásSzerző: IzLuCSi » 2018. március 27. kedd, 21:01

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
Pákabűvész
Hozzászólások: 229
Csatlakozott: 2014. január 8. szerda, 8:32
Kapcsolat:

Re: RAM terhelés

HozzászólásSzerző: vargham » 2018. március 28. szerda, 5:28


Avatar
Robert
Elektronbűvölő
Hozzászólások: 9906
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: RAM terhelés

HozzászólásSzerző: Robert » 2018. március 28. szerda, 11:25

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ásSzerző: IzLuCSi » 2018. március 28. szerda, 17:44

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: 9906
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: RAM terhelés

HozzászólásSzerző: Robert » 2018. március 28. szerda, 18:06

#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ásSzerző: IzLuCSi » 2018. március 28. szerda, 18:56

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
Pákabűvész
Hozzászólások: 229
Csatlakozott: 2014. január 8. szerda, 8:32
Kapcsolat:

Re: RAM terhelés

HozzászólásSzerző: vargham » 2018. március 28. szerda, 19:21

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ásSzerző: IzLuCSi » 2018. március 29. csütörtök, 10:42

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.


Vissza: “Arduino / C-nyelvű programozás (AVR-Duino, EthDuino, Arduino, Diecimila)”

Ki van itt

Jelenlévő fórumozók: Bing [Bot] valamint 1 vendég