Watchdog - WDP wird nicht gesetzt

OP #1683895
Lesenswert?
• ▲
▼
Hallo zusammen,

habe heute probiert den Wachhund zum Laufen zu bewegen.
Folgendes habe ich bei der Initialisierung:

ldi  temp, (1<<WDCE) | (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0)
out  WDTCR, temp


Debugge ich mit dem JTAG werden die WDP Bits jedoch nicht gesetzt.
Im "echten" Programm ist es auch so dass der Watchdog scheinbar sehr 
schnell abläuft, sodass andauernd ein Reset ausgeführt wird. Zum Testen 
leuchtet beim Reset bei mir eine LED auf, die nach 600ms per Timer 
abgeschaltet wird. Das funktioniert soweit auch. Aktiviere ich den 
Watchdog leuchtet die LED aber immer, zumindest fürs Auge! Da ich den 
Watchdog auf Teiler 2058 gestellt habe müsste er aber erst nach ca. 2s 
abgelaufen sein.
Also steht der Watchdog wahrscheinlich auf Teiler16 = 15ms.
Kennt jemand dieses Problem oder hat einen Tipp wie ich an das Problem 
rangehen kann.
Hier ist der vollständige Code:
Bei Initialisierung soll LED aufleuchten und durch Ablauf des Timers 
nach 0,6s erlischen. Dann soll nach 2s der Watchdog den reset auslösen. 
Programm ist nur als Test des WDR gedacht:
1
init:  //-->STACK
2
    ldi     temp, LOW(RAMEND)
3
    out     SPL, temp
4
    ldi     temp, HIGH(RAMEND)
5
    out     SPH, temp
6
    
7
    ldi    temp, 0x00
8
    sts    TCNT1H, temp
9
    ldi    temp, 0x00
10
    sts    TCNT1L, temp
11

12
   ;Berechnung-->7,37Mhz/65536/64 = 1,757 --> ca. 0,6s
13
    ldi     temp, (0 << CS12 ) | (1 << CS11 ) | (1 << CS10 ) 
14
    sts     TCCR1B, temp
15
 
16
    ldi     temp, 1 << TOIE1
17
    sts     TIMSK, temp    
18

19
  ldi  temp, (1<<WDCE) | (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0)
20
  out    WDTCR, temp
21
                
22
  clr    temp
23
  clr    flag
24
  clr    data
25
  clr    counter
26
  clr    flag0
27
    
28
  ldi    temp, 0xFF
29
  out    PORTE, temp
30
  out    DDRE, temp
31

32
  sei  
33

34
loop:
35
    
36

37
  rjmp   loop
38

39
timer1:
40

41

42
  ldi    temp, 0x00
43
  out    PORTE, temp
44
  out    DDRE, temp
45

46
  ldi    temp, ( 0 << CS12 ) | (0 << CS10 ) | (0 << CS10 ) 
47
  out    TCCR1B, temp
48

49
  ldi    temp, 0x00
50
  out    TCNT1H, temp
51
  out    TCNT1L, temp
52
    
53
  reti

Viele Grüße,

guitero
#1683919
Lesenswert?
• ▲
▼
Da Du den AVR-Typ nicht nennst, kann man nur raten:  Üblicherweise 
kannst Du den Watchdog nicht einfach in einem Befehl verändern, sondern 
musst eine Sequenz einhalten, z.B. WDCE und WDE setzen und danach 
innerhalb von vier Zyklen den gewünschten Wert schreiben.

Näheres verrät Dir das freundliche Datenblatt.
OP #1683920
Lesenswert?
• ▲
▼
Hallo,

> Da Du den AVR-Typ nicht nennst, kann man nur raten:

Sorry, es handelt sich um einen AtMEga162.

>sts    TCNT1L, temp

Hier sollte der Befehl "out" sein, habe beim reinkopieren Mist gebaut.

>Üblicherweise
>kannst Du den Watchdog nicht einfach in einem Befehl verändern, sondern
>musst eine Sequenz einhalten, z.B. WDCE und WDE setzen und danach
>innerhalb von vier Zyklen den gewünschten Wert schreiben.

Das war der Fehler. Vielen, vielen Dank!

Gruß,

guitero

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.