Starting improvements on the 4g63 pattern

This commit is contained in:
Josh Stewart 2017-08-21 11:52:12 +10:00
parent b71c59947e
commit 13e3b1f37b
2 changed files with 14 additions and 4 deletions

View File

@ -708,7 +708,7 @@ void triggerPri_4G63()
if (currentStatus.hasSync == true)
{
if ( BIT_CHECK(currentStatus.engine, BIT_ENGINE_CRANK) && configPage2.ignCranklock)
if ( BIT_CHECK(currentStatus.engine, BIT_ENGINE_CRANK) && configPage2.ignCranklock && (currentStatus.startRevolutions >= configPage2.StgCycles))
{
if( toothCurrentCount == 1 ) { endCoil1Charge(); }
else if( toothCurrentCount == 3 ) { endCoil2Charge(); }
@ -784,7 +784,7 @@ void triggerSec_4G63()
curTime2 = micros();
curGap2 = curTime2 - toothLastSecToothTime;
if ( (curGap2 >= triggerSecFilterTime) || (currentStatus.startRevolutions == 0) )
if ( (curGap2 >= triggerSecFilterTime) )//|| (currentStatus.startRevolutions == 0) )
{
toothLastSecToothTime = curTime2;
@ -797,6 +797,7 @@ void triggerSec_4G63()
if(BIT_CHECK(currentStatus.engine, BIT_ENGINE_CRANK) || (currentStatus.hasSync == false) )
{
triggerFilterTime = 1500; //If this is removed, can have trouble getting sync again after the engine is turned off (but ECU not reset).
if(READ_PRI_TRIGGER() == true)// && (crankState == digitalRead(pinTrigger)))
{
@ -810,7 +811,15 @@ void triggerSec_4G63()
triggerSecFilterTime_duration = (micros() - secondaryLastToothTime1) >> 1;
if(READ_PRI_TRIGGER() == true)// && (crankState == digitalRead(pinTrigger)))
{
toothCurrentCount = 4; //If the crank trigger is currently HIGH, it means we're on tooth #1
if( (currentStatus.RPM < currentStatus.crankRPM) && (currentStatus.hasSync == true) )
{
//Whilst we're cranking and have sync, we need to watch for noise pulses.
if(toothCurrentCount != 4) { currentStatus.hasSync = false; } // This should never be true, except when there's noise
else { toothCurrentCount = 4; }
}
else { toothCurrentCount = 4; } //If the crank trigger is currently HIGH, it means we're on tooth #1
}
} // Use resync
} //Trigger filter
@ -838,7 +847,7 @@ uint16_t getRPM_4G63()
toothTime = toothTime * 36;
tempRPM = ((unsigned long)tempToothAngle * 6000000UL) / toothTime;
revolutionTime = (10UL * toothTime) / tempToothAngle;
MAX_STALL_TIME = revolutionTime << 3;
//MAX_STALL_TIME = revolutionTime << 3;
}
}
else

View File

@ -695,6 +695,7 @@ void loop()
currentStatus.PW1 = 0;
currentStatus.VE = 0;
toothLastToothTime = 0;
toothLastSecToothTime = 0;
//toothLastMinusOneToothTime = 0;
currentStatus.hasSync = false;
currentStatus.runSecs = 0; //Reset the counter for number of seconds running.