rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
default_cranking.cpp
Go to the documentation of this file.
1#include "pch.h"
2
3#include "defaults.h"
4#include "table_helper.h"
5
8
9 // Fuel
11
12 // Ignition
13 engineConfiguration->ignitionDwellForCrankingMs = DEFAULT_CRANKING_DWELL_MS;
14 engineConfiguration->crankingTimingAngle = DEFAULT_CRANKING_ANGLE;
15
16 // IAC
18 // should be 100 once tune is better
20 setLinearCurve(config->afterCrankingIACtaperDurationBins, CLT_CURVE_RANGE_FROM, 100, 1);
21
23
24 // After start enrichment
25#if !EFI_UNIT_TEST
26 // don't set this for unit tests, as it makes things more complicated to test
27 setLinearCurve(config->postCrankingCLTBins, /*from*/-20, /*to*/80, 20);
28 setLinearCurve(config->postCrankingDurationBins, /*from*/0, /*to*/150, 40);
30#endif
31
32 setLinearCurve(config->crankingTpsCoef, /*from*/1, /*to*/1, 1);
34
35 setLinearCurve(config->cltCrankingCorrBins, CLT_CURVE_RANGE_FROM, 100, 1);
36 setLinearCurve(config->cltCrankingCorr, 50, 50, 1); // now as % of idle valve/etb
37
38#if CRANKING_CURVE_SIZE == 8
39 // Cranking temperature compensation
40 static const float crankingCoef[] = {
41 2.8,
42 2.2,
43 1.8,
44 1.55,
45 1.3,
46 1.1,
47 1.0,
48 1.0
49 };
50 copyArray(config->crankingFuelCoef, crankingCoef);
51 copyArray(config->crankingFuelCoefE100, crankingCoef);
52
53 // Deg C
54 static const float crankingBins[] = {
55 -20,
56 -10,
57 5,
58 20,
59 35,
60 50,
61 65,
62 90
63 };
64 copyArray(config->crankingFuelBins, crankingBins);
65#endif
66 // Cranking cycle compensation
67
70
71 // X values are simply counting up cycle number starting at 1
72 for (size_t i = 0; i < efi::size(config->crankingCycleBins); i++) {
73 config->crankingCycleBins[i] = i + 1;
74 }
75
76 // Cranking ignition timing
78
79 static const float advanceBins[] = { 0, 200, 400, 1000 };
80 copyArray(config->crankingAdvanceBins, advanceBins);
81
83}
void setDefaultCranking()
static constexpr persistent_config_s * config
static constexpr engine_configuration_s * engineConfiguration
uint16_t afterCrankingIACtaperDuration[CLT_CRANKING_TAPER_CURVE_SIZE]
float crankingCycleBaseFuel[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]
scaled_channel< int16_t, 100, 1 > crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]
float postCrankingFactor[CRANKING_ENRICH_CLT_COUNT][CRANKING_ENRICH_COUNT]
float afterCrankingIACtaperDurationBins[CLT_CRANKING_TAPER_CURVE_SIZE]
scaled_channel< uint16_t, 100, 1 > crankingFuelCoefE100[CRANKING_CURVE_SIZE]
uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]
constexpr void setTable(TElement(&dest)[N][M], const VElement value)
void setLinearCurve(TValue(&array)[TSize], float from, float to, float precision=0.01f)
void setArrayValues(TValue(&array)[TSize], float value)