
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hallo Dietmar, dass die OM bei Fehler nicht einfach stehen bleibt ist eine tolle Sache! Die OM scheint sehr durchdacht zu sein! Übrigens läuft der Source Code auch auf Open-Macro. Man muss nur INCLUDE "omax.def" durch INCLUDE "omac.def" ersetzen. Was mir aber noch nicht ganz einleuchtet ist die Adresse. Bei mir wird Adresse: $e989 ausgegeben. Was hat es damit auf sich? LG Joachim > \' ---------------------------------------------------------------------------- > \' 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 > > \' --------------------------------------------------------------------------- |
| Antwort schreiben |