MPLAX IDE - niektore premenne sa nedaju zobrazit vo Watches tabulke

C,C++,C#

Moderátori: psichac, Moderátori

romiadam
Ultimate člen
Ultimate člen
Príspevky: 4418
Dátum registrácie: 09 Apr 2008, 00:00
Bydlisko: Wicklow, Irsko
Vek: 47

MPLAX IDE - niektore premenne sa nedaju zobrazit vo Watches tabulke

Príspevok od používateľa romiadam » 11 Sep 2022, 12:34

Ahojte,

Chcel by som konecne zistit, preco sa mi deje toto. Taketo veci ma psychicky likviduju.... :) :

Zacal som tak ze som deklaroval lokalne premenne vo Funkcii SPI_EEPROM.c bez volatile. Vsetko co tam vidite su to lokalne premenne funkcie SPI_EEPROM.c. Po skompilovani a PC sa zastavil vo funkcii SPI_EEPROM.c som vsetky ponatahoval do Wathces tabulky a zobrazili sa mi len dva Month a Coded_Tm_Dt. Ostatne sa nezobrazili.

image.png

Tak som zacal googlit a zistil som, ze tam mam dopisat volatile. Zkompiloval som to, PC som odkrokoval to tej funkcie a stale nic, to iste, ale akonahle som zase tam natiahol len jeden napr. Day, tak sa tam vsetko objavilo a Day tam bol 2x.


image.png


Ak zmazem volatile, zkompilujem to cele, PC a resetne sa to, tak zase zmiznu tie, ktore nemaju deklarovane volatile.

image.png
image.png

Vam, co pouzivate MPLAB X IDE sa to deje tiez? Je toto normalne, alebo je to problem MPLAB X IDE ako bug? Preco sa toto deje? Aky je rozdiel medzi Month a

Mam vsetky premenne vo funkciach oznacovat ako volatile, ak to chcem sledovat pocas debugovania?
Ako to riesite vy co robite v MPLAB X IDE?
Doteraz som to riesil narychlo tak, ze vsetko mam lokalne premenne. Tie sa vo Variables zobrazuju OK, ale to ze mat vsetko ako globalne premenne nie je riesenie.
0
Prepáčte mi za diakritiku a preklepy - väčšinou píšem z mobilu a ENG klavesnice.
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: MPLAX IDE - niektore premenne sa nedaju zobrazit vo Watches tabulke

Príspevok od používateľa peterple » 11 Sep 2022, 13:17

MP LAB nepoznám , tak len obecne. Volatile je modifikátor ktorý naznačuje prekladaču že premenná sa môže zmeniť kedykoľvek. Používa sa to na to aby kompilátor neurobil optimalizáciu a vždy načítaval obsah premennej do registrov. Príkladom je premenná ktorá sa mení v prerušení. V hlanom programe potom nejaký cyklus čo počíta s hodnotou tejto premennej. Ak je tam toho málo kompilátor by mohol načítať hodnotu premennej do registra a potom už pracovať len s touto hodnotou nakoľko sa mu to nikde v cykle nemení. To sú takzvané registrové premenné a slúži na to aby sa kód zrýchlil a skrátil. Volatile tomu zabráni a pri každom použití danej premennej sa jej obsah načíta priamo z pamäte.
Funguje to aj tak že niektoré lokálne premenné môžu byť čisto registrové. Teda v pamäti vôbec nefigurujú, ani v zásobníku. A ani IDE o nich nevie tak ich nezobrazuje. Takže vtedy to volatile zrejme pomôže.
Ale to je celé aj tak fuk. Tieto premenné sa dajú zobraziť len vtedy keď stojíš v príslusnej časti kódu kde existujú. Aspoň moje IDE to tak robí.

Inak pri MCU je niekedy lepšie debug robiť nie cez IDE (na niektorých MCU to nie je moc spoľahlivé) ale tak že sa ich obsah vypisuje na sériový port. Ja tak debugujem 99.99% času. Hlavne preto že to potrebujem často vidieť v reálnom čase, alebo aspoň čo najviac v reálnom čase lebo aj tie debug výpisy ten kód ovplyvňujú
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

romiadam
Ultimate člen
Ultimate člen
Príspevky: 4418
Dátum registrácie: 09 Apr 2008, 00:00
Bydlisko: Wicklow, Irsko
Vek: 47

Re: MPLAX IDE - niektore premenne sa nedaju zobrazit vo Watches tabulke

Príspevok od používateľa romiadam » 11 Sep 2022, 14:07

Diki za info.
Tak zatial tie co sa mi nezobrazia pocas debuu oznacim ako volatile a potom po ukonceni debugu a overeni funkcnosti funkcie to volatile zase odstranim. :thumbup:

Uvidime, ci niekto kto robi s MPLAB X IDE sa k tomu vjadri.
0
Prepáčte mi za diakritiku a preklepy - väčšinou píšem z mobilu a ENG klavesnice.
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok