Forum: Mikrocontroller und Digitale Elektronik C18 Push & POP?


von Stefan (Gast)


Lesenswert?

Hallo!

Mein PIC-Programm zeigt selstsame BUGS.
In unrythmischen Zyklen Gerät mein Programm in einen Abschnitt, in den 
es
eigentlich nicht kommen darf. Irgenwie wird eine Variable überschrieben.
Da es so unregelmäßig ist, kann ich das nicht druch 
"Debugger-Einzelschritte" finden.
(Gibts eine möglichkeit beim MPLAB bei einer Änderung in einer 
bestimmten Speicherzelle das Programm zu stoppen?)


Als ich PIC´s noch mit Assambler beschieben habe, mußte man vor den 
ISR´s die Arbeitsvariablen Pushen und am ende wieder "poppen".

Beim C18 scheint dies ja automatisch zu gehen, ist darauf wirklich 
verlass?

Gruß Stefan

von Karl H. (kbuchegg)


Lesenswert?

Stefan schrieb:

> Als ich PIC´s noch mit Assambler beschieben habe, mußte man vor den
> ISR´s die Arbeitsvariablen Pushen und am ende wieder "poppen".
>
> Beim C18 scheint dies ja automatisch zu gehen, ist darauf wirklich
> verlass?

Darauf kannst du dich im Allgemeinen verlassen. Wenn dem nicht so wäre, 
hätte das schon jemand anderer bemerkt.

Du wirst halt noch einen Bug im Programm haben.

von H.J.Seifert (Gast)


Lesenswert?

Klingt nach einem Stack-Überlauf.

von Stefan (Gast)


Lesenswert?

Ein Stack Überlauf kann duchr verschachtelte Interrupts kommen oder?

von anonymous (Gast)


Lesenswert?

ja, durch "nesting"

von Stefan (Gast)


Lesenswert?

Hi, danke schonmal.

nochmal zwei fragen dazu:

Müßte die Option: "Stack Overflow Reset" nicht einen Reset auslösen?
Die habe ich nämlich an, daher denke ich ich habe einen anderen 
Programmierfehler.

Kann ich irgendwie mit dem ICD2 sehen, wann ich eine Variable ändert?
(Ohne Einzelschritt-Debuging)

Gruß stefan

von Hermann U. (Firma: www.pcb-devboards.de) (gera82)


Lesenswert?

Du kannst, so weit ich es weiß
"Stack Overflow Reset" und "Stack Underflow Reset" abfragen.
Frage einfach alle Reset-Flags nach dem Absturz ab, und werte Sie aus.

von Stefan (Gast)


Lesenswert?

HI,

der PIC macht aber beim Absturz selbst kein Reset - er kommt wiegesagt 
nur in einen Bereich in den er nicht soll.
Da er keinen Reset macht, nehme ich an, dass er keinen "Stack Overflow" 
oder Undeflow hat.

Gruß

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.