/*
 * GccApplication2.c
 *
 * Created: 13.10.2016 14:34:05
 * Author : SoN
 */ 

#define F_CPU 1000000 
#include <avr/io.h>
#include <stdbool.h>
#include <avr/interrupt.h>
#include <util/delay.h>			//wird hier nicht benutzt


volatile int zaehler=0;
volatile bool start=true;
bool los=true;
bool waraus=false;
bool blub=false;		//sorgt für abwarten eines erneuten interrupts bei start=false; -->	if(start==false && blub==true)  (um gleiche leuchtdauer zu gewährleisten)




int main(void)
{
 TCCR0 = (1<<CS00);			
 TCCR0 = (1<<CS02);			
 TIMSK |=(1<<TOIE0);
 sei();
//int zeit =300;			//wird hier nicht benutzt
//_delay_ms(zeit);			wird hier nicht benutzt

	DDRB = 0xFF;							
	DDRD = 0x00;
	PORTB = 0x01;	
	

		
while(1)
{	
	
//lauflicht pausieren
if(!(PIND & (1<<PD7)))     
	{
	los=false;
	}
	
	
//lauflicht starten	
if(!(PIND & (1<<PD0)))    
	{
	if(waraus==true)
		{	
			PORTB = 0x01;	
			waraus=false;			
		}
	los=true;
	}
	
	
//alles AUS
if(!(PIND & (1<<PD6)))	
	{	
		los =false;
		PORTB =0xFF;
		waraus =true;		
	}

}
	
	return 0;
	
}


ISR(TIMER0_OVF_vect)
{
if(los==true)
{	
blub=true;						//sorgt für abwarten eines erneuten interrupts bei start=false; -->	if(start==false && blub==true)  (für gleiche leuchtdauer der letzten led)
	if(start==true)	
		{
		PORTB = (PORTB<<1);				//led's nach links schieben
		zaehler++;
		
		if(zaehler==5)
			{
			blub=false;
			start=false;		
			}
		}

	if(start==false && blub==true)
		{
		PORTB = (PORTB>>1);				//led's nach rechts schieben
		zaehler--;
		
		if(zaehler==0)
			{
				start=true;			
			}
		}	
}
}


	


