Pulse counting

What is the best way to count input pulses using the rabbit, presumably it is by using interrupts but i have not used them on the rabbit previously. I am looking at counting pulses from a rotating wind speed gauge.

Also if using interrupts what is the maximum/sensible frequency that the rabbit will capture the pulse chain? :rolleyes:

Using an RCM3200.

The best way is using an external interrupt and writing an ISR to keep the count. The speed would be dictated by the processor clock and the following calculations for a very minimal interrupt routine:

Interrupt Latency = 30 clocks
Push/Pop of HL = 17
Load/Store of HL = 28
Increment HL = 2
Return from ISR = 7

TOTAL CLOCKS = 84

So theoretically the counter could keep up with a frequency of 1/84th the main processor frequency. But that would not allow time for anything but the ISR, so more realistically you would need to limit this ISR to about a fourth of the available clock cycles, yielding 1/336th of the main frequency. So if your processor is running at 44Mhz then you could handle pulse counting of about a 130kHz signal average, with temporary surges up to 520kHz. This is more than adequate for wind speed counts. Remember that a minimal routine like the one described would still require a foreground routine to read and clear the count location at least twice a second (less if the max. average frequency was lower), as there is no logic to handle count overflow.

[QUOTE=Chill0309;35]What is the best way to count input pulses using the rabbit, presumably it is by using interrupts but i have not used them on the rabbit previously. I am looking at counting pulses from a rotating wind speed gauge.

Also if using interrupts what is the maximum/sensible frequency that the rabbit will capture the pulse chain? :rolleyes:

Using an RCM3200.[/quote]

Please see my post titled “Let the silicon do the work” in the Wish List forum as it relates to this thread.

I’m also an building a wind speed sensor

The sensor has 2 pulses per revolution. so in very light winds the frequency will be in the < 20 hz range. The width of the pulse is directly proportional to wind speed.

is it possible to use something like the ic_test sample program (found in …/samples/rcm3000/ )with a BL2600 to simply read in the pulse width and derive a number from this input to use as the windspeed.

I am a bit confused with the PG1 input example and SW2 reference.

How do I use one of the DIN available on the BL2600

Regards

Simon