Problem with GetGTSensor() ?

We installed the 2006 kit Gear Tooth Sensors into the transmissions as documented, yet regardless of which direction (or how fast/slow) the gears are driven, GetGTSensor() always increases from one call to the next, i.e. it never registers reverse motion by decrementing the count.
Is it possible that the logic to determine direction based upon pulse width is not working correctly? Did anyone else experience this?
This was not critical to our autonomous, and so I didn’t pursue it in the crush to ship, but now I am curious as to what was going on, and would like to resolve this for the future.

The gear tooth sensor requires 2 interrupts for each tick and the time between them determines the direction.

This has been a limitation in WPILib for the Gear Tooth Sensor. The problem is that the difference in the pulse width is very short, only about 40us. The code to save and restore state in an interrupt service routine is 50us. And if there are other interrupts overlapping it’s impossible to compute the time.

If another device was currently interrupting when the gear tooth sensor pulse happened, getting into the interrupt service routine would be delayed by thge time it takes to get out of the other interrupt service routine and get into the gear tooth sensor.

Encoders work fine because they are a little slower - there is usually more time to read the other channel and figure out what’s happening.