Der Nachfolger des WDR-Computerclub mit Wolfgang Back und Wolfgang Rudolph - ...und immer ein Bit übrigbehalten!


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Software-Watchdog für die Open-Maxi Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Dietmar, Homepage - 2.12.2013 17:32)
Dietmar nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Mini M-Unit, Open-Mini Station, sonstige
Hallo zusammen!

Ich habe wieder ein wenig getüftelt und einen Software-Watchdog für die Open-Maxi entworfen.

Laut Wikipedia:

Watchdogs werden in Mikrocontroller-gesteuerten elektrischen Geräten eingesetzt, um einem Komplettausfall des Gerätes durch Softwareversagen zuvorzukommen. Verhindert wird der Ausfall eines automatischen Mikrocomputersystems, indem die Software in regelmäßigen Abständen dem Watchdog mitteilt, daß sie noch ordnungsgemäß arbeitet.

Alternativ kann das gleiche auch durch einen Zähler realisiert werden, der in regelmäßigen Abständen von der Software auf einen bestimmten Wert gesetzt wird. Dieser Zähler wird hardwareseitig ständig dekrementiert; erreicht er 0, so hat es die Software nicht geschafft, ihn rechtzeitig zu erhöhen und ist wahrscheinlich "hängengeblieben" oder ausgefallen. Der Watchdog setzt daraufhin das Gerät durch Rücksetzen (Reset) in den definierten Ausgangszustand zurück, damit das von der Software gesteuerte System wieder überwacht ordnungsgemäß arbeiten kann.


Der Code besteht aus zwei Dateien.

' --------------------------------------------------------------------------
' Software-Watchdog für die Open-Maxi von Dietmar Harlos
' entwickelt mit OCBASIC 1.09a auf der Open-Maxi am 02. Dezember 2013
' --------------------------------------------------------------------------

' ---------------------------------------------------------------------------

INCLUDE "omax.def"            'Definitionen fuer Open-Maxi

DIM watchdogctr BYTE          'Zähler für Watchdog in 20-ms-Zeiteinheiten

' ---------------------------------------------------------------------------
' Die Routine fuer den Software-Watchdog einbinden
' ---------------------------------------------------------------------------

INCLUDE "WD_OMAX.IIA"

' ---------------------------------------------------------------------------
' Das Hauptprogramm
' ---------------------------------------------------------------------------

#main

watchdogctr=100               'Zähler für Software-Watchdog initialisieren
UIRTim3=ON                    ' und Routine aktivieren.

PRINT "Programmstart"

DIM a BYTE                    'Zählvariable für das Hauptprogramm

FOR a=1 TO 10
  PRINT "Programm arbeitet. Zaehler: ";watchdogctr
  watchdogctr=100             'Zähler für Software-Watchdog resetten
  PAUSE 10
NEXT a

WHILE TRUE
  PRINT "Programm haengt fest. Zaehler: ";watchdogctr
  PAUSE 10
WEND

END

Hier der Inhalt von "WD_OMAX.IIA":

' --------------------------------------------------------------------------
' Software-Watchdog für die Open-Maxi von Dietmar Harlos
' entwickelt mit OCBASIC 1.09a auf der Open-Maxi am 02. Dezember 2013
' --------------------------------------------------------------------------

' --------------------------------------------------------------------------

' User-Assemblerroutine im TIM1 Channel 3 Interrupt der Open-Maxi.

' Sie wird in den 20-ms-TIMER-Interrupt der OM eingebunden und deshalb
' 50 mal in der Sekunde aufgerufen.

' Das Schluesselwort INLASM kennzeichnet die folgende PROCEDURE als
' Assemblerroutine ("IAR"). Dadurch, und dass sie unmittelbar am Anfang
' des Programms steht, wird sie zu einer IIAR, also zu einer Assembler-
' Interruptroutine, die bei einem aktivierten User-Interrupt gestartet wird.

PROCEDURE iiar_tim3 INLASM

! cbeqa #iTIM3,iiar_tim3_istim3 'falls kein TIM1 Channel 3 Interrupt,
! jmp iiar_tim3_ende+2        ' dann zur naechsten IIAR in der Kette

#iiar_tim3_istim3
! dbnz watchdogctr,iiar_tim3_return
! lda $fffe
! pusha
! poph
! ldx $ffff
! jmp ,x                      'Sprung zum Resetpoint

#iiar_tim3_return
! clc
! rts

END PROCEDURE

#iiar_tim3_ende              'hier hinter beginnt die naechste IIAR
                              '(sofern vorhanden)

' ---------------------------------------------------------------------------

Viel Spaß mit den OM-Controllern

Dietmar

Meine Homepage: http://ccintern.dharlos.de

 Antwort schreiben

Bisherige Antworten:

Re: Software-Watchdog für die Open-Maxi (von laika63 - 3.12.2013 15:12)
    Re: Software-Watchdog für die Open-Maxi (von GeKue - 31.12.2013 12:41)