![]() |
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 "src/controllers/progammableIO/programmableIOControl.h"#include "engineProtection.h"#include "secondaryTables.h"#include "comms_CAN.h"#include "SD_logger.h"#include "load_source.h"#include "board_definition.h"#include "unit_testing.h"#include <RTC_LIB_H>#include "units.h"#include "fuel_calcs.h"#include "preprocessor.h"#include "dwell.h"#include "decoder_init.h"#include "src/pins/pinMapping.h"#include "resetControl.h"#include "scheduler_ignition_controller.h"#include "src/controllers/launch/launchController.h"#include "src/controllers/fuelPump/fuelPumpController.h"#include "scheduler_fuel_controller.h"#include "src/controllers/tsCommand/tsCommandController.h"#include "src/controllers/fan/fanController.h"#include "src/controllers/boost/boostController.h"#include "src/controllers/aircon/airconController.h"#include "src/controllers/nitrous/nitrousController.h"Macros | |
| #define | CRANK_RUN_HYSTER 15 |
Functions | |
| void | setup (void) |
| static uint8_t | getVE1 (void) |
| static int8_t | getAdvance1 (void) |
| static bool | haveSwitchedToBatteryPower (uint8_t originalBatteryVoltage, const statuses ¤t) |
| static void | onPowerSourceSwitch (uint8_t originalBatteryVoltage, const statuses ¤t, const config2 &page2, const config6 &page6) |
| BEGIN_LTO_ALWAYS_INLINE (void) loop(void) | |
Variables | |
| constexpr table2D_u8_u8_10 idleTargetTable & | configPage6 |
Speeduino initialisation and main loop.
| #define CRANK_RUN_HYSTER 15 |
| BEGIN_LTO_ALWAYS_INLINE | ( | void | ) |
Speeduino main loop.
Main loop chores (roughly in the order that they are performed):
single byte variable currentStatus.LOOP_TIMER plays a big part here as:
Sometimes loop() is inlined by LTO & sometimes not When not inlined, there is a huge difference in stack usage: 60+ bytes That eats into available RAM. Adding attribute((always_inline)) forces the LTO process to inline.
Since the function is declared in an Arduino header, we can't change it to inline, so we need to suppress the resulting warning.

|
inlinestatic |
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.


|
inlinestatic |
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).


|
inlinestatic |

|
static |


| void setup | ( | void | ) |

|
constexpr |