does calcSignal() need to be any more than
void calcSignal()
{
if(digitalRead(PWM_PIN) == HIGH)
timer_start = micros();
else
pulse_time = micros() - timer_start;
}
won't pulse_time be incorrect just once if the first interrupt catches the falling edge?