Forum: Mikrocontroller und Digitale Elektronik Watchdog auf xMega deaktivieren


von Luca B. (lucabert)


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

von To M. (klausi06)


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

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.