Delay mit Watchdog Interrupt.

Gast #2782120
Hallo alle,
ich habe in meinem Programm eine leider unvermeidliche Delay Routine, in 
der Zeit in der die ausgeführt wird gibt es für den Controller wirklich 
nichts zu tun außer warten. Da hab ich mir gedacht, dass ich ihn ja auch 
schlafen legen kann um ihn nach einer Sekunde (solang soll die Dleay 
Routine auch sein, Genauigkeit ist unkritsch) mit dem Watchdog Interrupt 
wieder zu wecken. Der Controller ist ein Attiny13
1
DELAY:
2
  sei
3
  push r16
4
  ldi r16, (1<<WDCE)
5
  out WDTCR, r16
6
  ldi r16, 0b01010110
7
  out WDTCR, r16
8
  ldi r16, 0b00110000
9
  out MCUCR,r16
10
  sleep
11
  ldi r16, (1<<WDCE)
12
  out WDTCR, r16
13
  ldi r16, 0b00010000
14
  out WDTCR, r16
15
  cli
16
  pop r16
17
  ret
die zugehörige IST beschränkt sich auf ein reti, schließlich soll nur 
geweckt werden.
1
.org 0x0008
2
    rjmp WATCHDOG
3

4
WATCHDOG:
5
reti

Das ganze funktioniert aber nicht, vielleicht sieht jemand einen Fehler 
und sagt ihn mir.
#2782372
Eumel schrieb:
> Achso, die WDTON Fuse ist natürlich gesetzt!
Die darf nicht gesetzt sein, weil damit der Watchdog aktiv ist und nach 
dem Abarbeiten der Watchdog-Timer-ISR ein Watchdog-Reset ausgeführt 
wird.
Dabei werden auch die Watchdog-Register zurück gesetzt und der Watchdog 
steht auf 16ms. Und wenn er dann nicht gleich wieder eingestellt wird, 
macht er eben nach diesen 16ms wieder einen Reset und damit fristet er 
dann sein Dasein bis ihm der Strom abgestellt wird.

mfg.
Gast #2782413
Ahrgl, wie blöd von mir. Unter der entsprechende Tabelle im Datenblatt 
steht:"Note: 1. WDTON fuse set to “0“ means programmed and “1“ means 
unprogrammed"

Und ich hab natürlich nur in die Tabelle geschaut und gedacht 1 würde 
gesetzt heißen.

Danke für deine Hilfe!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 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.