Răspuns: Scurgerea stivei?
Exemplul de cod pe care l-am adus nu este cel în care am o problemă (deși ceva de genul ăsta), l-am adus pentru a mă ajuta să determin ce investiții există! Înlocuirea în timp ce pentru întreruperi, în acest ciclu se efectuează o mulțime de operații, de exemplu, așteptarea unui răspuns cu USART și parsarea datelor recepționate etc. Vă propuneți să o puneți în întreruperi?
În buclă timp (1), am o ieșire pentru depășirea timerului. Nu m-am întrebat de ce funcția este atârnată în această întrebare, am scris că sunt aproape sigur că din cauza stivei de depășire, și a cerut să explice ce înseamnă supraîncărcarea stivei.
Vreau să-mi clarific întrebările:
1) Care este gradul de cuibare în exemplul meu?
2) overflow stivă, este un exces de gradul de cuibărit și totul?
3) Care este gradul de cuibărire posibil?
4) care biți este responsabil pentru resetare în cazul depășirii stivei?
5) dacă timer-ul watchdog nu este pornit și bitul de resetare pentru suprapunerile de stivă nu este setat, controlerul se blochează?
Aș dori să-mi corectez puțin exemplul?
Exemplul de cod pe care l-am adus nu este cel în care am o problemă (deși ceva de genul ăsta), l-am adus pentru a mă ajuta să determin ce investiții există! Înlocuirea în timp ce pentru întreruperi, în acest ciclu se efectuează o mulțime de operații, de exemplu, așteptarea unui răspuns cu USART și parsarea datelor recepționate etc. Vă propuneți să o puneți în întreruperi?
În buclă timp (1), am o ieșire pentru depășirea timerului. Nu m-am întrebat de ce funcția este atârnată în această întrebare, am scris că sunt aproape sigur că din cauza stivei de depășire, și a cerut să explice ce înseamnă supraîncărcarea stivei.
Vreau să-mi clarific întrebările:
1) Care este gradul de cuibare în exemplul meu?
2) overflow stivă, este un exces de gradul de cuibărit și totul?
3) Care este gradul de cuibărire posibil?
4) care biți este responsabil pentru resetare în cazul depășirii stivei?
5) dacă timer-ul watchdog nu este pornit și nu este setat bitul de resetare pentru depășirea stivei, controlerul se blochează?
Aș dori să-mi corectez puțin exemplul?
În shell-ul compilatorului, verificați așa-numitele generatoare. fișier hartă.
Acolo, studiați arborele de apeluri
În nici un caz, este mai corect să construim un real (și nu ceea ce compilatorul a văzut) un graf grafic, apoi să utilizeze datele din .map și să determine suprapunerea. Imediat spun că nevoia apare foarte rar, dacă graficul este construit corect, compilatorul blestemă despre lipsa de memorie.
Stive atunci când apelați o funcție, strict vorbind două (poate să fie într-un amestec, dar acest lucru nu este cazul dvs.).
PIC18 - adâncimea admisibilă a atașamentelor într-o stivă de tip push / pop - 31 și aceasta este o er-stack. La adâncimea unei incinte 3. Pentru variabilele auto, aparent (offset), se folosește suprapunerea statică model.
E mai ușor, probabil. Care este "condiția" pentru ieșirea din bucla? Poate fi optimizat compilatorul "non volatil"?
Am decis problema mea, într-adevăr nu era pe stack. Acum vreau doar să știu în detaliu ce fel de fiară este și cât de gravă trebuie să fie pentru ea și dacă mă amenință în cazul meu.