Any strange behaviour, crashing issues etc, post them here! Problems compiling the firmware should go in the General support section rather than here
User avatar
By PSIG
#55830
Could it simply be a check-box option to "enable configurable pulse duration"? Users uses what works best for their stuff.
By fenderer
#69438
Krycholrc wrote:Hello

I was able to solve this problem. I did as in FW from 2018 before adding the Pulse Duration function which gives a resolution of 1ms which causes the meter to go crazy. The only drawback is you can not set the Ignition Dwell too high, in my case, max 2.8ms for a good reading of 7000RPM in BMW tacho.

In scheduledIO.ino change this line:
Code: Select all
inline void beginCoil1Charge() { if(ignitionOutputControl != OUTPUT_CONTROL_MC33810) { coil1Charging_DIRECT(); } else { coil1Charging_MC33810(); } TACHO_PULSE_LOW(); }
inline void endCoil1Charge() { if(ignitionOutputControl != OUTPUT_CONTROL_MC33810) { coil1StopCharging_DIRECT(); } else { coil1StopCharging_MC33810(); } TACHO_PULSE_HIGH(); }

inline void beginCoil2Charge() { if(ignitionOutputControl != OUTPUT_CONTROL_MC33810) { coil2Charging_DIRECT(); } else { coil2Charging_MC33810(); } TACHO_PULSE_LOW(); }
inline void endCoil2Charge() { if(ignitionOutputControl != OUTPUT_CONTROL_MC33810) { coil2StopCharging_DIRECT(); } else { coil2StopCharging_MC33810(); } TACHO_PULSE_HIGH(); }

inline void beginCoil3Charge() { if(ignitionOutputControl != OUTPUT_CONTROL_MC33810) { coil3Charging_DIRECT(); } else { coil3Charging_MC33810(); } TACHO_PULSE_LOW(); }
inline void endCoil3Charge() { if(ignitionOutputControl != OUTPUT_CONTROL_MC33810) { coil3StopCharging_DIRECT(); } else { coil3StopCharging_MC33810(); } TACHO_PULSE_HIGH(); }

inline void beginCoil4Charge() { if(ignitionOutputControl != OUTPUT_CONTROL_MC33810) { coil4Charging_DIRECT(); } else { coil4Charging_MC33810(); } TACHO_PULSE_LOW(); }
inline void endCoil4Charge() { if(ignitionOutputControl != OUTPUT_CONTROL_MC33810) { coil4StopCharging_DIRECT(); } else { coil4StopCharging_MC33810(); } TACHO_PULSE_HIGH(); }

inline void beginCoil5Charge() { if(ignitionOutputControl != OUTPUT_CONTROL_MC33810) { coil5Charging_DIRECT(); } else { coil5Charging_MC33810(); } TACHO_PULSE_LOW(); }
inline void endCoil5Charge() { if(ignitionOutputControl != OUTPUT_CONTROL_MC33810) { coil5StopCharging_DIRECT(); } else { coil5StopCharging_MC33810(); } TACHO_PULSE_HIGH(); }

inline void beginCoil6Charge() { if(ignitionOutputControl != OUTPUT_CONTROL_MC33810) { coil6Charging_DIRECT(); } else { coil6Charging_MC33810(); } TACHO_PULSE_LOW(); }
inline void endCoil6Charge() { if(ignitionOutputControl != OUTPUT_CONTROL_MC33810) { coil6StopCharging_DIRECT(); } else { coil6StopCharging_MC33810(); } TACHO_PULSE_HIGH(); }

inline void beginCoil7Charge() { if(ignitionOutputControl != OUTPUT_CONTROL_MC33810) { coil7Charging_DIRECT(); } else { coil7Charging_MC33810(); } TACHO_PULSE_LOW(); }
inline void endCoil7Charge() { if(ignitionOutputControl != OUTPUT_CONTROL_MC33810) { coil7StopCharging_DIRECT(); } else { coil7StopCharging_MC33810(); } TACHO_PULSE_HIGH(); }

