Hallo Leute, kurze Frage: Schaltet man den Watchdog komplett aus und startet man ihn neu um ihn zu resetten ? Ich möchte die wdt.h nicht nutzen. Ich möchte gerne wissen was die wdt.h beim wdt_reset () genau mit den Registern macht. Alles andere kann ich im Datenblatt nachvollziehen. Nur der Reset noch nicht. Mit freundlichen Grüßen Robert P
Robert P schrieb: > Ich möchte die wdt.h nicht nutzen. wozu soll das gut sein? Robert P schrieb: > gerne wissen was die wdt.h beim wdt_reset () genau mit den Registern > macht. dann schau doch in den Header mal rein, da siehst du es. Aber wie gesagt. Warum willst du den Header nicht nehmen, sondern das ganze nachprogrammieren? Meinst du du machst weniger Fehler, wenn du da abschreibst?
Wenn du schon im Datenblatt die Stelle nicht nachvollziehen kannst, dann schau doch einfach im Code was die Funktion macht. Ist doch alles open source. Allerdings würde ich behaupten das liest sich im Datenblatt einfacher. Da gibts sogar Beispielcode dazu in C und Assembler. Ich meine, was willst du denn noch mehr? Ausserdem ist der Watchdog Reset meist eine eigene ASM Anweisung und wird nicht mittels Registern ausgelöst. Also Kopier den Header und paste ihn bei dir rein. Was das bringt? Keine Ahnung aber du hast die wdt.h nicht benutzt.... gruß cyblord
... irgendwie wäre es doch sinnvoll gewesen, im Betreff auch den uC Typ zu benennen, zu dem diese Frage gestellt wird. Es gibt dutzende Hersteller von uC, und jeder von denen hat 100 von Typen. Wahrscheinlich auch etliche, die eine Datei "wdt.h" haben oder auch nicht haben.
Vlad Tepesch schrieb: > Aber wie gesagt. Warum willst du den Header nicht nehmen, sondern das > ganze nachprogrammieren? Meinst du du machst weniger Fehler, wenn du da > abschreibst? Ich möchte gerne wissen was da passiert. Das ist der einzige Grund. > dann schau doch in den Header mal rein, da siehst du es. Hab nur welche in Assembler gefunden. Damit kann ich leider nichts anfangen. > Da gibts sogar Beispielcode dazu in C und Assembler. Nicht für ´s resetten. Das ist ja mein Problem.
Robert P schrieb: > Hab nur welche in Assembler gefunden. Damit kann ich leider nichts > anfangen. Dann sieh' nach.
1 | #define wdt_reset() __asm__ __volatile__ ("wdr")
|
Im Datenblatt steht dann
>WDR Watchdog Reset
Wo ist das Problem?
>Hab nur welche in Assembler gefunden. Damit kann ich leider nichts >anfangen. Dafür gibt es kein C Kommando, außer in der wdt.h . Darin sind die Kommandos dann Inline Assembler ausgeführ. Mache der WD Aktionen kannst du übrigens in C komplett vergessen, z.B. das deaktivieren des WD oder umstellen des Timings. Hab das mal probiert der Registerzugriff in C ist zu langsam um unter den geforderten Taktzyclen zum deaktivieren zu bleiben. Mit der wdt.h funktioniert das ganze ohne Probleme. Wenn du es verstehen willst, musst du dich wohl oder übel mit ASM auseinander setzten. Es kann nie schaden den ASM-Code zu verstehen. Zu mindestens bei Debuggen muss man manchmal schauen was der Compiler gemacht hat da kommste um ASM nicht rum. Gruß Matthias
> Dafür gibt es kein C Kommando, außer in der wdt.h . Darin sind die > Kommandos dann Inline Assembler ausgeführ. > Mache der WD Aktionen kannst du übrigens in C komplett vergessen, z.B. > das deaktivieren des WD oder umstellen des Timings. Hab das mal probiert > der Registerzugriff in C ist zu langsam um unter den geforderten > Taktzyclen zum deaktivieren zu bleiben. Mit der wdt.h funktioniert das > ganze ohne Probleme. Ah endlich mal eine Antwort.. Ich hatte gehofft das ich etwas herausbekomme wie bei den Befehlen SEI und CLI. Also einfach SREG
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.