Hallo Leute!

Ich habe jetzt wieder mal ein bischen herumexperimentiert, aber ich komme zu keinem Interrupt. Mitlwerweile verwende ich nicht mehr Phase Correct PWM, sondern CTC.

Ist CTC überhaupt noch PWM?, dabei wird doch die Frequenz verändert oder?

Mit diesem Programmcode wird zwar ein Interrupt ausgelöst, aber das Programm springt nicht in die Interruptvektortabelle, sondern einfach nur 3 zeilen weiter rauf. Das Hilft mir sogut wie garnicht.

Code:
.include "m16def.inc"

.def temp = r16

.org 0x000               ; kommt ganz an den Anfang des Speichers
	rjmp main            ; Interruptvektoren überspringen
                         ; und zum Hauptprogramm
	rjmp EXT_INT0        ; IRQ0 Handler
	rjmp EXT_INT1        ; IRQ1 Handler
	reti ;TIM2_COMP
	reti ;TIM2_OVF
	reti ;TIM1_CAPT       ; Timer1 Capture Handler
	reti ;TIM1_COMPA      ; Timer1 CompareA Handler
	reti ;TIM1_COMPB      ; Timer1 CompareB Handler
	reti ;TIM1_OVF        ; Timer1 Overflow Handler
	reti ;TIM0_OVF        ; Timer0 Overflow Handler
	reti ;SPI_STC         ; SPI Transfer Complete Handler
	reti ;USART_RXC       ; USART RX Complete Handler
	reti ;USART_DRE       ; UDR Empty Handler
	reti ;USART_TXC       ; USART TX Complete Handler
	reti ;ADC             ; ADC Conversion Complete Interrupt Handler
	reti ;EE_RDY          ; EEPROM Ready Handler
	reti ;ANA_COMP        ; Analog Comparator Handler
	reti ;TWSI            ; Two-wire Serial Interface Handler
	reti ;SPM_RDY         ; Store Program Memory Ready Handler

main:
;Stackpointer
	ldi temp, LOW(RAMEND)
	out SPL, temp
	ldi temp, HIGH(RAMEND)
	out SPH, temp
;Aus/Eingänge
	ldi temp, 0x00
	out DDRD, temp			;Eingang

	ldi temp, 0xFF
	out DDRB, temp			;Ausgang
;Interrupteingänge
	ldi temp, 0b00001001	;INT0 und INT1 konfigurieren
	out MCUCR, temp

	ldi temp, 0b11000000	;INT0 und INT1 aktivieren
	out GIMSK, temp
;PWM
	ldi temp, 0b00001001	;Einstellungen siehe Seite 81-83
	out TCCR0, temp

	ldi temp, 0b00111111
	out OCR0, temp			;Stellt die Einschaltzeit ein (Alles gesetzte --> immer ein, alles aus --> immer aus)
	
	ldi temp, (1<<OCIE0)
	out TIMSK, temp

	ldi temp, (1<<OCF0)
	out TIFR, temp
;Interrupts freigeben
	sei						;Interrupts allgemein aktivieren
	
Ende:
	jmp ende
	
EXT_INT0:
	sbi PortB, 0
	reti

EXT_INT1:
	cbi PortB, 0
	reti
Im Register TIMSK habe ich nun OCIE0 aktiviert, mit TOIE0 passiert garnichts

Im Register TIFR habe ich OCF0 aktiviert. Brauche ich das TIFR Register überhaupt für einen Interrupt?

Ich merke allerdings je mehr ich herumprobiere, desto mehr weiche ich von einer richtigen PWM ab. Es muss doch möglich sein, das man einfach mit einer Phase Correct PWM einen Interrupt bei jeder Änderung aufruft oder?

mfg Gerko