mirror of https://github.com/rusefi/speeduino.git
Add tech rejection period to the basic distributor decoder
This commit is contained in:
parent
60ffd8366f
commit
e254582bd8
17
decoders.ino
17
decoders.ino
|
@ -116,14 +116,17 @@ Note: This is a very simple decoder. See http://www.megamanual.com/ms2/GM_7pinHE
|
||||||
void triggerSetup_BasicDistributor()
|
void triggerSetup_BasicDistributor()
|
||||||
{
|
{
|
||||||
triggerToothAngle = 360 / (configPage1.nCylinders / 2); //The number of degrees that passes from tooth to tooth
|
triggerToothAngle = 360 / (configPage1.nCylinders / 2); //The number of degrees that passes from tooth to tooth
|
||||||
|
triggerFilterTime = 60000000L / MAX_RPM / configPage1.nCylinders; // Minimum time required between teeth
|
||||||
|
triggerFilterTime = triggerFilterTime / 2; //Safety margin
|
||||||
}
|
}
|
||||||
|
|
||||||
void triggerPri_BasicDistributor()
|
void triggerPri_BasicDistributor()
|
||||||
{
|
{
|
||||||
curTime = micros();
|
curTime = micros();
|
||||||
|
curGap = curTime - toothLastToothTime;
|
||||||
|
if ( curGap < triggerFilterTime ) { return; } //Debounce check. Pulses should never be less than triggerFilterTime
|
||||||
|
|
||||||
toothCurrentCount++; //Increment the tooth counter
|
if(toothCurrentCount == (configPage1.nCylinders >> 1) ) //Check if we're back to the beginning of a revolution
|
||||||
if(toothCurrentCount > (configPage1.nCylinders >> 1) ) //Check if we're back to the beginning of a revolution
|
|
||||||
{
|
{
|
||||||
toothCurrentCount = 1; //Reset the counter
|
toothCurrentCount = 1; //Reset the counter
|
||||||
toothOneMinusOneTime = toothOneTime;
|
toothOneMinusOneTime = toothOneTime;
|
||||||
|
@ -131,6 +134,7 @@ void triggerPri_BasicDistributor()
|
||||||
currentStatus.hasSync = true;
|
currentStatus.hasSync = true;
|
||||||
startRevolutions++; //Counter
|
startRevolutions++; //Counter
|
||||||
}
|
}
|
||||||
|
else { toothCurrentCount++; } //Increment the tooth counter
|
||||||
|
|
||||||
//High speed tooth logging history
|
//High speed tooth logging history
|
||||||
toothHistory[toothHistoryIndex] = curGap;
|
toothHistory[toothHistoryIndex] = curGap;
|
||||||
|
@ -273,6 +277,11 @@ void triggerSetup_4G63()
|
||||||
toothAngles[2] = 175; //Falling edge of tooth #2
|
toothAngles[2] = 175; //Falling edge of tooth #2
|
||||||
toothAngles[3] = 285; //Rising edge of tooth #1
|
toothAngles[3] = 285; //Rising edge of tooth #1
|
||||||
|
|
||||||
|
toothAngles[0] = 105; //Falling edge of tooth #1
|
||||||
|
toothAngles[1] = 175; //Rising edge of tooth #2
|
||||||
|
toothAngles[2] = 285; //Falling edge of tooth #2
|
||||||
|
toothAngles[3] = 355; //Rising edge of tooth #1
|
||||||
|
|
||||||
triggerFilterTime = 1500; //10000 rpm, assuming we're triggering on both edges off the crank tooth.
|
triggerFilterTime = 1500; //10000 rpm, assuming we're triggering on both edges off the crank tooth.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -282,7 +291,7 @@ void triggerPri_4G63()
|
||||||
curGap = curTime - toothLastToothTime;
|
curGap = curTime - toothLastToothTime;
|
||||||
if ( curGap < triggerFilterTime ) { return; } //Debounce check. Pulses should never be less than triggerFilterTime
|
if ( curGap < triggerFilterTime ) { return; } //Debounce check. Pulses should never be less than triggerFilterTime
|
||||||
|
|
||||||
if(toothCurrentCount == 0 || toothCurrentCount == 4)
|
if(toothCurrentCount == 0 || toothCurrentCount == 4) //Trigger is on CHANGE, hence 4 pulses = 1 crank rev
|
||||||
{
|
{
|
||||||
toothCurrentCount = 1; //Reset the counter
|
toothCurrentCount = 1; //Reset the counter
|
||||||
toothOneMinusOneTime = toothOneTime;
|
toothOneMinusOneTime = toothOneTime;
|
||||||
|
@ -309,7 +318,7 @@ void triggerSec_4G63()
|
||||||
{
|
{
|
||||||
//Check the status of the crank trigger
|
//Check the status of the crank trigger
|
||||||
bool crank = digitalRead(pinTrigger);
|
bool crank = digitalRead(pinTrigger);
|
||||||
if(crank == LOW) { toothCurrentCount = 0; } //If the crank trigger is currently HIGH, it means we're on tooth #1
|
if(crank == HIGH) { toothCurrentCount = 0; } //If the crank trigger is currently HIGH, it means we're on tooth #1
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue