Hallo Ich habe schon im Tutorial uä Seiten durchsucht und komme nicht klar. Ich benutze Codevision ein Mega163 und möchte doch nur mein Watchdog Timer aktivieren.Hab auch schon einige Beispiele ausprobiert aber komme nicht zum Zuge. Hat noch jemand ein guten Tip auf Lager? mfg Mario
Hat denn keiner ne Idee? Bin immer noch nicht hinter das Geheimnis des Watchdogs gekommen. Hab mein mega163 schon fast tot-geflasht -:( Gruß Mario
Was hast du denn schon ausprobiert? WDE und WDP2-WDP0 (nach bedarf) im WDTCR-Register setzen. Müsste eigentlich gehn! Gruß, Florian
Hallo Bin leider erst jetzt dazu gekommen eure Tips zu lesen. Ich habe das WDTCR Register mit WDTCR=0x08 initialisiert.Soll OSC/16 sein. Ich weiß meine ganzen Versuche schon alle nicht mehr. Hab´s auch mit einer asm-einbindung versucht. Ich habe eine ganz einfache while Schleife wo portb (LED) blinkt. Sollte das Programm nicht neu starten wenn der Watchdog nicht resettet wird? Gruß Mario
Du musst natürlich auch das MCUCSR auswerten um die Quelle des Reset (Power On Reset, Watch Dog, Brown Out, Reset) bestimmen zu können.
Hallo Mario Hast du vielleicht einen Denkfehler in deinen Überlegungen. So wie du schreibst, hast du nur eine Schleife, wo eine LED blinkt. Wenn der WDT nicht zurück gesetzt wird, startet das Porgramm neu und ist doch wieder in der Schleife. Das geht so schnell, das merkst du gar nicht, wenn er neu startet. Bau vor der Schleife doch mal eine Tastenabfrage ein, damit deine LED nur blinken kann, wenn die Taste einmal gedrückt wurde. Oder eine andere LED, die vor deiner Schleife an geht und nach 2 Sekunden wieder ausgeht, damit du sehen kannst ob er neu startet oder nicht. Nur so als Anregung. MFG Dieter
Hallo miki Mit dem MCUSR Register hab ich auch schon rum probiert.Wenn ich meine Pausen zwischen den led1 und led0 raus nehme startet das Ding seltsamerweise nach ca 2sec neu.Hab WDTCR auch mit F geladen.Sind ca.2sec. Sobald ne Pause mit bei ist gehts nicht mehr.Pause ist auch nur 100ms
Hi Dieter Dank dir für den Hinweis.Ich habe beim Programmstart ne 2sec Pause wo 1LED leuchtet. Wenn ich per Hand resette haut das auch hin.Bin echt platt Gruß Mario
Hallo Klappt das denn jetzt mit dem WDT oder nicht ? Kommt nicht so klar rüber, glaube aber eher nicht. Häng deinen Code doch mal mit rein, falls es noch nicht klappt. MFG Dieter
Hallo Dieter Es klappt leider immer noch nicht.Den Code benutze ich jetzt nur zum probieren des WDT. (nicht lachen :-)) WDTCR=0x0F; a=MCUSR; PORTB=255; PORTB.0=0; delay_ms(3000); while (1) { if(a>=8)#asm ("rjmp 0") PORTB=0; delay_ms(50); PORTB=255; delay_ms(50); }; Die Sache mit dem MCUSR war noch ein Versuch ---> der sicherlich voll daneben war
es ist seltsam.... nehme ich die delay_ms(50) raus funktioniert es. Den Test mit den LED´s hab ich mal abgebrochen.Das eigentliche Prog sieht so aus (ausschnitt): i=0;j=0; while(j!=2) { if(rx_buffer[i]==13)j++; i++; } Ich möchte damit in der Zeichenkette "rx_buffer" das zweite Enter-zeichen suchen. Haut auch alles hin. Aber wenn keins da ist, wollte ich den watchdog benutzen.Der möchte aber nicht. gruß Mario
Hallo Mario Schaltest du in der delay Routine vielleicht die Interrupts aus. Weiß zwar imMoment nicht genau, ob die braucht für den WDT. Aber von der Logik her, dürfe dein Programm gar nicht bis zu der Schleife laufen. Bei WDTCR=0x0F; kommt ja bei 5 Volt ca. alle 1,9 s ein Neustart. Bei deinem Delay am Anfang von 3000 ms würde ja schon ein Neustart kommen, d.h. die Schleife würde er nie erreichen. Oder sehe ich das so falsch ?? MFG Dieter
Hallo Dieter Das mit der Pause dachte ich mir ja auch.Hab sie ja dann auch nur auf 50ms gesetzt.Aber ich probiere jetzt mit der UART und den RX-IRQ rum. Selbst da möchte mein watchdog nicht (wenn kein Enter empfangen wird).
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.