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
@ 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
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.
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.
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".
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.