Speeduino
Loading...
Searching...
No Matches
Functions | Variables
scheduler.cpp File Reference
#include "globals.h"
#include "scheduler.h"
#include "scheduledIO.h"
#include "timers.h"
#include "schedule_calcs.h"

Functions

static void reset (FuelSchedule &schedule)
 
static void reset (IgnitionSchedule &schedule)
 
void initialiseSchedulers ()
 
void _setFuelScheduleRunning (FuelSchedule &schedule, unsigned long timeout, unsigned long duration)
 
void _setFuelScheduleNext (FuelSchedule &schedule, unsigned long timeout, unsigned long duration)
 
void _setIgnitionScheduleRunning (IgnitionSchedule &schedule, unsigned long timeout, unsigned long duration)
 
void _setIgnitionScheduleNext (IgnitionSchedule &schedule, unsigned long timeout, unsigned long duration)
 
void refreshIgnitionSchedule1 (unsigned long timeToEnd)
 
void beginInjectorPriming (void)
 
static void fuelScheduleISR (FuelSchedule &schedule)
 
void fuelSchedule1Interrupt ()
 
void fuelSchedule2Interrupt ()
 
void fuelSchedule3Interrupt ()
 
void fuelSchedule4Interrupt ()
 
static void ignitionScheduleISR (IgnitionSchedule &schedule)
 
void ignitionSchedule1Interrupt (void)
 
void disablePendingFuelSchedule (byte channel)
 
void disablePendingIgnSchedule (byte channel)
 

Variables

FuelSchedule fuelSchedule1 (FUEL1_COUNTER, FUEL1_COMPARE, FUEL1_TIMER_DISABLE, FUEL1_TIMER_ENABLE)
 
FuelSchedule fuelSchedule2 (FUEL2_COUNTER, FUEL2_COMPARE, FUEL2_TIMER_DISABLE, FUEL2_TIMER_ENABLE)
 
FuelSchedule fuelSchedule3 (FUEL3_COUNTER, FUEL3_COMPARE, FUEL3_TIMER_DISABLE, FUEL3_TIMER_ENABLE)
 
FuelSchedule fuelSchedule4 (FUEL4_COUNTER, FUEL4_COMPARE, FUEL4_TIMER_DISABLE, FUEL4_TIMER_ENABLE)
 
IgnitionSchedule ignitionSchedule1 (IGN1_COUNTER, IGN1_COMPARE, IGN1_TIMER_DISABLE, IGN1_TIMER_ENABLE)
 
IgnitionSchedule ignitionSchedule2 (IGN2_COUNTER, IGN2_COMPARE, IGN2_TIMER_DISABLE, IGN2_TIMER_ENABLE)
 
IgnitionSchedule ignitionSchedule3 (IGN3_COUNTER, IGN3_COMPARE, IGN3_TIMER_DISABLE, IGN3_TIMER_ENABLE)
 
IgnitionSchedule ignitionSchedule4 (IGN4_COUNTER, IGN4_COMPARE, IGN4_TIMER_DISABLE, IGN4_TIMER_ENABLE)
 
IgnitionSchedule ignitionSchedule5 (IGN5_COUNTER, IGN5_COMPARE, IGN5_TIMER_DISABLE, IGN5_TIMER_ENABLE)
 

Detailed Description

Injector and Ignition (on/off) scheduling (functions). There is usually 8 functions for cylinders 1-8 with same naming pattern.

Scheduling structures

Structures FuelSchedule and Schedule describe (from scheduler.h) describe the scheduling info for Fuel and Ignition respectively. They contain duration, current activity status, start timing, end timing, callbacks to carry out action, etc.

Scheduling Functions

For Injection:

For Ignition (has more complex schedule setup):

Function Documentation

◆ _setFuelScheduleNext()

