Hallo Helmut,
ich glaub viel fehlt nicht mehr wenn das TIMSK richtig gesetzt ist. Was passiert im Mode 4, also CTC mit OCR1A als TOP?:
Code:
;; 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
.
.
.
.
.
;-------------------------------------------------------------------------------------------
; 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
;-----------------------------------------------------------------------------------
Der Timer läuft nur bis 15625 da OCR1A mit 15625 gesetzt ist. Interrupt Flag wird gesetzt wg. Compare1a Interrupt. Interrupt Compare1A wird ausgeführt und LEDs werden in der ISR eingeschaltet. Der Timer läuft nicht weiter hoch sondern setzt sich auf 0 (Null) wegen CTC. Er erreicht also die 31250 für Compare1B Match gar nicht da TCNT1 vorher zurück gesetzt wird. Compare1B Interrupt kann also nicht eintreten und die LED nie ausgeschaltet werden.
Also einfach die 15625 ins OCR1B schreiben und die 31250 in OCR1A. Damit läuft der Timer zwei Sekunden hoch. "Oben" schaltet er über den Compare1A Interrupt die LEDs ein und auf dem Weg nach oben über den Compare1B Interrupt die LEDs aus.
Übrigens um genau zwei Sekunden zu erreichen sollte der Wert 31249 statt 31250, da der Timer noch einen Timertick braucht um auf Null zu kommen. Spiegelt sich auch im Datenblatt in der Formel zur Frequenzberechnung mit der -1 wieder. Eventuell auch die 15625 um eins vermindern?
So bin gespannt was sich tut.
Gruß
Searcher
Lesezeichen