Begin to track spark start times. Needed for overdwell protection
This commit is contained in:
parent
8432b81ec3
commit
c7a5f0b4f7
|
@ -43,6 +43,7 @@ struct Schedule {
|
||||||
volatile ScheduleStatus Status;
|
volatile ScheduleStatus Status;
|
||||||
void (*StartCallback)(); //Start Callback function for schedule
|
void (*StartCallback)(); //Start Callback function for schedule
|
||||||
void (*EndCallback)(); //Start Callback function for schedule
|
void (*EndCallback)(); //Start Callback function for schedule
|
||||||
|
unsigned long startTime;
|
||||||
};
|
};
|
||||||
|
|
||||||
Schedule fuelSchedule1;
|
Schedule fuelSchedule1;
|
||||||
|
|
|
@ -255,6 +255,7 @@ ISR(TIMER5_COMPA_vect) //ignitionSchedule1
|
||||||
if (ignitionSchedule1.Status == PENDING) //Check to see if this schedule is turn on
|
if (ignitionSchedule1.Status == PENDING) //Check to see if this schedule is turn on
|
||||||
{
|
{
|
||||||
ignitionSchedule1.Status = RUNNING; //Set the status to be in progress (ie The start callback has been called, but not the end callback)
|
ignitionSchedule1.Status = RUNNING; //Set the status to be in progress (ie The start callback has been called, but not the end callback)
|
||||||
|
ignitionSchedule1.startTime = currentLoopTime;
|
||||||
ignitionSchedule1.StartCallback();
|
ignitionSchedule1.StartCallback();
|
||||||
//unsigned int absoluteTimeout = TCNT5 + (ignitionSchedule1.duration / 4);
|
//unsigned int absoluteTimeout = TCNT5 + (ignitionSchedule1.duration / 4);
|
||||||
unsigned int absoluteTimeout = TCNT5 + (ignitionSchedule1.duration >> 2); //Divide by 4
|
unsigned int absoluteTimeout = TCNT5 + (ignitionSchedule1.duration >> 2); //Divide by 4
|
||||||
|
@ -273,6 +274,7 @@ ISR(TIMER5_COMPB_vect) //ignitionSchedule2
|
||||||
if (ignitionSchedule2.Status == PENDING) //Check to see if this schedule is turn on
|
if (ignitionSchedule2.Status == PENDING) //Check to see if this schedule is turn on
|
||||||
{
|
{
|
||||||
ignitionSchedule2.Status = RUNNING; //Set the status to be in progress (ie The start callback has been called, but not the end callback)
|
ignitionSchedule2.Status = RUNNING; //Set the status to be in progress (ie The start callback has been called, but not the end callback)
|
||||||
|
ignitionSchedule2.startTime = currentLoopTime;
|
||||||
ignitionSchedule2.StartCallback();
|
ignitionSchedule2.StartCallback();
|
||||||
//unsigned int absoluteTimeout = TCNT5 + (ignitionSchedule2.duration / 4);
|
//unsigned int absoluteTimeout = TCNT5 + (ignitionSchedule2.duration / 4);
|
||||||
unsigned int absoluteTimeout = TCNT5 + (ignitionSchedule2.duration >> 2); //Divide by 4
|
unsigned int absoluteTimeout = TCNT5 + (ignitionSchedule2.duration >> 2); //Divide by 4
|
||||||
|
@ -291,8 +293,9 @@ ISR(TIMER5_COMPC_vect) //ignitionSchedule3
|
||||||
noInterrupts();
|
noInterrupts();
|
||||||
if (ignitionSchedule3.Status == PENDING) //Check to see if this schedule is turn on
|
if (ignitionSchedule3.Status == PENDING) //Check to see if this schedule is turn on
|
||||||
{
|
{
|
||||||
ignitionSchedule3.StartCallback();
|
|
||||||
ignitionSchedule3.Status = RUNNING; //Set the status to be in progress (ie The start callback has been called, but not the end callback)
|
ignitionSchedule3.Status = RUNNING; //Set the status to be in progress (ie The start callback has been called, but not the end callback)
|
||||||
|
ignitionSchedule3.startTime = currentLoopTime;
|
||||||
|
ignitionSchedule3.StartCallback();
|
||||||
//unsigned int absoluteTimeout = TCNT5 + (ignitionSchedule2.duration / 4);
|
//unsigned int absoluteTimeout = TCNT5 + (ignitionSchedule2.duration / 4);
|
||||||
unsigned int absoluteTimeout = TCNT5 + (ignitionSchedule3.duration >> 2); //Divide by 4
|
unsigned int absoluteTimeout = TCNT5 + (ignitionSchedule3.duration >> 2); //Divide by 4
|
||||||
OCR5C = absoluteTimeout;
|
OCR5C = absoluteTimeout;
|
||||||
|
@ -311,8 +314,9 @@ ISR(TIMER4_COMPA_vect) //ignitionSchedule4
|
||||||
noInterrupts();
|
noInterrupts();
|
||||||
if (ignitionSchedule4.Status == PENDING) //Check to see if this schedule is turn on
|
if (ignitionSchedule4.Status == PENDING) //Check to see if this schedule is turn on
|
||||||
{
|
{
|
||||||
ignitionSchedule4.StartCallback();
|
|
||||||
ignitionSchedule4.Status = RUNNING; //Set the status to be in progress (ie The start callback has been called, but not the end callback)
|
ignitionSchedule4.Status = RUNNING; //Set the status to be in progress (ie The start callback has been called, but not the end callback)
|
||||||
|
ignitionSchedule4.startTime = currentLoopTime;
|
||||||
|
ignitionSchedule4.StartCallback();
|
||||||
//unsigned int absoluteTimeout = TCNT5 + (ignitionSchedule2.duration / 16);
|
//unsigned int absoluteTimeout = TCNT5 + (ignitionSchedule2.duration / 16);
|
||||||
unsigned int absoluteTimeout = TCNT4 + (ignitionSchedule4.duration >> 4); //Divide by 16
|
unsigned int absoluteTimeout = TCNT4 + (ignitionSchedule4.duration >> 4); //Divide by 16
|
||||||
OCR4A = absoluteTimeout;
|
OCR4A = absoluteTimeout;
|
||||||
|
|
Loading…
Reference in New Issue