Проблема такая: нужно сравнивать сигнал с АЦП (8bit) с значением таймера (T1), причем имеет значение знак напруги ( внешний элемент переворачивает отрицат. сигнал и сообщает на ногу МК что отриц. ) а еще сигнал АЦП нужно делить на полторы части и сравнивать с таймером (см. рисунок) В момент когда они равны ( зеленые кружки на рисунке )вызвать подпрограмму Next(). Таймер обнуляется внешним прерыванием int0 Я это сделал так: ISR(SIG_INTERRUPT0) { Prev = TCNT0; TCNT0 = 0; } ISR(SIG_ADC) { adc_data=ADCH; if (adc_data > 155) { adc_data = adc_data - 155; } if (sign == 1) { if ( adc_data == Prev - TCNT0 ) Next(1); } else if ( sign == 0 ) { if ( adc_data == TCNT0 ) Next(1); } } и в инициализации: TCCR0=0x04; TCNT0 = 0; ADMUX=0xE0; ADCSRA=0x8F; Симулировал в VMLAB работает не так совсем как надо, видит одно из 20 нужных случаев остальные пропускает. Подскажите пожалуйста в чем я ошибся?? Заранее благодарен! А, еще внешнее прерывание по растущему фронту импульса с периодом 20мс/6. Вх. сигнал может быть любой формы, синусоида там или вообще черт знает что. МК -mega8 частота любая лишь бы подошла таймеру для точности.