inline void beginCoil8Charge() { if(ignitionOutputControl != OUTPUT_CONTROL_MC33810) { coil8Charging_DIRECT(); } else { coil8Charging_MC33810(); } TACHO_PULSE_LOW(); }
inline void endCoil8Charge() { if(ignitionOutputControl != OUTPUT_CONTROL_MC33810) { coil8StopCharging_DIRECT(); } else { coil8StopCharging_MC33810(); } TACHO_PULSE_HIGH(); }

//The below 3 calls are all part of the rotary ignition mode
inline void beginTrailingCoilCharge() { beginCoil2Charge(); }
inline void endTrailingCoilCharge1() { endCoil2Charge(); beginCoil3Charge(); } //Sets ign3 (Trailing select) high
inline void endTrailingCoilCharge2() { endCoil2Charge(); endCoil3Charge(); } //sets ign3 (Trailing select) low

//As above but for ignition (Wasted COP mode)
void beginCoil1and3Charge() { beginCoil1Charge(); beginCoil3Charge(); TACHO_PULSE_LOW(); }
void endCoil1and3Charge()   { endCoil1Charge();  endCoil3Charge(); TACHO_PULSE_HIGH(); }
void beginCoil2and4Charge() { beginCoil2Charge(); beginCoil4Charge(); TACHO_PULSE_LOW(); }
void endCoil2and4Charge()   { endCoil2Charge();  endCoil4Charge(); TACHO_PULSE_HIGH(); }

//For 6cyl wasted COP mode)
void beginCoil1and4Charge() { beginCoil1Charge(); beginCoil4Charge(); TACHO_PULSE_LOW(); }
void endCoil1and4Charge()   { endCoil1Charge();  endCoil4Charge(); TACHO_PULSE_HIGH(); }
void beginCoil2and5Charge() { beginCoil2Charge(); beginCoil5Charge(); TACHO_PULSE_LOW(); }
void endCoil2and5Charge()   { endCoil2Charge();  endCoil5Charge(); TACHO_PULSE_HIGH(); }
void beginCoil3and6Charge() { beginCoil3Charge(); beginCoil6Charge(); TACHO_PULSE_LOW(); }
void endCoil3and6Charge()   { endCoil3Charge();  endCoil6Charge(); TACHO_PULSE_HIGH(); }

//For 8cyl wasted COP mode)
void beginCoil1and5Charge() { beginCoil1Charge(); beginCoil5Charge(); TACHO_PULSE_LOW(); }
void endCoil1and5Charge()   { endCoil1Charge();  endCoil5Charge(); TACHO_PULSE_HIGH(); }
void beginCoil2and6Charge() { beginCoil2Charge(); beginCoil6Charge(); TACHO_PULSE_LOW(); }
void endCoil2and6Charge()   { endCoil2Charge();  endCoil6Charge(); TACHO_PULSE_HIGH(); }
void beginCoil3and7Charge() { beginCoil3Charge(); beginCoil7Charge(); TACHO_PULSE_LOW(); }
void endCoil3and7Charge()   { endCoil3Charge(); endCoil7Charge(); TACHO_PULSE_HIGH(); }
void beginCoil4and8Charge() { beginCoil4Charge(); beginCoil8Charge(); TACHO_PULSE_LOW(); }
void endCoil4and8Charge()   { endCoil4Charge(); endCoil8Charge(); TACHO_PULSE_HIGH(); }
In timers.ino uncoment all tacho output like this:

Hello I'm having exactly the same issue driving my rev counter. The fixed pulse length method just causes massive instability in the rev counter I'm using. Can you explain more clearly exactly what code you changed to get your solution to work. You mention changing a line, but which one?

Hi Everyone: I am new to Speeduino and am fascina[…]

Evidently someone else has been down this road bef[…]

The pattern of signals. All signals are conditi[…]

Your simulated MAP signal just needs a signal co[…]

Still can't find what you're looking for?