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 

 Re: Software Reset ? Kategorie: Programmierung Basic (von Dietmar, Homepage - 21.02.2006 13:24)
 Als Antwort auf Re: Software Reset ? von Thomas Wulf - 21.02.2006 9:19
Dietmar nutzt:  CC1-M-Unit V1.1, Advanced CC1-Unit, Open-Micro, Open-Mini, Open-Mini M-Unit, Open-Mini Station
Hallo Thomas

> Was bedeutet ein illegaler Tokenbefehl ? Kannst Du mir bitte ein kleines Beispiel nennen ?

Ein Beispiel zur M-Unit 2.0 habe ich nicht, aber zur Conrad-Micro.

Die Conrad-Micro verarbeitet nur Tokenbefehle von 0 bis 82. Werden Tokenbefehle über 82 ausgeführt, sollte der Kontroller eigentlich die Programmausführung abbrechen. Das passiert aber nicht in jedem Fall und es läßt sich damit unter anderem, wie im folgenden Sourcecode gezeigt, trickreich ein Reset ausführen. In diesem Sourcecode wird der Tokenbefehl 95 ausgeführt, der zu einer Adresse verzweigt, auf der ein illegaler Opcode steht. Das SIM-Modul im Mikrokontroller 68HC908QT4 detektiert das und resettet daraufhin den Kontroller. Das Programm dürfte nur auf der Conrad-Micro 2.01 lauffähig sein.

' Per Software ausgeloester Reset bei der Conrad-Micro 2.01 ("520")
' geschrieben in OCBASIC 0.8

option ccbas

dim beeper port[6]


beep 100,10,beeper

baud 9600

print
print "Programmstart"
print

while true
  print "Uhrzeit: ";hour;" ";minute;" ";second
  pause 50

  if second=13 then   'in der 13. Sekunde einen
    illopcode         'Reset per SIM ausloesen
  end if
wend


table illopcode byte  'Verzweigt zu einer Adresse,
  95                  'auf der ein illegaler Opcode
end table             'steht

Daß es sich um einen echten Reset handelt, sieht man daran, daß je nachdem, ob an PORT[3] High- oder Low-Potential liegt, das Programm neu gestartet oder in den Programmiermodus gegangen wird. Der Tokenbefehl 95 dürfte sich in Basic++ übrigens mittels ADDTOKEN-Befehl implementieren lassen.

Viele Grüße
Dietmar

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

 Antwort schreiben

Bisherige Antworten: