Thanks for reading my previous post. The problem turned out to be the speed of the processor vs the pulse wave generator. After it was debounced, the interrupt worked as advertised. Here is how it was done:
volatile int state;
void setup() {
..... //initialization code same as before
.....
.....
attachInterrupt( (PULSE_PIN - 2),ISRpw, CHANGE );
}
void ISRpw() {
do{
state = digitalRead( PULSE_PIN );
}while( digitalRead( PULSE_PIN ) != state ); //debounce input pin
if( state == HIGH ) { pulseStart = micros(); }
if( state == LOW ) { pulseStop = micros(); pulseWidth = pulseStop - pulseStart; }
}
/******************* rest of code is unchanged. ***********************/
It looks like the rise time of the pulse generator was just too slow. This fixed it.