//----------------------------------------------------------------------------------------------------
//  LED4.c       Led blink test
//----------------------------------------------------------------------------------------------------
#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h>

#define led_port PORTA
#define led_pin_out (1 << PA7)
#define led_direction DDRA
#define led_togglePins PINA

//#define sw_port PORTA
#define sw_pins PINA
#define sw_pin  (1 << PA3)

int count = 0;


//----------------------------------------------------------------------------------------------------
//		main
//----------------------------------------------------------------------------------------------------
void main(void) {
 
   //--------  set clock divider to /1 ---------------------------

   CLKPR = (1 << CLKPCE);
   CLKPR = (0 << CLKPS3) | (0 << CLKPS2) | (0 << CLKPS1) | (0 << CLKPS0);
   
   //-------- initialize output pins -----------------------------
   
	led_port |= ~(led_pin_out); 			// set led port
	led_direction |= led_pin_out;     // set led port direction

   //-------- Loop  -----------------------------------------------

	while(1){
	    LEDSW();
        switch(count){
        case 1:
            while(sw_pins & sw_pin){
                    led_port |= led_pin_out; 
                    _delay_ms(2000);
                    led_port &= ~(led_pin_out); 
                    _delay_ms(2000);
                    }
            break;

        case 2:
            led_port &= ~(led_pin_out);
            break;
            
        default:
            led_port |= led_pin_out;  

    }
    }
}


int LEDSW(){
    if(sw_pins & sw_pin){

    }
    else {
        _delay_ms(10); 
        if(sw_pins & sw_pin){
            if(count < 2){
                count++;
                return count;
                } 
            else {
                count = 0;
                return count;
                }

        }
    }
} 