void _setFuelScheduleNext ( FuelSchedule schedule,
unsigned long  timeout,
unsigned long  duration 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ _setFuelScheduleRunning()

void _setFuelScheduleRunning ( FuelSchedule schedule,
unsigned long  timeout,
unsigned long  duration 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ _setIgnitionScheduleNext()

void _setIgnitionScheduleNext ( IgnitionSchedule schedule,
unsigned long  timeout,
unsigned long  duration 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ _setIgnitionScheduleRunning()

void _setIgnitionScheduleRunning ( IgnitionSchedule schedule,
unsigned long  timeout,
unsigned long  duration 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ beginInjectorPriming()

void beginInjectorPriming ( void  )
extern

Perform the injector priming pulses. Set these to run at an arbitrary time in the future (100us). The prime pulse value is in ms*10, so need to multiple by 100 to get to uS

Here is the call graph for this function:
Here is the caller graph for this function:

◆ disablePendingFuelSchedule()

void disablePendingFuelSchedule ( byte  channel)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ disablePendingIgnSchedule()

void disablePendingIgnSchedule ( byte  channel)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ fuelSchedule1Interrupt()

void fuelSchedule1Interrupt ( )

fuelSchedule*Interrupt (All 8 ISR functions below) get called (as timed interrupts) when either the start time or the duration time are reached. This calls the relevant callback function (startCallback or endCallback) depending on the status (PENDING => Needs to run, RUNNING => Needs to stop) of the schedule. The status of schedule is managed here based on startCallback /endCallback function called:

  • startCallback - change scheduler into RUNNING state
  • endCallback - change scheduler into OFF state (or PENDING if schedule.hasNextSchedule is set)
Here is the call graph for this function:

◆ fuelSchedule2Interrupt()

void fuelSchedule2Interrupt ( )
Here is the call graph for this function:

◆ fuelSchedule3Interrupt()

void fuelSchedule3Interrupt ( )
Here is the call graph for this function:

◆ fuelSchedule4Interrupt()

void fuelSchedule4Interrupt ( )
Here is the call graph for this function:

◆ fuelScheduleISR()

static void fuelScheduleISR ( FuelSchedule schedule)
inlinestatic
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ignitionSchedule1Interrupt()

void ignitionSchedule1Interrupt ( void  )
Here is the call graph for this function:

◆ ignitionScheduleISR()

static void ignitionScheduleISR ( IgnitionSchedule schedule)
inlinestatic
Here is the call graph for this function:
Here is the caller graph for this function:

◆ initialiseSchedulers()

void initialiseSchedulers ( void  )

< The number of crank degrees until cylinder 1 is at TDC (This is obviously 0 for virtually ALL engines, but there's some weird ones)

< The number of crank degrees until cylinder 2 (and 5/6/7/8) is at TDC

< The number of crank degrees until cylinder 2 (and 5/6/7/8) is at TDC

< The number of crank degrees until cylinder 2 (and 5/6/7/8) is at TDC

< The number of crank degrees until cylinder 1 is at TDC (This is obviously 0 for virtually ALL engines, but there's some weird ones)

< The number of crank degrees until cylinder 2 (and 5/6/7/8) is at TDC

< The number of crank degrees until cylinder 3 (and 5/6/7/8) is at TDC

< The number of crank degrees until cylinder 4 (and 5/6/7/8) is at TDC

Here is the call graph for this function:
Here is the caller graph for this function:

◆ refreshIgnitionSchedule1()

void refreshIgnitionSchedule1 ( unsigned long  timeToEnd)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ reset() [1/2]

static void reset ( FuelSchedule schedule)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ reset() [2/2]

static void reset ( IgnitionSchedule schedule)
static
Here is the call graph for this function:

Variable Documentation

◆ fuelSchedule1

◆ fuelSchedule2

◆ fuelSchedule3

◆ fuelSchedule4

◆ ignitionSchedule1

◆ ignitionSchedule2

◆ ignitionSchedule3

◆ ignitionSchedule4

◆ ignitionSchedule5