Hallo ihr beiden,

also ich hab noch ein bißchen was geändert... (wie Izeit_1 nicht in der while schleife auf 0 setzen ) Ich habe auch noch ne else schleife dazugefügt.
Das komische ist er geht anscheinend nur in die Else-Schleife, da die LED3 (PC2) immer wieder toggelt. Also funktioniert es irgendwie schon aber nicht wirklich befriedigend Die Bedingung in der IF schleife führt er nicht aus....

Rahmenbedingungen: Atmega16 16 MHz
am PortC sind LEDs angeschlossen

Code:
#include <stdlib.h>
#include <avr/pgmspace.h>
#include <stdio.h>
#include <util/delay.h>


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

uint16_t Izeit_1=0;

void Timer0_init(void)                  // Init Tmr/Cntr 0, 8-Bit auf 20 kHz = 50 µs
{        
    TCCR0 |= (1<<WGM01) | (1<<CS01);               // Timer im CTC-Mode, Top=OCR2A   Prescaler 1/8 / Clock <- CPU     
    OCR0 = 49;                        // Preset 48 für 50µs bei 16Mhz 
    TIMSK |= (1<<OCIE0);      // Tmr/Cntr CompareA interrupt enabled
}     

/* Routine zählt hoch im Takt 20 kHz = 50 µs.                                     */
ISR(TIMER0_COMP_vect)          // Vektor 7
{
    if (Izeit_1 <= 60000)        //Timer bis 60 000 - 3 sec Datenerfassung möglich
      Izeit_1 ++;               //  war: alle drei Sekunden wird 60000 erreicht
                  //  und Izeit_1 bleibt in der uint16-Grenze
    else
    {   
        Izeit_1 = 0;      // ansonsten: Rückstellen auf Null
        PORTC ^= (1<<PC5);      // Zur Anzeige gLED am PC5/SCL toggeln
    }     
         
}         



int main(void)
{
	Izeit_1=0;
	Timer0_init();
	DDRC |= 0xff; 
	PORTC=0x00;

	while(1)
	{
		cli();
		sei();
		if (Izeit_1>2)
		{
			PORTC ^= (1<<PC0);
		}
		else
		{
			PORTC ^= (1<<PC2);
		}
		cli(); 
	}
}
Danke schon mal im vorraus für die Mühe........

Gruß Anna[/code]