Watchdog nach reset aktiv?

OP #703333
Lesenswert?

Hallo, ich möchte meinen nC über UART vom PC aus resetten können.
Dazu frage ich jeweils das erste Byte der Übertragung ab, wo ich den 
jeweiligen "Typ" der folgenden Daten festlege.
Hat dieses Byte jetzt einen bestimmten Wert, dann müßte ich ja 
eigentlich nur mit:

Switch(data_received[1])
   case 0xff : reset()

int reset(void)
   watchdog_enable() //Nur als Beispiel

den Selbigen initialisieren und ihn einfach rennen lassen bis er mir den 
nC resettet.
Ist er nach dem reset dann wieder disabled? Oder muß ich ihn beim 
initialisieren meiner Firmware explizit killen?
grüße
Phil
Gast #704421
Lesenswert?

Ist ja auch durchaus sinnvoll,wenn der Watchdog an ist soll im 
allgemeinen ein 'Hängenbleiben' der Software abgefangen werden.Und in 
99.999999% der Fälle wird die Ursache des Hängenbleibens ja durch einen 
Reset nicht beseitigt.
#704425
Lesenswert?

naja, 0xff als reset-Befehl ist  nicht besonders clever. Ein Störimpuls, 
der als Startbit erkannt wird, löst dann einen reset aus...
noch gar nicht lange her, da hatte ich ein kniffliges Projekt, wo es 
erstmal hauptsächlich um den eigentlichen Algorithmus ging. Die ganze 
Kommunikation war (noch) auf ein Minimum beschränkt (u.a. Verlassen des 
eigentlichen Programms per ASCII "Q".). Das kam über die (offene) 
Schnittstelle so alle 2 Tage vor...
Ich wusste das zwar und habe es auch den Leuten mitgeteilt, die waren 
trotzdem recht beunruhigt, dass die Kiste immer "abstürzte".
OP #704542
Lesenswert?

Also ich hab das jetzt mal so 3 Stunden am HTerm hängen gehabt und es 
kam kein unerwünscher Reset vor.
Werde mal noch ein bisschen am Code rumoptimieren...

Mal noch was anderes:
Wie kann ich die größe eines Array zur Laufzeit ändern?
Je nachdem, wieviele Extension-Boards a 128Bit Schieberegister 
hintereinanderhängen, soll natürlich das Char-Array (char damit ich 
schön einfach 8-Bit weise über RS232 verschicken kann) die entsprechende 
Größe haben.
Ich dachte da an sowas wie eine INIT-routine, daß der nC beim Start 
erstmal ein "fordere initial-werte an" an den PC schickt und wartet bis 
er zwei Byte empfangen hat welche dann die Größe der Eingangs-, sowie 
Ausgangsextensions darstellen.
Entsprechend dieser Werte sollen dann die beiden Arrays (Ausgangs-, 
Eingangsdaten) in ihrer Größe initialisiert werden...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren