HI, ich hab gerad begonnen interrupts mit dem timer auszuprobieren udn den code mal nach AVR Tutorial und Datenblatt gestrickt. Sowohl für 8-, als auch 16 Bit Timer. Problem, es passiert garnichts. Der Port ist richtig, die LED kann ich zum Debuggen auch in led_init() an- und ausschalten, jedoch die ISR des Timers läuft nicht. wahrscheinlich überseh ich nur was, oder ??

Code:
#include <avr/io.h>
#include <avr/interrupt.h>

// edfinition of Timer 0 Interrupt number
#define TIMER0_vect    _VECTOR(10)
#define TIMER1_vect    _VECTOR(9)

//definitions for Timer register
#define CS00 0
#define CS01 1
#define CS02 2
#define CS12 2

//definitions for LED
#define LEDPORT DDRB
#define LED     0


void timer0_init(void);	//  8 Bit Timer
void timer1_init(void);	// 16 Bit Timer
void led_init(void);


void main(void)
{
	led_init();
	timer1_init();
	
	for(;;)
	{}
	
}


void timer0_init(void)
{
	cli();
	// Set Timer Config:
	TCCR0 |= (1<<CS00) | (1<<CS02);
	
	//enable Timer0 Interrupt
	TIMSK |= (1<<0);
	sei();
}

void timer1_init(void)
{
	cli();
	// set Timer1 Conifg
	TCCR1A =  0x00; 			// kein CLK_out, kein PWM
	TCCR1B |= (1<<CS12); 	// Prescvaler f_osc/256
	
	//enable Timer1 Interrupt
	TIMSK |= (1<<7); 
	sei();
}


void led_init(void)
{
	LEDPORT = 0x01;
	PORTB  |= (1<<LED);
}


// TIMER 0 ISR
ISR (TIMER0_vect)
{	
	if( PORTB |= (1<<LED) )
		PORTB &= ~(1<<LED);
	else
		PORTB |= (1<<LED);
}


//TIMER 1 ISR
ISR (TIMER1_vect)
{	
	if( PORTB |= (1<<LED) )
		PORTB &= ~(1<<LED);
	else
		PORTB |= (1<<LED);
}
mfg

LC