Podle mne by to mělo fungovat takto, ale nezkoušel jsem to v reálu.
[code]//osc. = 8 MHz
#include <mega8.h>
#include <delay.h>
#define LED1      PORTC.5       // LED na porte C5 a C4
#define LED2      PORTC.4
#define SIGNAL    PIND.2        // riadiaci signál z prijímača - vstup
volatile unsigned char Servo;
volatile unsigned char off;
//--------------------------------------------------------------------
interrupt [EXT_INT0] void ext_int0_isr(void) // Externé prerušenie 0
{
if (SIGNAL)        // L-H interrupt
TCNT0 = 0;     // vynulovanie časovača 0
else               // H-L interrupt
Servo = TCNT0; // Servo = hodnota časovača (délka kladného pulsu)
}
//--------------------------------------------------------------------
// Timer0 přeteče za 32 ms (musí být delší než perioda signálu)
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
off = 1;
}
//=====================================================================
void main(void)
{
PORTC = 0x00;      // PC0 az PC5 = výstup
DDRC  = 0b00111111;
TIMSK = 0x01;      // povolenie prerušenia Timer0 overflow
TCCR0 = 5;         // start timer0, presc 1024
GICR  = (1<<6);    // External Interrupt0 enable
MCUCR = (1<<2);    // INT0 Mode: Any change
//test HW
PORTC = 255;       //LED ON
delay_ms(100);
PORTC = 0;         //LED OFF
//koniec testu
#asm("sei")
while (1)          // nekonečná slučka
{   
     if(off)       // no signal
     {
         off  = 0;
         LED2 = 1;
     }
     else 
     {    
        if(Servo > 12) {LED1=1;} // puls > 1.5 ms  
        else           {LED1=0;} // puls < 1.5 ms
        LED2 = 0;
     }
} 
}[/code]

