Zitat von
Searcher
Hallo Helmut,
auch im TIMSK mit Wert 0x18 (dez 24 bzw 0b000011000 bzw OCIE1A und OCIE1B) Bit 3 und 4
beide Compareinterrupts frei gegeben?
Und dann bitte nochmal das ganze Programm einstellen.
Gruß
Searcher
Das ist nun auch eingefplegt, aber leider auch kein Erfolg. Jetzt blinkt gar nichts mehr, jetzt leuchten die LEDs nur noch.
Code:
; definitions
.def temp = R16
.def temp_1 = R17
; interrupt vectors
.org 0x000 ; reset handler
rjmp main
.org 0x00E ; Timer1 CompareA Handler
rjmp interrupt_compare_A
.org 0x010 ; Timer1 CompareB Handler
rjmp interrupt_compare_B
;Mnemonic target, source
main: ; main programm
;;; Timer Counter
;; Control Register A
LDI temp, 0x00 ; normal & Clear Timer on Compare Match (CTC) Mode -> own overflow value
OUT TCCR1A, temp ; Control Register A
;; Control Register B
LDI temp, 0b00001101 ; Timer prescaler of 1024 & Clear Timer on Compare Match (CTC) Mode -> self adjust overflow value
OUT TCCR1B, temp ; Control Register B
;; Output Compare Register 1 A for CTC
; write value 15625 -> 15625 * 1024 = 16MHz -> 1 second count
LDI temp, 0b00111101
OUT OCR1AH, temp
LDI temp, 0b00001001
OUT OCR1AL, temp
;; Output Compare Register 1 B for CTC
; write value 31,250 -> 31,250 * 1024 = 32MHz -> 2 seconds count
LDI temp, 0b01111010
OUT OCR1BH, temp
LDI temp, 0b00010010
OUT OCR1BL, temp
;;; PORTC set as output
LDI temp, 0xFF ; Register komplett auf 1 setzen / LDI geht nur von R16 bis R31
OUT DDRC, temp ; durch DDRC wird festgelegt ob die Pins von PORTC als Ausg. (1) oder Eing. (0) definiert werden
; DDRC wird nun mit den Werten aus R16 befüllt
;;; Interrupt handling
;; for timer 1 Interrupt Mask Register
LDI temp, 0b00001100 ; Bit 4 – OCIE1A: Timer/Counter1, Output Compare A Match Interrupt Enable
OUT TIMSK, temp
;; global
sei ; set global interruptenable
loop:
rjmp loop ; endless loop
;-------------------------------------------------------------------------------------------
; interrupts
interrupt_compare_A: ; interrupt routine for compare register 1 B
IN temp_1, SREG ; save status register
LDI temp, 0x00
OUT PORTC, temp ; LEDs on
OUT SREG, temp_1 ; restore status register
reti
interrupt_compare_B: ; interrupt routine for compare register 1 A
IN temp_1, SREG ; save status register
LDI temp, 0xFF
OUT PORTC, temp ; LEDs off
OUT SREG, temp_1 ; restore status register
reti
;-------------------------------------------------------------------------------------------
Lesezeichen