Hallo zusammen,
Ich hab mich in der letzten Tagen mit dem Ansprechen der Timer/Counter im Atmega 32 beschäftigt.
Dazu wollte ich zum Ausprobieren mithilfe des Timer/Counter0 den PortA in kurzen Abständen,
nach jedem Zählerüberlauf An- und Auschalten.
Hierzu habe ich den folgenden Programmcode von microcontroller.net verwendet
und lediglich die Includedatei für meinen AVR geändert und den Ausgabeport auf "PORTA" umgeschrieben:
Mein Problem ist nun, dass das Programm, nachdem es durch den Overflow InterruptCode:.INCLUDE "C:\Programme\Atmel\AVR Studio\Appnotes\m32def.inc" .def temp = r16 .def leds = r17 .org 0x0000 rjmp main ; Reset Handler .org OVF0addr rjmp timer0_overflow ; Timer Overflow Handler main: ldi temp, LOW(RAMEND) ; Stackpointer initialisieren out SPL, temp ldi temp, HIGH(RAMEND) out SPH, temp ldi temp, 0xFF ; Port B auf Ausgang out DDRA, temp ldi leds, 0xFF ldi temp, 0b00000001 ; CS00 setzen: Teiler 1 out TCCR0, temp ldi temp, 0b00000001 ; TOIE0: Interrupt bei Timer Overflow out TIMSK, temp sei loop: rjmp loop timer0_overflow: ; Timer 0 Overflow Handler out PORTA, leds com leds reti
das Unterprogramm "timer0_overflow:" ausgeführt hat,
auf die Adresse 0x0000 Springt und die Programmzeilen nach "main:" immer wieder ausführt.
Normalerweise müsste das Programm doch wieder in die Endlosschleife
bei "loop:" Zurückspingen, oder?![]()
Wäre nett wenn ihr mir helfen könntet, thx shon mal im Vorraus!![]()







Zitieren
Lesezeichen