Forum: Mikrocontroller und Digitale Elektronik Watchdog nach reset aktiv?


von Phillip H. (philharmony)


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

von Falk B. (falk)


Lesenswert?

@ Phillip Hommel (Firma hs-bremen) (philharmony)

>Ist er nach dem reset dann wieder disabled? Oder muß ich ihn beim
>initialisieren meiner Firmware explizit killen?

Wenn du einen MSP430 hast, ist der Watchdog nach dem Reset AKTIV!

MFG
Falk

von Phillip H. (philharmony)


Lesenswert?

Ach ja, hätt ich vielleciht dazu sagen sollen:
Atmega 8535

von Benedikt K. (benedikt)


Lesenswert?

Bei dem müsste der Watchdog aus sein. Bei neueren AVRs (z.B. mega48 und 
Co) bleibt er dagegen an, und (ganz gemein) zuätzlich wird auch noch die 
Timeoutzeit auf den kleinsten Wert gesetzt.

von Phillip H. (philharmony)


Lesenswert?

Hm, ok dann deaktiviere ich den mal besser im init...
Danke

von Ronny (Gast)


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.

von H.joachim S. (crazy_horse)


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".

von Phillip H. (philharmony)


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...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.