Forum: Mikrocontroller und Digitale Elektronik Watchdog reset OHNE wdt.h


von Robert P (Gast)


Lesenswert?

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

von Vlad T. (vlad_tepesch)


Lesenswert?

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?

von Cyblord -. (cyblord)


Lesenswert?

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

von Erich (Gast)


Lesenswert?

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

von Robert P (Gast)


Lesenswert?

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.

von Lukas K. (carrotindustries)


Lesenswert?

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?

von Stone (Gast)


Lesenswert?

>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

von Robert P (Gast)


Lesenswert?

> 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
Noch kein Account? Hier anmelden.