7 #define READ_PRI_TRIGGER() ((*triggerPri_pin_port & triggerPri_pin_mask) ? true : false)
8 #define READ_SEC_TRIGGER() ((*triggerSec_pin_port & triggerSec_pin_mask) ? true : false)
9 #define READ_THIRD_TRIGGER() ((*triggerThird_pin_port & triggerThird_pin_mask) ? true : false)
11 #define READ_PRI_TRIGGER() digitalRead(pinTrigger)
12 #define READ_SEC_TRIGGER() digitalRead(pinTrigger2)
13 #define READ_THIRD_TRIGGER() digitalRead(pinTrigger3)
16#define DECODER_MISSING_TOOTH 0
17#define DECODER_BASIC_DISTRIBUTOR 1
18#define DECODER_DUAL_WHEEL 2
22#define DECODER_JEEP2000 6
23#define DECODER_AUDI135 7
24#define DECODER_HONDA_D17 8
25#define DECODER_MIATA_9905 9
26#define DECODER_MAZDA_AU 10
27#define DECODER_NON360 11
28#define DECODER_NISSAN_360 12
29#define DECODER_SUBARU_67 13
30#define DECODER_DAIHATSU_PLUS1 14
31#define DECODER_HARLEY 15
32#define DECODER_36_2_2_2 16
33#define DECODER_36_2_1 17
34#define DECODER_420A 18
35#define DECODER_WEBER 19
36#define DECODER_ST170 20
37#define DECODER_DRZ400 21
39#define DECODER_VMAX 23
40#define DECODER_RENIX 24
41#define DECODER_ROVERMEMS 25
42#define DECODER_SUZUKI_K6A 26
43#define DECODER_HONDA_J32 27
45#define BIT_DECODER_2ND_DERIV 0
46#define BIT_DECODER_IS_SEQUENTIAL 1
47#define BIT_DECODER_UNUSED1 2
48#define BIT_DECODER_HAS_SECONDARY 3
49#define BIT_DECODER_HAS_FIXED_CRANKING 4
50#define BIT_DECODER_VALID_TRIGGER 5
51#define BIT_DECODER_TOOTH_ANG_CORRECT 6
66#define ANGLE_FILTER(input, alpha, prior) (((long)(input) * (256 - (alpha)) + ((long)(prior) * (alpha)))) >> 8
270extern volatile unsigned long curTime;
271extern volatile unsigned long curGap;
272extern volatile unsigned long curTime2;
273extern volatile unsigned long curGap2;
274extern volatile unsigned long lastGap;
317#define CRANK_SPEED 0U
321#define TOOTH_CAM_SECONDARY 1
322#define TOOTH_CAM_TERTIARY 2
325#define ID_TOOTH_PATTERN 0
void(* triggerSetEndTeeth)(void)
Pointer to the getCrank Angle function (Gets pointed to the relevant decoder)
Definition decoders.cpp:55
volatile unsigned long toothLastToothTime
Definition decoders.cpp:73
volatile unsigned long toothLastMinusOneSecToothTime
Definition decoders.cpp:77
byte checkSyncToothCount
Definition decoders.cpp:105
unsigned int triggerSecFilterTime_duration
Definition decoders.cpp:103
void triggerSec_DRZ400(void)
Definition decoders.cpp:4472
volatile unsigned long curGap2
Definition decoders.cpp:63
unsigned long lastCrankAngleCalc
Definition decoders.cpp:107
uint16_t ignition8EndTooth
Definition decoders.cpp:117
unsigned long MAX_STALL_TIME
Definition decoders.cpp:69
volatile unsigned long toothLastSecToothTime
Definition decoders.cpp:74
unsigned long lastVVTtime
Definition decoders.cpp:108
volatile unsigned long triggerSecFilterTime
Definition decoders.cpp:98
volatile unsigned long targetGap
Definition decoders.cpp:67
volatile uint8_t decoderState
Definition decoders.cpp:101
volatile unsigned long curTime2
Definition decoders.cpp:62
int16_t toothAngles[24]
Definition decoders.cpp:119
volatile unsigned long toothSystemLastToothTime
Definition decoders.cpp:72
void(* triggerSecondaryHandler)(void)
Pointer for the trigger function (Gets pointed to the relevant decoder)
Definition decoders.cpp:51
volatile unsigned long lastGap
Definition decoders.cpp:66
uint16_t ignition1EndTooth
Definition decoders.cpp:110
void triggerSetup_DRZ400(void)
Definition decoders.cpp:4458
volatile unsigned long secondaryLastToothTime1
Definition decoders.cpp:90
unsigned long elapsedTime
Definition decoders.cpp:106
volatile uint16_t triggerToothAngle
Definition decoders.cpp:104
volatile byte toothSystemCount
Definition decoders.cpp:71
void(* triggerTertiaryHandler)(void)
Pointer for the secondary trigger function (Gets pointed to the relevant decoder)
Definition decoders.cpp:52
volatile unsigned long curTime
Definition decoders.cpp:60
volatile uint16_t toothCurrentCount
Definition decoders.cpp:70
uint16_t ignition2EndTooth
Definition decoders.cpp:111
volatile unsigned long secondaryLastToothTime
Definition decoders.cpp:89
volatile unsigned long toothOneTime
Definition decoders.cpp:82
volatile unsigned int secondaryToothCount
Definition decoders.cpp:87
volatile unsigned long toothLastMinusOneToothTime
Definition decoders.cpp:76
int(* getCrankAngle)(void)
Pointer to the getRPM function (Gets pointed to the relevant decoder)
Definition decoders.cpp:54
uint16_t triggerActualTeeth
Definition decoders.cpp:96
volatile unsigned long curGap
Definition decoders.cpp:61
volatile unsigned long targetGap2
Definition decoders.cpp:80
void(* triggerHandler)(void)
Definition decoders.cpp:50
uint16_t ignition7EndTooth
Definition decoders.cpp:116
uint16_t ignition6EndTooth
Definition decoders.cpp:115
uint16_t(* getRPM)(void)
Pointer for the tertiary trigger function (Gets pointed to the relevant decoder)
Definition decoders.cpp:53
uint16_t ignition3EndTooth
Definition decoders.cpp:112
volatile unsigned long triggerFilterTime
Definition decoders.cpp:97
volatile unsigned long toothLastThirdToothTime
Definition decoders.cpp:75
uint16_t ignition4EndTooth
Definition decoders.cpp:113
volatile bool revolutionOne
Definition decoders.cpp:84
uint16_t ignition5EndTooth
Definition decoders.cpp:114
volatile unsigned long toothOneMinusOneTime
Definition decoders.cpp:83
int getCrankAngle_SuzukiK6A(void)
Definition decoders.cpp:5874
void triggerPri_SuzukiK6A(void)
Definition decoders.cpp:5654
void triggerSetup_SuzukiK6A(void)
Definition decoders.cpp:5608
uint16_t getRPM_SuzukiK6A(void)
Definition decoders.cpp:5861
void triggerSetEndTeeth_SuzukiK6A(void)
Definition decoders.cpp:5932
void triggerSec_SuzukiK6A(void)
Definition decoders.cpp:5856
void triggerSec_ThirtySixMinus21(void)
Definition decoders.cpp:3978
void triggerSetEndTeeth_ThirtySixMinus21(void)
Definition decoders.cpp:4007
int getCrankAngle_ThirtySixMinus21(void)
Definition decoders.cpp:4001
uint16_t getRPM_ThirtySixMinus21(void)
Definition decoders.cpp:3983
void triggerSetup_ThirtySixMinus21(void)
Definition decoders.cpp:3892
void triggerPri_ThirtySixMinus21(void)
Definition decoders.cpp:3908
void triggerSec_ThirtySixMinus222(void)
Definition decoders.cpp:3819
uint16_t getRPM_ThirtySixMinus222(void)
Definition decoders.cpp:3824
void triggerSetEndTeeth_ThirtySixMinus222(void)
Definition decoders.cpp:3853
int getCrankAngle_ThirtySixMinus222(void)
Definition decoders.cpp:3847
void triggerSetup_ThirtySixMinus222(void)
Definition decoders.cpp:3712
void triggerPri_ThirtySixMinus222(void)
Definition decoders.cpp:3728
void triggerPri_Audi135(void)
Definition decoders.cpp:2067
void triggerSetEndTeeth_Audi135(void)
Definition decoders.cpp:2162
int getCrankAngle_Audi135(void)
Definition decoders.cpp:2130
void triggerSec_Audi135(void)
Definition decoders.cpp:2105
void triggerSetup_Audi135(void)
Definition decoders.cpp:2053
uint16_t getRPM_Audi135(void)
Definition decoders.cpp:2125
void triggerPri_Daihatsu(void)
Definition decoders.cpp:3437
void triggerSetEndTeeth_Daihatsu(void)
Definition decoders.cpp:3558
int getCrankAngle_Daihatsu(void)
Definition decoders.cpp:3533
void triggerSec_Daihatsu(void)
Definition decoders.cpp:3505
void triggerSetup_Daihatsu(void)
Definition decoders.cpp:3407
uint16_t getRPM_Daihatsu(void)
Definition decoders.cpp:3507
uint16_t getRPM_BasicDistributor(void)
Definition decoders.cpp:1133
void triggerSec_BasicDistributor(void)
Definition decoders.cpp:1132
void triggerSetup_BasicDistributor(void)
Definition decoders.cpp:1054
void triggerSetEndTeeth_BasicDistributor(void)
Definition decoders.cpp:1179
int getCrankAngle_BasicDistributor(void)
Definition decoders.cpp:1152
void triggerPri_BasicDistributor(void)
Definition decoders.cpp:1077
void triggerSetup_420a(void)
Definition decoders.cpp:4023
uint16_t getRPM_420a(void)
Definition decoders.cpp:4139
int getCrankAngle_420a(void)
Definition decoders.cpp:4154
void triggerSetEndTeeth_420a(void)
Definition decoders.cpp:4179
void triggerSec_420a(void)
Definition decoders.cpp:4094
void triggerPri_420a(void)
Definition decoders.cpp:4055
void triggerPri_DualWheel(void)
Definition decoders.cpp:881
int getCrankAngle_DualWheel(void)
Definition decoders.cpp:978
void triggerSec_DualWheel(void)
Definition decoders.cpp:924
void triggerSetEndTeeth_DualWheel(void)
Definition decoders.cpp:1022
void triggerSetup_DualWheel(void)
Definition decoders.cpp:861
uint16_t getRPM_DualWheel(void)
Definition decoders.cpp:958
void triggerSetEndTeeth_FordST170(void)
Definition decoders.cpp:4443
void triggerSetup_FordST170(void)
Definition decoders.cpp:4311
void triggerSec_FordST170(void)
Definition decoders.cpp:4339
int getCrankAngle_FordST170(void)
Definition decoders.cpp:4404
uint16_t getRPM_FordST170(void)
Definition decoders.cpp:4386
void triggerPri_GM7X(void)
Definition decoders.cpp:1269
void triggerSetup_GM7X(void)
Definition decoders.cpp:1260
int getCrankAngle_GM7X(void)
Definition decoders.cpp:1333
void triggerSetEndTeeth_GM7X(void)
Definition decoders.cpp:1370
void triggerSec_GM7X(void)
Definition decoders.cpp:1328
uint16_t getRPM_GM7X(void)
Definition decoders.cpp:1329
void triggerSec_24X(void)
Definition decoders.cpp:1896
uint16_t getRPM_24X(void)
Definition decoders.cpp:1902
void triggerSetup_24X(void)
Definition decoders.cpp:1828
void triggerPri_24X(void)
Definition decoders.cpp:1864
int getCrankAngle_24X(void)
Definition decoders.cpp:1906
void triggerSetEndTeeth_24X(void)
Definition decoders.cpp:1936
int getCrankAngle_Harley(void)
Definition decoders.cpp:3663
void triggerSetEndTeeth_Harley(void)
Definition decoders.cpp:3695
void triggerSec_Harley(void)
Definition decoders.cpp:3622
uint16_t getRPM_Harley(void)
Definition decoders.cpp:3629
void triggerSetup_Harley(void)
Definition decoders.cpp:3569
void triggerPri_Harley(void)
Definition decoders.cpp:3580
void triggerPri_HondaD17(void)
Definition decoders.cpp:2180
uint16_t getRPM_HondaD17(void)
Definition decoders.cpp:2222
int getCrankAngle_HondaD17(void)
Definition decoders.cpp:2226
void triggerSec_HondaD17(void)
Definition decoders.cpp:2221
void triggerSetEndTeeth_HondaD17(void)
Definition decoders.cpp:2259
void triggerSetup_HondaD17(void)
Definition decoders.cpp:2171
int getCrankAngle_HondaJ32(void)
Definition decoders.cpp:2368
void triggerSetup_HondaJ32(void)
Definition decoders.cpp:2281
uint16_t getRPM_HondaJ32(void)
Definition decoders.cpp:2363
void triggerPri_HondaJ32(void)
Definition decoders.cpp:2299
void triggerSetEndTeeth_HondaJ32(void)
Definition decoders.cpp:2402
void triggerSec_HondaJ32(void)
Definition decoders.cpp:2358
void triggerSec_Jeep2000(void)
Definition decoders.cpp:2006
void triggerSetEndTeeth_Jeep2000(void)
Definition decoders.cpp:2042
uint16_t getRPM_Jeep2000(void)
Definition decoders.cpp:2012
void triggerPri_Jeep2000(void)
Definition decoders.cpp:1973
int getCrankAngle_Jeep2000(void)
Definition decoders.cpp:2016
void triggerSetup_Jeep2000(void)
Definition decoders.cpp:1949
void triggerSetEndTeeth_missingTooth(void)
Definition decoders.cpp:829
void triggerPri_missingTooth(void)
Definition decoders.cpp:526
void triggerThird_missingTooth(void)
Definition decoders.cpp:726
void triggerSec_missingTooth(void)
Definition decoders.cpp:645
uint16_t getRPM_missingTooth(void)
Definition decoders.cpp:758
int getCrankAngle_missingTooth(void)
Definition decoders.cpp:776
void triggerSetup_missingTooth(void)
Definition decoders.cpp:489
void triggerPri_4G63(void)
Definition decoders.cpp:1448
void triggerSetup_4G63(void)
Definition decoders.cpp:1394
void triggerSec_4G63(void)
Definition decoders.cpp:1636
uint16_t getRPM_4G63(void)
Definition decoders.cpp:1715
int getCrankAngle_4G63(void)
Definition decoders.cpp:1752
void triggerSetEndTeeth_4G63(void)
Definition decoders.cpp:1779
void triggerSetEndTeeth_Nissan360(void)
Definition decoders.cpp:3113
void triggerSetup_Nissan360(void)
Definition decoders.cpp:2908
void triggerSec_Nissan360(void)
Definition decoders.cpp:2963
int getCrankAngle_Nissan360(void)
Definition decoders.cpp:3083
void triggerPri_Nissan360(void)
Definition decoders.cpp:2922
uint16_t getRPM_Nissan360(void)
Definition decoders.cpp:3057
void triggerSetEndTeeth_non360(void)
Definition decoders.cpp:2898
void triggerPri_non360(void)
Definition decoders.cpp:2848
void triggerSetup_non360(void)
Definition decoders.cpp:2835
void triggerSec_non360(void)
Definition decoders.cpp:2853
int getCrankAngle_non360(void)
Definition decoders.cpp:2869
uint16_t getRPM_non360(void)
Definition decoders.cpp:2858
void triggerSetEndTeeth_Renix(void)
Definition decoders.cpp:5171
void triggerSetup_Renix(void)
Definition decoders.cpp:5049
void triggerPri_Renix(void)
Definition decoders.cpp:5085
void triggerSetEndTeeth_Subaru67(void)
Definition decoders.cpp:3360
uint16_t getRPM_Subaru67(void)
Definition decoders.cpp:3319
void triggerSetup_Subaru67(void)
Definition decoders.cpp:3133
void triggerSec_Subaru67(void)
Definition decoders.cpp:3281
void triggerPri_Subaru67(void)
Definition decoders.cpp:3162
int getCrankAngle_Subaru67(void)
Definition decoders.cpp:3332
void loggerPrimaryISR(void)
Definition decoders.cpp:210
void loggerTertiaryISR(void)
Definition decoders.cpp:269
void loggerSecondaryISR(void)
Definition decoders.cpp:244
int getCrankAngle_Vmax(void)
Definition decoders.cpp:5006
void triggerSetEndTeeth_Vmax(void)
Definition decoders.cpp:5032
void triggerSetup_Vmax(void)
Definition decoders.cpp:4847
void triggerPri_Vmax(void)
Definition decoders.cpp:4871
uint16_t getRPM_Vmax(void)
Definition decoders.cpp:4977
void triggerSec_Vmax(void)
Definition decoders.cpp:4970
void triggerPri_Webber(void)
Definition decoders.cpp:4203
void triggerSec_Webber(void)
Definition decoders.cpp:4254
void triggerSetup_RoverMEMS(void)
Definition decoders.cpp:5215
void triggerPri_RoverMEMS(void)
Definition decoders.cpp:5239
uint16_t getRPM_RoverMEMS(void)
Definition decoders.cpp:5520
void triggerSec_NGC68(void)
Definition decoders.cpp:4732
uint16_t getRPM_NGC(void)
Definition decoders.cpp:4787
void triggerSec_RoverMEMS(void)
Definition decoders.cpp:5438
void triggerPri_NGC(void)
Definition decoders.cpp:4566
void triggerSetEndTeeth_NGC(void)
Definition decoders.cpp:4821
int getCrankAngle_RoverMEMS(void)
Definition decoders.cpp:5410
void triggerSetup_NGC(void)
Definition decoders.cpp:4509
void triggerSetEndTeeth_RoverMEMS(void)
Definition decoders.cpp:5540
void triggerSec_NGC4(void)
Definition decoders.cpp:4680
static uint32_t rshift(uint32_t a)
Bitwise right shift - generic, unoptimized, case.
Definition bit_shifts.h:349
uint16_t getRPM_MazdaAU(void)
Definition decoders.cpp:2775
void triggerPri_MazdaAU(void)
Definition decoders.cpp:2706
void triggerSetEndTeeth_MazdaAU(void)
Definition decoders.cpp:2825
void triggerSec_MazdaAU(void)
Definition decoders.cpp:2743
int getCrankAngle_MazdaAU(void)
Definition decoders.cpp:2797
void triggerSetup_MazdaAU(void)
Definition decoders.cpp:2686
void triggerSetEndTeeth_Miata9905(void)
Definition decoders.cpp:2639
int getCrankAngle_Miata9905(void)
Definition decoders.cpp:2600
void triggerSec_Miata9905(void)
Definition decoders.cpp:2542
uint16_t getRPM_Miata9905(void)
Definition decoders.cpp:2568
void triggerPri_Miata9905(void)
Definition decoders.cpp:2455
void triggerSetup_Miata9905(void)
Definition decoders.cpp:2417
int getCamAngle_Miata9905(void)
Definition decoders.cpp:2628