Watchdog auf xMega deaktivieren

OP #2316432
Lesenswert?

Hallo, Leute!

Ich habe hier 'ne Platine mit einem ATxMega128A1.
Nachdem ich geschafft habe, den Clock zu setzen kämpfe ich gegen den 
Watchdog...

Die Leute, die die Platine erstellt haben, haben ein Jumper vorgesehen, 
mit der ich den PIN WDI_DIS mit GND verbinden kann.
Ist dieses PIN mit GND verbunden, funktioniert alles, ansonsten wird der 
xMega ständig ein Reset machen.

Mir ist gesagt worden, daß dieses PIN den internen Watchdog deaktiviert.
Ich möchte es aber per Programm es machen, deswegen habe ich folgendes 
Code geschrieben:
1
CCP = CCP_IOREG_gc;
2
WDT.CTRL = 0b00000001;
3
while((WDT.STATUS & WDT_SYNCBUSY_bm));

Leider funktioniert es nicht...
Was mache ich denn jetzt falsch?

Danke
Luca Bertoncello
#2316951
Lesenswert?

Hi Luca,

das Problem wird sicher in Verbindung mit dem CCP "Schreibschutz" 
stehen. Nach dem setzen vom CCP-Register, hast du 4 Clocks Zeit um den 
Wert im WDT.CTRL-Register zú ändern. Nun kannst du zwei verschiedene 
Wege gehen.

1. die Optimierung vom GCC erhöhen -> lässt keine direkte Aussage zu in 
welcher Zeit die Zeilen abgearbeitet werden !

2. Inline ASM -> den Assemblercode solltest du so proggen, das du die 4 
CPU-CLK hast um das CTRL-Register zu schreiben


MFG

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren