![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
' ============================================================================ ' Reset-Historie per "System Reset Status Register" (SRS) auf der Open-Maxi ' In OCBASIC 1.12a_e1 von Dietmar Harlos am 01. September 2018 ' ============================================================================ ' Auf FREERAM1 wird vom Open-Maxi-Betriebssystem beim Programmstart der Wert ' aus dem "System Reset Status Register" (SRS) hinterlegt. Dieses Register ' enthält sechs Statusflags, um die Quelle des letzten Resets anzuzeigen. ' Dieses Programm muß mit gesetztem Autostart-Jumper ausgeführt werden. ' Für die Werte von SRS siehe folgende Tabelle: ' SRS: ... Ursache des Resets: ' $82 .... Power-On Reset - Reset was caused by the power-on detection logic. ' And Low Voltage Detect - If the supply drops below the LVD trip ' voltage, an LVD reset will occur. This bit is also set by POR. ' $40 .... External Reset Pin - Reset was caused by an active-low level on ' the external reset pin. ' $10 .... Illegal Opcode - Reset was caused by an attempt to execute an ' unimplemented or illegal opcode. ' $02 .... Low Voltage Detect - If the supply drops below the LVD trip ' voltage, an LVD reset will occur. This bit is also set by POR. ' Wenn FREERAM1 gleich 13 ($0d) ist, wurde der Open-Maxi-Interpreter durch ' den Hostmode gestartet. Und bei 255 ($ff) wurde das Programm nach einem ' END neu gestartet, weil der Autostart-Jumper gesetzt ist. ' Die Ausführung dieses Programms kann vom Anwender im Terminalprogramm ' mittels der Befehle l, o, e oder h unterbrochen werden. Siehe unten. ' --- Definitionen für das System -------------------------------------------- INCLUDE "omax.def" 'Definitionen für die Open-Maxi ' --- Definitionen des Anwenders --------------------------------------------- DIM a,b,c BYTE ' --- Hauptprogramm ---------------------------------------------------------- OPEN# FOR APPEND 'Reset-Quelle mitloggen PRINT# FREERAM1 CLOSE# WHILE TRUE ?"---" ?"Bisherige Reset-Historie:" a=1 OPEN# FOR READ WHILE NOT EOF ?a;":"; PrintHex=ON ?" $"INPUT# PrintHex=OFF ADD a,1 WEND ' CLOSE# 'Kann entfallen beim Lesen IF RXD THEN b=GET IF b=ASC("l") THEN 'l: Historie löschen OPEN# FOR WRITE : CLOSE# ELSE IF b=ASC("o") THEN 'o: Illegalen Opcode ausführen illopcode ELSE IF b=ASC("e") THEN 'e: END ausführen END ELSE IF b=ASC("h") THEN 'h: Hostmode starten End2Host=ON END END IF END IF PAUSE 25 WEND END ' --- Subroutinen ------------------------------------------------------------ PROCEDURE illopcode INLASM ! db $8d 'Illegaler Opcode ! rts END PROCEDURE ' --- Ende des Programms ---------------------------------------------------- Meine Homepage: http://ccintern.dharlos.de |
Antwort schreiben |