I am trying to read the RPM from the tacho sensor on a 12v fan but am getting errors once the fan spins up.
Error:
Failed allocation for 17 blocks, 204 bytes
private static double _lastPulse = 0;private static double _lastDifference;public static void Main(){ /*Fan Pin Layouts * Red - +12Vdc * Black - GND * White - TACH/Sense */ var input = new InterruptPort(Pins.GPIO_PIN_A0, false, Port.ResistorMode.Disabled, Port.InterruptMode.InterruptEdgeHigh); input.OnInterrupt += new NativeEventHandler(OnFanRotation); var button = new InterruptPort(Pins.ONBOARD_SW1, false, Port.ResistorMode.Disabled, Port.InterruptMode.InterruptEdgeHigh); button.OnInterrupt += new NativeEventHandler(OnButtonPress); Thread.Sleep(Timeout.Infinite);}static void OnButtonPress(uint data1, uint data2, DateTime time){ if (_lastDifference > 0) { const int milliSecondsPerMinute = 60000; var milliSecondsPerRotation = _lastDifference * 2; //2 Pulses per rotation var rpm = milliSecondsPerMinute / milliSecondsPerRotation; Debug.Print("RPM: " + rpm.ToString()); }}static void OnFanRotation(uint data1, uint data2, DateTime time){ var current = Utility.GetMachineTime().Ticks / TimeSpan.TicksPerMillisecond; if (_lastPulse > 0) { _lastDifference = current - _lastPulse; //2 pulses per rotation' } _lastPulse = current;}