Sida 1 av 1

Stacken i 18F8622 mfl PICAR

Postat: 17 oktober 2006, 09:34:37
av TomasL
Är det möjligt att dumpa HW Stacken för att sedan återställa den i 18F8622 mfl PICar.

Efter att ha studerat databladet kan jag konstatera att stacken inte är direkt läsbar, enbart TopOfStack är läsbar.
Men så finns det en del stackinstruktioner.

Är jag rätt ute när jag tänker så här:
För att dumpa:
Lagra SP
Lagra TOS, POPa stacken lagra TOS osv.
För att återställa:
PUSHa PC, ersätt med lagrat värde, PUSH igen,
ersätt med nästa osv, tills SP är samma som den ursprungliga

Är detta möjligt att genomföra?
Nån som gjort det eller har ideer om det.

Postat: 17 oktober 2006, 13:04:51
av sodjan
*Varför* vill du göra det ???

Postat: 17 oktober 2006, 13:23:21
av TomasL
Nånting går in i en loop efter ett hundratal exekveringar, eftersom det är tidskritskt (nåja någorlunda) kan jag inte sätta en BP, och återstarta efter varje stopp.
Eftersom interrupten fungerar, tänkte jag att om jag dumpar SP när det händer, har jag åtmindstone en chans att hitta var jag fastnar nånstans.

Nåväl det är iofs historia nu, dumpade TOS genererade ett yttre int, och satte en BP i interrupt rutinen, och hittade var det loopar.
Visar sig att I2C rutinen av nån anledning hänger sig ibland.

Men å andra sidan kan det vara intressant ur andra perspektiv att veta hur mycket man kan manipulera stacken

Postat: 17 oktober 2006, 14:52:17
av Seven11
sodjan: spelar det nån roll????

Postat: 17 oktober 2006, 14:54:24
av sodjan
Självklart !
Det händer ganska ofta att någon frågar om en liten detalj, och sedan,
när hela bilden framgår, så visar det sig inte allt för sällan att man
t.ex har missförstått något eller helt enkelt har valt en dålig
metod att lösa ett specifikt problem. Därför är det alltid viktigt/bra
att ha hela bilden klar för sig.

Postat: 17 oktober 2006, 16:45:12
av Seven11
absolut inte!

Postat: 17 oktober 2006, 17:12:30
av TomasL
Jo det kan ju i vissa lägen vara intressant och veta varför nån vill göra på ett speciellt sätt.

Den ursprungliga frågan kvarstår dock.