Watchdog beim AVR ATTiny13

Hi,

kann mir jemand einen Tipp geben, wie ich den Watchdog richtig initialisieren muss, das er keinen Reset, sondern immer nur die Interrupt-Routine anspringt?

Im konkreten Fall soll der ATTiny nur ca. alle 8sek eine Ausgabe machen, mehr nicht.

Ich bekomme immer nur eine Lösung hin, wo der Reset ausgeführt wird. Ich verstehe da wohl etwas noch nicht. Das Beispiele im Atmel-Datasheet behandelt die Ausschaltprozedur und gibt die Kombinationen an von "nur Interrupt", "Reset" und "Int+Reset".

mmmhh....

Hat jemand ein Link oder ein kurzes Codebeispiel dafür? Ich wäre echt dankbar.

Gruß Thomas

Reply to
Thomas Gobernatz
Loading thread data ...

Thomas Gobernatz schrieb:

Wie ist denn Dein Code? Prinzipiell beschreibt Tabelle 16 im Datenblatt [1] ja, wie die einzelnen Bits im WDTCR für die jeweiligen Modi gesetzt sein müssen.

CU Christian [1]

--
Christian Zietz  -  CHZ-Soft  -  czietz (at) gmx.net
WWW: http://www.chzsoft.com.ar/
PGP/GnuPG-Key-ID: 0x6DA025CA
Reply to
Christian Zietz

Hallo Christian,

meine Denkweise ist wie folgt:

  1. Teil init wie original
  2. Teil konfigurieren wegen Zeit und "nur Interrupt"

...aber, vielleicht denke ich ja völlig falsch. Mit dem Wachhund habe ich noch nicht gearbeitet.

Danke und Gruß Thomas

; .INCLUDE "tn13def.inc" ; ; Reset- und Interrupt-Vektoren ; .CSEG ; Assembliere in den Programm-Flash-Speicher .ORG $0000 ; beginne mit Adresse 0 ; ; Sprungvektoren fuer Reset und Interrupts ; rjmp main ; Reset vector reti ; Int0 interrupt vector reti ; PCINT0 vector reti ; TC0 overflow vector reti ; Eeprom ready vector reti ; Analog comparator int vector reti ; TC0 CompA vector reti ; TC0 CompB vector rjmp wdt ; WDT vector reti ; ADC conversion complete vector ; ; ;1. Teil direkt aus dem Daten-PDF kopiert zum WDT totlegen............. ; main: WDT_off: ; Turn off global interrupt cli ; Reset Watchdog Timer wdr ; Clear WDRF in MCUSR in r16, MCUSR andi r16, (0xff - (1

Reply to
Thomas Gobernatz

Thomas Gobernatz schrieb:

An welcher Stelle machst Du das? Denn hier:

Reply to
Christian Zietz

ich hatte auch schon diese Variante getestet (im 2.Teil):

WDT_Prescaler_Change: ; Turn off global interrupt cli ; Reset Watchdog Timer wdr ldi r16, (1

Reply to
Thomas Gobernatz

Thomas Gobernatz schrieb:

Reply to
Christian Zietz

Danke, ich werde es nachher testen.

Gruß Thomas

Reply to
Thomas Gobernatz

Kurzes Resümee: Test mit AVR Simulator falsch!

Mit "lebendem" Objekt geht es. Und zwar hab ich zum Test eine LED an PB0 gehängt und dann folgendes Testprogramm gebrannt: (das sieht sehr vergurkt aus, ich weiss, ist aber nur als Test gedacht...)

Danke noch mal vielmals! Gruß Thomas

; .INCLUDE "tn13def.inc" ; ;

; ; Reset- und Interrupt-Vektoren ; .CSEG ; Assembliere in den Programm-Flash-Speicher .ORG $0000 ; beginne mit Adresse 0 ; ; Sprungvektoren fuer Reset und Interrupts ; rjmp main ; Reset vector reti ; Int0 interrupt vector reti ; PCINT0 vector reti ; TC0 overflow vector reti ; Eeprom ready vector reti ; Analog comparator int vector reti ; TC0 CompA vector reti ; TC0 CompB vector rjmp wdt ; WDT vector reti ; ADC conversion complete vector ;

main: sbi DDRB, 0 cbi PortB, 0

WDT_off: ; Turn off global interrupt cli ; Reset Watchdog Timer wdr ; Clear WDRF in MCUSR in r16, MCUSR ;andi r16, (0xff - (1

Reply to
Thomas Gobernatz

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.