Das Open-Control-Projekt - Die Alternative zur C-Control-I


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)