Hallo mic,

danke für denTest.

Hier der komplette Code, vielleicht kannst du einen Fehler entdecken?

Code:
//test

#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdlib.h>		// itoa etc.


#define UART_BAUD_RATE	9600L //baudrate definieren
#define UART_BAUD_CALC 	((F_CPU)/((UART_BAUD_RATE)*16L)-1)

volatile uint8_t zaehler;

void usart_init (void)
{
	UCSRC |= (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1);	// Asynchron, 8N1
	UBRRH=(uint8_t)(UART_BAUD_CALC>>8);			// Baudrate wählen
	UBRRL=(uint8_t)UART_BAUD_CALC;
}

void usart_start (void)
{
	UCSRB |= (1 << TXEN);	// UART TX (senden) einschalten
	UCSRB |= (1 << RXEN);	// UART RX (empfangen) einschalten	
}


void usart_putc(unsigned char c) // Ein Zeichen senden
{
    while(!(UCSRA & (1 << UDRE)));	// warte, bis UDR bereit 
    UDR = c;						// sende Zeichen 
}

void usart_puts (char *s)	// Einen String senden
{
    while (*s) // so lange *s != NULL 
    {   
        usart_putc(*s);
        s++;
    }
}


void usart_put_int (int wert)
{
  char text [7];                        
  itoa (wert, text, 10);
  usart_puts (text);
}

void timer0_init (void)
{
					  
	TCCR0 |= (1<<CS01);
	TCCR0 |= (1<<CS00);	
	TCCR0 |= (1<<WGM01);	 
	OCR0=124;
}

void timer0_start (void)
{		 
	TIMSK |= (1 << OCIE0);   //Timer0 Interrupt freigegeben
}

void timer0_stop (void)
{		 
	TIMSK &= ~(1 << OCIE0);   //Timer0 Interrupt sperren
}

ISR(TIMER0_COMP_vect)  // wird jede ms ausgeführt
{
	
	zaehler++;
		
}

void pause(uint8_t faktor, uint8_t ms)		//millisek eingeben max 255
{
	uint8_t i;	
	for (i=1; i<=faktor; i++)
	{
		zaehler=0;
		while (zaehler<ms);
	}
}


int main(void)
{	

	sei();
	usart_init();	
	usart_start();
	timer0_init ();
	timer0_start();

	int8_t a=0;
	while(1)
	{		
		usart_put_int (a);
		usart_puts("\r\n");
		pause(1,10);		
		//a=a+1;
		a++;		
	}


    while(1);
	return 0;
}
Gruss
M.