Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: automatischer Reset Kategorie: Programmierung C (von PeterS - 31.12.2012 12:57)
Als Antwort auf Re: automatischer Reset von Jo - 29.12.2012 22:14

> > > > > > > Hallo allerseits
> > > > > > >
> > > > > > > Ich benutze den Mega128 schon seit Jahren zur Ã?berwachung des ganzen HAuses.
> > > > > > > Nun habe ich das Phänomen das der Microcontroller sich immer nach ca 3 Tagen aufhängt.
> > > > > > >
> > > > > > > Keine Ahnung warum...
> > > > > > > Fällt euch eine Möglichkeit ein wie ihch laufend überprüfe ob der Microcontroller noch läuft und
> > > > > > > sofern er sich aufgehängt dieser resetiert wird?
> > > > > > > Wäre für jede Idee sehr dankbar
> > > > > > > lg
> > > > > > > mave
> > > > > >
> > > > > > Hallo mave,
> > > > > >
> > > > > > arbeitet Dein Programm mit konstanter Zykluszeit?
> > > > > >
> > > > > > Guten Rutsch
> > > > > > Torsten
> > > > >
> > > > > Hallo mave,
> > > > > Ich verwende dazu den Watch-Dog-Timer,
> > > > > die SW muss diesen zyklisch triggern, bleibt der Aufruf aus, gibt es einen Reset.
> > > > > Wenn du Bedarf hast, kann ich dir die Routine (assembler und C-Funktion) einstellen.
> > > > > Oder suche im Forum nach WatchDog. Daraus habe ich auch die Funktionen geladen.
> > > > > Viele Grü�e
> > > > > Jo
> > > >
> > > > Hallo Jo
> > > > Mit dem habe ich mich noch nicht beschäftigt ... und der funktioniert auch wenn der microcontroller
> > > > sich aufgehängt hat?
> > > > Das wäre echt super wenn du mir die c-programmierung zur verfügung stellen könntest.
> > > >
> > > > ad Torsten programm arbeitet nicht mit konstanter zykluszeit
> > > > lg
> > >
> > > Ja, das ist der Sinn des WatchDog, reset wenn sich der Controller / SW aufgehängt hat.
> > > Lösung siehe thread
> > > WatchDog-Link im
> > > Forum"

> >
> >
> >  Hallo Jo,
> >
> > hab mir gerade mal Dein WatchDog angeschaut.
> > Folgendes ist mir aufgefallen:
> >
> > >WatchDog_On:                        ; Enable Watchdog Timer
> > >    movw    r26, r6                 ; r7:r6 points to ret_addr
> > Sollte die Parameterübergabe nicht über R10:R11 laufen?
> >
> >
> > >    adiw    r26, 4                  ; X now points to prescalar
> > >    ld      r16, x                  ; get prescalar parameter
> > >    andi    r16, WDPM               ; and mask lower 3 bits
> > >    ori     r16, (1<     ldi     r17, (1<     out     WDTCR, r17      
> > >    out     WDTCR, r16              ; write WDT control register
> > >    ret
> >
> > R16 ist kein Register welches ohne Sicherung verwendet werden darf!
> > Laut Doku. von Peter. Da die Zykluszeitüberwachung eine durchaus
> > wichtige Sache ist sollten wir vieleicht eine C-Controlische
> > Variate entwickeln. Was meinst Du dazu?
> >
> > Gesundes Neues
> > Torsten
>
> Hallo Torsten,
> ich habe das Beispiel aus den Forum und damals nur etwas "formatiert" und dem Forum wieder zur
> Verfügung gestellt. Ich selber habe mich bisher noch überhaupt nicht mit dem ATMEL Asselmler
> beschäftigt.
>  Diese Routine läuft seit einigen Jahren in drei C-Controls Pro für eine Rolladen-
> steuerung und ist stabil im 24/7 Einsatz. Die SW ist aufgrund der Steuerbarkeit und Konfigurierbarkeit
> über RS232, Tastatur, IO relativ komplex und hat bei den Segmentgrenzen auch schon den einen
> oder anderen Bug im Intereter offen gelegt.
> Wenn es aber so ist wie du sagst, sollte natürlich R16 ge-
> rettet und zurückgeschrieben werden.
>
> @Peter, wie siehst du das?

Hallo Jo,

nur die Register R0, R1, R22, R23, R24, R25, R26, R27, R30 und R31 müssen
nicht gesichert werden. Alle anderen bitte per push/pop sichern. Es kann
sein, das es momentan unkritisch ist R16 nicht vorher zu speichern, aber
beim nächsten Update des Interpreters kann sich das unbemerkt verändern.
Dann wären die Assemblerroutinen nicht mehr kompatibel.

Auch einen guten Rutsch an alle im Forum.

Gruss Peter

>
> Guten Ruscht und viele Grü�e
>
> Jo


    Antwort schreiben


Antworten: