Es klappt.. endlich. Nur etwas will nicht.
Ich hab mir folgenden code zusammengeschrieben:
Code:
#include <avr\io.h>
#include <inttypes.h>
#include <avr\interrupt.h>

#define F_CPU 3686400
#define timer (256-F_CPU/64/1000) 

#define RotH PORTB0
#define RotV PORTB1
#define BlauV PORTB2

int ms; 

void initPorts()
{
	DDRB |= (1<<PB0) | (1<<PB1) | (1<<PB2);
}

ISR(TIMER0_OVF_vect)                                 					//Timer Interrupt Vector 
{
	TCNT0 = timer; 
	ms++; 
}

int main(void)
{

	initPorts();														// Timer Interrupt initialisieren
	TIMSK |= (1<<TOIE0);   
	TCCR0=0x05;															// 0b00000011, Vorteiler 1024 ca. 4khz
	sei();                  											// enable interrupts
	do 
	{

		PORTB &= ~( (1<<RotH) | (1<<PORTB1) | (1<<PORTB2));				//PORTB Pins 0,1,2 auf low

		if(ms >= 5)
		{
			PORTB |= (1<<RotH);											//Rot High

			if(ms >=30) 
			{
				PORTB |= (1<<RotV);										//Gelb High
				if(ms >= 100)
				{
					PORTB &= ~(1<<RotH);								//ROT Low
					PORTB |= (1<<BlauV);								//GRUEN High
					if(ms >= 200)
					{
						ms = 0;											//ms auf NULL
					}
					

				}
				
			}

		}
	}
	while (true);     													
}
//======================================================================
Dieser funktioniert auch, ausser das das setzten von PORTB0 auf low nicht klappt.
Ich meinte einmal gelesen zu haben, das es damit zusammenhäng wie man die PORT's definiert und schaltet. Also ob man sie erst als Ausgänge setzt und dann auf High oder umgekehrt.

Kann mir da vieleicht jemand behilflich sein?