#include <avr/io.h>
#include <avr/interrupt.h>
#include <compat/ina90.h>
#include <stdlib.h>

#define uchar	unsigned char
#define uint	unsigned int

volatile uchar ptim=0;

ISR (TIM0_OVF_vect) {	
	if(ptim) {
		ptim--;
	}
}

int main(void) {

	uint i;

	DDRB = 	0b00000001;
	PORTB = 0b00010110;

	CLKPR = 0b10000000;		// разрешение на изменение сист.прескалера
	CLKPR = 0b00000000;		// значение сист.прескалера = 9.6 MHz / 1 = 9.6 MHz

	TCCR0B = 1;					// OVF 0.2	ms
	TIMSK0 |= (1<<TOIE0);

	sei();
	
	PORTB |= (1<<0);			// включение на постоянку
	
								// задержка 3 секунды
	for(i=0; i<400; i++) {
		ptim = 255;
		while(ptim);
	}
	PORTB &= ~(1<<0);			// выключение

	while(1){
		if(PINB & (1<<3)) {	// ждём положительного фронта
			PORTB |= (1<<0);	// выдаём импульс
			cli();
			ptim = 15;
			sei();
			while(ptim);
			PORTB &= ~(1<<0);
		}
		while(PINB & (1<<3));	// ждём нуля
	}
	
	
	
	
	return(0);

}