#include <avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>
#include <avr/interrupt.h>


//------------------------------------------------------------------------------
/*ISR (INT0_vect)		// INT0 s odstranenim zakmitania
{
	EIMSK &= ~(1<<INT0);        // zakáž INT0
	PORTB |= (1<<PORTB5);
	_delay_ms(100);
	PORTB &= ~(1<<PORTB5);
	while(!(PIND & (1<<PD2)));  // čakaj kým sa tlačidlo uvoľní
	_delay_ms(20);              // debounce uvoľnenia
	EIFR |= (1<<INTF0);         // vymaž flag
	EIMSK |= (1<<INT0);         // znovu povoľ INT0
}*/
//------------------------------------------------------------------------------
ISR (INT0_vect)		// Obsluha externeho prerusenia INT0
{  
	PORTB |= (1<<PORTB5);
	_delay_ms(100);
	PORTB &= ~(1<<PORTB5);
}
//------------------------------------------------------------------------------
ISR (INT1_vect)		// Obsluha externeho prerusenia INT1
{
	PORTB |= (1<<PORTB5);
	_delay_ms(1000);
	PORTB &= ~(1<<PORTB5);
}
//------------------------------------------------------------------------------
void EXTINT_Init (void)			
{
	DDRD &= ~(1<<DDD2);								// PORTD2 (INT0) ako vstup
	DDRD &= ~(1<<DDD3);								// PORTD3 (INT1) ako vstup
	PORTD |= (1<<PORTD2) | (1<<PORTD3);				// Pull-up on INT0, INT1
	EICRA |= 1<<ISC01 | 1<<ISC11;					// Trigger INT0, INT1 on failing edge
//	EICRA |= 1<<ISC11|1<<ISC10|1<<ISC01|1<<ISC00;	// Trigger INT0, INT1 on rising edge
	EIFR |= 1<<INTF0 | 1<<INTF1;					// vymaže príznak prerušenia INT0, INT1
	EIMSK |= 1<<INT0 | 1<<INT1;						// Enable INT0, INT1
}
//------------------------------------------------------------------------------
int main (void) {
		
	DDRB |= (1<<DDB5);				//Nastavi vyvod LED na vystup
	EXTINT_Init();					//Inicializuje INT0, INT1
	sei();                          //Povoli globalne prerusenia

	while(1) { 
		
	}
}
