Hallo,
ich habe versucht, auf meinem STK500 ein Lauflicht zu implementieren, bei dem die Verzögerungen mittels Timer0 erzeugt werden, mein Programmcode sieht wie folgt aus:

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

#define SIG_CNT_LIMIT 10
unsigned short i=0; /* count interrupt events */
volatile int zaehler=1;
int up=1;

void init_timer0(void);


ISR(TIMER0_COMP_vect)
{ 
	i++;
	/* Did the counter exceed the limit? */
	if (i>=SIG_CNT_LIMIT ) 
	{
		i=0;
		//PORTB = ~zaehler;
		
		if(up == 1)
			zaehler = zaehler * 2;			//Zaehlerwert auf naechste LED erhoehen
		else
			zaehler = zaehler / 2;			//Zaehlerwert auf naechste LED erniedrigen
		
		if(zaehler == 128)				//um von der letzten LED rückwaerts zu laufen, up = 0
			up = 0;
		else if (zaehler == 1)			//um von der ersten LED wieder nach oben zu laufen
			up = 1;
	}
}


void init_timer0() 
{
	/* clear timer if timer value matches compare value. */
	/* CTC Mode in Register TCCR0*/
	TCCR0=(1<<WGM01)|(0<<WGM00);

	/* set clock divider to "1024" at position CS00..02 */
	TCCR0=(1<<CS02)|(1<<CS01)|(1<<CS00);
	
	/* set timer compare value to 0xFF (=255, 3.68MHz/1024/255)*/
	OCR0=0xFF; /* highbyte of compare register */

	/* enable compare1a interrupt in the interrupt mask register */
	TIMSK=(1<<OCIE0);

	/* reset current timer value */
	TCNT0=0; /*Timer counter 0*/
}


/* This is the main function. */
int main(void) 
{
	init_timer0();
	DDRB = 0xFF; // all pins are output
	DDRA = 0x00;	
	PORTB=0xFF;
	sei();
	
	for(;;) 
	{
		PORTB = ~zaehler;				//Ausgabe des aktuellen Zaehlerwertes
	}
}
Bekomme beim erstellen zwar keinen Error, aber ich sehe auch kein Lauflicht, kann mir jemand sagen, woran es liegen kann?[/code]