Gast
#1849073
Hallo, ich bin neu hier und bitte um eure Hilfe. Mein Programm soll den PinB4 überwachen und gegebenfalls portb3 high setzen. Dieser soll dann durch einen Timer eine Weile gehalten werden. Das funktioniert auch ganz gut. Sicherheitshalber wollte ich einen Watchdog mit im Programm haben. Da der Kontroller die ganze Zeit am Netz bleiben soll und ich nicht will das er sich irgendwann aufhängt. Ich denke ich habe den Watchdog korrekt gestartet. Und ich bin mir auch ziemlich sicher das er einfach nicht resttet wird. Dadurch wird dann irgendwann der Attiny13 resettet, obwohl das Programm noch im vollem gange war. Kann mir jemand meinen Fehler zeigen? Ich benutze übrigens das AVR Studio 4.18.700 und den Atmel AVR ISP MKII Hier der Quellcode: .include "tn13def.inc" .def A =r16 .def B =r17 rjmp Anfang .org 0x0003 ;Timer0 Overflow landet hier und rjmp TIM0_OVF ;verweist auf TIM0_OVF Routine Anfang: sbi portb,4 ;schaltet PullUp für sensor eingang ein Port B4 sbi ddrb,3 ;Datenrichtungsbit PB3, Ausgang Pumpen Mosfet cbi portb,3 cli ;Watchdog aktivieren (max. Zeit) ldi r18,0b00011000 ; 1.mal out wdtcr,r18 ldi r18,0b00101001 ; 2.mal out wdtcr,r18 sei WDR ;Watchdog reset Schleife: WDR sbis pinb,4 rjmp Pumpe_an rjmp Schleife Pumpe_an: WDR cli sbi portb,3 ;schaltet PB3 ein ldi A,5 ;Start mit Vorteiler / 1024 out TCCR0B,A ldi A,2 out TIMSK0,A;Timer Interrupt freigeben ldi B,250 ;definiert Nachlaufzeit der Pumpe sei ;Globaler Interrupt freigeben rjmp Schleife TIM0_OVF: ;Timer Interrupt WDR dec B cpi B,0 breq Pumpe_aus reti Pumpe_aus: WDR cbi portb,3 ;schaltet PB3 aus ldi A,0 ;schaltet Timer aus out TCCR0B,A reti