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 

 Fehler-Behandlung auf den OM-Mikrocontrollern Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Dietmar, Homepage - 10.05.2018 21:04)
Dietmar nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Maxi, Open-Mini M-Unit, Open-Mini Station
' ----------------------------------------------------------------------------
' Demonstration von "Run On Error" auf den Open-Control-Mikrocontrollern
' In OCBASIC 1.11a für Open-Maxi von Dietmar Harlos am 10. Mai 2018
' ----------------------------------------------------------------------------

' Normalerweise unterbricht die OM die Programmausführung, sobald ein Fehler
' auftritt. Durch Setzen des Bits RunOnErr kann man die OM jedoch anweisen,
' das BASIC-Programm bei einem Fehler neu zu starten. Die Daten der
' verwendeten Variablen bleiben dabei erhalten. Das Betriebssystem wird
' reinitalisiert. Der Fehlergrund steht in der internen Variable ERR und die
' Adresse des Bytes hinter dem fehlerhaften Tokenbefehl steht in ERRADR.

' Diese Funktion ist dazu vorgesehen, um an den Beginn des Programms eine
' Fehlerbehandlungsroutine zu stellen und die Programmausführung bei Eintritt
' eines Fehlers zu beenden. Das Auftreten eines Fehlers ist ein Hinweis, daß
' irgendetwas im Programm nicht korrekt abläuft. Das Programm sollte deshalb
' nicht einfach nochmals durchlaufen werden. Zumal der RAM-Speicher und somit
' auch das User-RAM mit den Variablen nicht reinitalisiert wurden.

' Sobald ein Fehler auftritt, wird in der internen Variable ERR der
' Fehlergrund als Fehlernummer kodiert abgelegt. Nach Programmstart ohne
' Fehler enthält ERR den Wert 0. ERR belegt auf der OM den gleichen
' RAM-Speicher wie DBNZCTR und RAND.

' Bei Fehlern in der Datendatei (d.h. wenn das I²C-EEPROM nicht ansprechbar
' ist - kein ACK sendet) wird die Programmausführung auf der Open-Maxi nicht
' mehr wie auf den bisherigen OM-Controllern mit Fehler abgebrochen, sondern
' nur das Fehlerbit FileErr gesetzt, das der Anwender abfragen kann. Wenn
' das Fehlerbit gesetzt ist, werden vom Betriebssystem alle nachfolgenden
' Dateibefehle (z.B. PRINT#) ignoriert. Das Fehlerbit wird vom Betriebssystem
' bei OPEN# automatisch resettet.

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

INCLUDE "omax.def"         'Definitionen für die Open-Maxi

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

' Nach einem Fehler Programm neu starten, Fehlergrund in ERR und Adresse
' hinter dem fehlerhaften Tokenbefehl in ERRADR

RunOnErr=ON

IF ERR THEN
  WHILE TRUE
    PRINT "RUN ON ERR: ";
    IF ERR=0 THEN                   'nur zur Verdeutlichung
      PRINT "kein Fehler";
    ELSE IF ERR=1 THEN
      PRINT "Zuviele GOSUB-Verschachtelungen";
    ELSE IF ERR=2 THEN
      PRINT "RETURN ohne GOSUB";
    ELSE IF ERR=3 THEN              'nicht auf Open-Maxi
      PRINT "File-I/O-Error";
    ELSE IF ERR=128 THEN
      PRINT "Illegales Token";
    END IF
    PRINT "! Adresse: $";
    PrintHex=ON
    PRINT ERRADR
    PAUSE 25
  WEND
  END
END IF

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

' Fehler provozieren

#endlos
'GOSUB endlos               '"Zuviele GOSUB-Verschachtelungen"

RETURN                     '"RETURN ohne GOSUB"

'INLINE 100                 '"Illegales Token"

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

End2Host=ON                'Nach Programmende in den Host-Modus
END                        'Programmende, Neustart mit der Enter-Taste

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


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

 Antwort schreiben

Bisherige Antworten:

Re: Fehler-Behandlung auf den OM-Mikrocontrollern (von Joachim - 10.05.2018 21:32)
    Re: Fehler-Behandlung auf den OM-Mikrocontrollern (von Dietmar - 10.05.2018 21:51)
        Re: Fehler-Behandlung auf den OM-Mikrocontrollern (von Joachim - 10.05.2018 22:37)