![]() |
Speeduino
|
#include <stdint.h>#include "globals.h"#include "scheduler.h"#include "comms.h"#include "comms_legacy.h"#include "comms_secondary.h"#include "maths.h"#include "corrections.h"#include "timers.h"#include "decoders.h"#include "idle.h"#include "auxiliaries.h"#include "sensors.h"#include "storage.h"#include "crankMaths.h"#include "init.h"#include "utilities.h"#include "engineProtection.h"#include "scheduledIO.h"#include "secondaryTables.h"#include "comms_CAN.h"#include "SD_logger.h"#include "schedule_calcs.h"#include "load_source.h"#include "board_definition.h"#include <RTC_LIB_H>#include "units.h"#include "fuel_calcs.h"Macros | |
| #define | CRANK_RUN_HYSTER 15 |
Functions | |
| void | calculateIgnitionAngles (uint16_t dwellAngle) |
| void | checkLaunchAndFlatShift () |
| void | setup (void) |
| static uint16_t | applyFuelTrimToPW (trimTable3d *pTrimTable, uint16_t fuelLoad, int16_t RPM, uint16_t currentPW) |
| static uint8_t | getVE1 (void) |
| static int8_t | getAdvance1 (void) |
| void | loop (void) |
Speeduino initialisation and main loop.
| #define CRANK_RUN_HYSTER 15 |
|
inlinestatic |


Calculate the Ignition angles for all cylinders (based on config2::nCylinders). both start and end angles are calculated for each channel. Also the mode of ignition firing - wasted spark vs. dedicated spark per cyl. - is considered here.


| void checkLaunchAndFlatShift | ( | ) |


Lookup the ignition advance from 3D ignition table. The values used to look this up will be RPM and whatever load source the user has configured.


Lookup the current VE value from the primary 3D fuel map. The Y axis value used for this lookup varies based on the fuel algorithm selected (speed density, alpha-n etc).


Speeduino main loop.
Main loop chores (roughly in the order that they are performed):
single byte variable LOOP_TIMER plays a big part here as:

|
static |
|
static |
|
static |
|
static |
| uint8_t fuelChannelsOn |
The current state of the fuel system (on or off)
| uint8_t ignitionChannelsOn |
The current state of the ignition system (on or off)
| uint8_t ignitionChannelsPending = 0 |
Any ignition channels that are pending injections before they are resumed
| uint32_t revLimitAllowedEndTime = 0 |
| uint32_t rollingCutLastRev = 0 |
Tracks whether we're on the same or a different rev for the rolling cut