Hi, ich benutze einen Freescale MC5600E µC. Wenn ich den Wathcdog aktiviere wird's auch ein Hardware-Reset durchgeführt. Wird den nach einem Watchdog-Reset alles zurückgesetzt oder habe ich eine Möglichkeit einige Variablen so zu lassen, wie sie sind? Wenn ich eine Variable in der Watchdog-ISR inkrementiere, wird es nach dem Reset auch zurückgetzt oder bleit es erhalten? Wie kann ich einige Register so lassen wie sie sind oder habe ich durch einen Watchdog-Reset keine chance? Vielen Dank
@ Hako (Gast) >Wird den nach einem Watchdog-Reset alles zurückgesetzt oder habe ich >eine Möglichkeit einige Variablen so zu lassen, wie sie sind? Der Inhalt vom SRAM, wo deine Variablen drin stehen, bleibt unverändert. >Wenn ich eine Variable in der Watchdog-ISR inkrementiere, wird es nach >dem Reset auch zurückgetzt oder bleit es erhalten? >Wie kann ich einige Register so lassen wie sie sind oder habe ich durch >einen Watchdog-Reset keine chance? Die CPU-Register bleiben auch unverändert. MFG Falk
>Die CPU-Register bleiben auch unverändert. ja aber durch den Reset fängt mein Programm von ganz Anfang an, dh. wo die Initialisierung stattfindet. Wird es dadurch nicht alles zurückgesetz? wenn ich eine static/globale Variable habe und ich am Programmstart die Varibalen initialisiere, werden sie nicht immer wieder neu initialisiert? >Der Inhalt vom SRAM, wo deine Variablen drin stehen, bleibt unverändert. Heißt es dass der Programmierer dafür verantwortlich ist, nach einem Reset, alles zurückzusetzen, was zurückgesetzt werden müsste?
Es könnte hilfreich sein, wenn du die Programmiersprache nennst in der du programmierst. Was die CPU macht, wenn ein Watchdog-Reset ausgelöst wird ist eine Sache. Welche Vorgaben aber eine Programmiersprache hat, wenn das Runtime System das Programm hochfährt ist eine andere Sache. In C ist es so, dass der Compiler dafür sorgen muss, dass alle globalen/static Variablen definiert auf 0 gesetzt werden.
@ Hako (Gast) >ja aber durch den Reset fängt mein Programm von ganz Anfang an, dh. wo Ja logisch, ist ja schliesslich ein RESET. >die Initialisierung stattfindet. Wird es dadurch nicht alles >zurückgesetz? Klar. Aber du kannst ja GANZ am Anfang das MCUSR (oder so ähnlich ) auslesen und prüfen, obe es ei Watchdog-Reset war. Dan kannst du entsprechend normal starten oder ohne initialisierung. In Assembler einfach, in C muss man eine Funktion in die init Sektionen bringen. Siehe Doku der libc. >wenn ich eine static/globale Variable habe und ich am Programmstart die >Varibalen initialisiere, werden sie nicht immer wieder neu >initialisiert? Ja, siehe oben. >>Der Inhalt vom SRAM, wo deine Variablen drin stehen, bleibt unverändert. >Heißt es dass der Programmierer dafür verantwortlich ist, nach einem >Reset, alles zurückzusetzen, was zurückgesetzt werden müsste? Logisch, war aber schon immer so. In C macht das der Compiler. MFG Falk
>Es könnte hilfreich sein, wenn du die Programmiersprache >nennst in der du programmierst. ich programmiere in C >Siehe Doku der libc was ist ein libc? (peinlich aber ich weiß es nicht :-$) >Dan kannst du entsprechend normal starten oder ohne initialisierung so werde ich auch vorgehen ;-) DANKE
@ Hako (Gast) >was ist ein libc? (peinlich aber ich weiß es nicht :-$) Das ist die Bibliohek für den AVR, wenn du mit WINAVR programmierst. MFG Falk
@Falk Brunner: Falk Brunner wrote: > Das ist die Bibliohek für den AVR, wenn du mit WINAVR programmierst. Hako (Gast) wrote: > ich benutze einen Freescale MC5600E µC. MC5600E != AVR ?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.