Stack túlcsordulás fórum mikro-chip
Válasz: Stack túlcsordulás?
Az általam bevitt példakód nem az, amiben problémám van (bár valami ilyesmi), azért hoztam, hogy segítsen meghatározni, hogy hány befektetés létezik! A megszakítások helyett ebben a ciklusban meglehetősen sok műveletet végeznek el, például várnak az USART-ra adott válaszra és a kapott adatok feldolgozására stb. Azt javasolja, hogy félbeszakítsa?
Az idő (1) hurokban van egy kilépés az időzítő túlcsordulásához. Nem kérdeztem, miért függ a függvény ebben a kérdésben, azt írtam, hogy szinte biztos vagyok benne, hogy a stack túlcsordulása miatt, és megkértem, hogy elmagyarázza, mi a stack túlcsordulás.
Tisztázni szeretném kérdéseimet:
1) Mi a fészkelés mértéke a példámban?
2) Stack túlcsordulás, ez a felesleg a fészkelés foka és minden?
3) milyen lehet a fészkelődés mértéke?
4) melyik bit felel a resetért a stack túlcsordulásakor?
5) ha a watchdog időzítő nincs bekapcsolva, és a reset bit a stack túlcsorduláshoz nincs beállítva, a vezérlő lóg?
Szeretnék kicsit kijavítani a példát?
Az általam bevitt példakód nem az, amiben problémám van (bár valami ilyesmi), azért hoztam, hogy segítsen meghatározni, hogy hány befektetés létezik! A megszakítások helyett ebben a ciklusban meglehetősen sok műveletet végeznek el, például várnak az USART-ra adott válaszra és a kapott adatok feldolgozására stb. Azt javasolja, hogy félbeszakítsa?
Az idő (1) hurokban van egy kilépés az időzítő túlcsordulásához. Nem kérdeztem, miért függ a függvény ebben a kérdésben, azt írtam, hogy szinte biztos vagyok benne, hogy a stack túlcsordulása miatt, és megkértem, hogy elmagyarázza, mi a stack túlcsordulás.
Tisztázni szeretném kérdéseimet:
1) Mi a fészkelés mértéke a példámban?
2) Stack túlcsordulás, ez a felesleg a fészkelés foka és minden?
3) milyen lehet a fészkelődés mértéke?
4) melyik bit felel a resetért a stack túlcsordulásakor?
5) ha a watchdog időzítő nincs bekapcsolva, és a reset bit a stack túlcsorduláshoz nincs beállítva, a vezérlő lóg?
Szeretnék kicsit kijavítani a példát?
A fordító héjában ellenőrizze az úgynevezett generátorokat. térképfájl.
Ott tanulmányozza a hívásfát
Semmi esetre sem helyesebb a valós (és nem az, amit a fordító látta) egy grafikonra, majd használja a .map adatait és meghatározza az átfedést. Azonnal azt mondom, hogy rendkívül ritkán merül fel a szükség, ha a grafikon helyesen lett felépítve, a fordító elkáromkodik a memória hiányáról.
Ha egy függvényt hívunk le, akkor szigorúan két (esetleg keveredik, de ez nem a te eseted).
PIC18 - megengedett mélység a csatolmányok 1 push / pop verem - 31, és ez egy er-stack. Önnek egy szekrény mélysége 3. Az automatikus változók esetében láthatóan (offset), a modell statikus átfedést használ.
Könnyebb, valószínűleg. Mi a "feltétel" a hurok elhagyásához? Lehet-e akár "nem volatil" fordító optimalizálni?
Elhatároztam a problémámat, valójában nem volt a verem. Most csak részletesebben szeretném tudni, hogy milyen vadállat van, és mennyire komolynak kell lennie hozzá, és hogy veszélyben van-e az én esetemben.