//----------------------------------------------------------------------------------------------------
//  LED2.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)


//----------------------------------------------------------------------------------------------------
//		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){
//		chkSw();
		chkSw2();
		

/*		led_port |= led_pin_out; 			// led on
		_delay_ms(1000);    //wait for 1000 ms
		led_port &= ~led_pin_out; 			// led off
	  _delay_ms(1000);    //wait for 1000 ms
	  */
	}
}

//----------------------------------------------------------------------------------------------------
//		sw read 1
//----------------------------------------------------------------------------------------------------
void chkSw(void){

	if(sw_pins & sw_pin){
		        led_port &= ~led_pin_out; 			// led off
	}else{
				led_port |= led_pin_out; 			// led on
	}
}

//----------------------------------------------------------------------------------------------------
//		sw read 2
//----------------------------------------------------------------------------------------------------
void chkSw2(void){

	if(sw_pins & sw_pin){
		     //   led_port &= ~led_pin_out; 			// led off
	}else{
		 _delay_ms(10);    //wait for 10 ms
		if(sw_pins & sw_pin){
				led_togglePins |= led_pin_out; 			// led toggle
		}
	}
}