28 constexpr auto BUS_CLOCK = 150U;
29#elif F_CPU == 528000000
31 constexpr auto BUS_CLOCK = 132U;
32#elif F_CPU == 450000000
34 constexpr auto BUS_CLOCK = 150U;
35#elif F_CPU == 396000000
37 constexpr auto BUS_CLOCK = 132U;
38#elif F_CPU == 150000000
40 constexpr auto BUS_CLOCK = 75U;
42 #error Unsupported CPU frequency.
46 constexpr auto TICK_RESOLUTION = (1U<<7U)/(
double)BUS_CLOCK;
49 constexpr uint32_t TICK_CONVERTER_PRECISION = 6UL;
55 constexpr uint32_t MULTIPLIER = (uint32_t)((1UL<<TICK_CONVERTER_PRECISION)/TICK_RESOLUTION);
56 return (
COMPARE_TYPE)((micros * MULTIPLIER) >> TICK_CONVERTER_PRECISION);
62 constexpr uint32_t MULTIPLIER = (uint32_t)((1UL<<TICK_CONVERTER_PRECISION)*TICK_RESOLUTION);
63 return (ticks * MULTIPLIER) >> TICK_CONVERTER_PRECISION;
66#define TS_SERIAL_BUFFER_SIZE 517
67#define FPU_MAX_SIZE 32
68#define BOARD_MAX_DIGITAL_PINS 54
69#define BOARD_MAX_IO_PINS 54
70#define BOARD_MAX_ADC_PINS 17
73#define RTC_LIB_H "TimeLib.h"
74#define SD_CONFIG SdioConfig(FIFO_SDIO)
107#define FUEL1_COUNTER TMR1_CNTR0
108#define FUEL2_COUNTER TMR1_CNTR1
109#define FUEL3_COUNTER TMR1_CNTR2
110#define FUEL4_COUNTER TMR1_CNTR3
111#define FUEL5_COUNTER TMR3_CNTR0
112#define FUEL6_COUNTER TMR3_CNTR1
113#define FUEL7_COUNTER TMR3_CNTR2
114#define FUEL8_COUNTER TMR3_CNTR3
116#define IGN1_COUNTER TMR2_CNTR0
117#define IGN2_COUNTER TMR2_CNTR1
118#define IGN3_COUNTER TMR2_CNTR2
119#define IGN4_COUNTER TMR2_CNTR3
120#define IGN5_COUNTER TMR4_CNTR0
121#define IGN6_COUNTER TMR4_CNTR1
122#define IGN7_COUNTER TMR4_CNTR2
123#define IGN8_COUNTER TMR4_CNTR3
125#define FUEL1_COMPARE TMR1_COMP10
126#define FUEL2_COMPARE TMR1_COMP11
127#define FUEL3_COMPARE TMR1_COMP12
128#define FUEL4_COMPARE TMR1_COMP13
129#define FUEL5_COMPARE TMR3_COMP10
130#define FUEL6_COMPARE TMR3_COMP11
131#define FUEL7_COMPARE TMR3_COMP12
132#define FUEL8_COMPARE TMR3_COMP13
134#define IGN1_COMPARE TMR2_COMP10
135#define IGN2_COMPARE TMR2_COMP11
136#define IGN3_COMPARE TMR2_COMP12
137#define IGN4_COMPARE TMR2_COMP13
138#define IGN5_COMPARE TMR4_COMP10
139#define IGN6_COMPARE TMR4_COMP11
140#define IGN7_COMPARE TMR4_COMP12
141#define IGN8_COMPARE TMR4_COMP13
143static inline void FUEL1_TIMER_ENABLE(
void) {TMR1_CSCTRL0 &= ~TMR_CSCTRL_TCF1; TMR1_CSCTRL0 |= TMR_CSCTRL_TCF1EN;}
144static inline void FUEL2_TIMER_ENABLE(
void) {TMR1_CSCTRL1 &= ~TMR_CSCTRL_TCF1; TMR1_CSCTRL1 |= TMR_CSCTRL_TCF1EN;}
145static inline void FUEL3_TIMER_ENABLE(
void) {TMR1_CSCTRL2 &= ~TMR_CSCTRL_TCF1; TMR1_CSCTRL2 |= TMR_CSCTRL_TCF1EN;}
146static inline void FUEL4_TIMER_ENABLE(
void) {TMR1_CSCTRL3 &= ~TMR_CSCTRL_TCF1; TMR1_CSCTRL3 |= TMR_CSCTRL_TCF1EN;}
147static inline void FUEL5_TIMER_ENABLE(
void) {TMR3_CSCTRL0 &= ~TMR_CSCTRL_TCF1; TMR3_CSCTRL0 |= TMR_CSCTRL_TCF1EN;}
148static inline void FUEL6_TIMER_ENABLE(
void) {TMR3_CSCTRL1 &= ~TMR_CSCTRL_TCF1; TMR3_CSCTRL1 |= TMR_CSCTRL_TCF1EN;}
149static inline void FUEL7_TIMER_ENABLE(
void) {TMR3_CSCTRL2 &= ~TMR_CSCTRL_TCF1; TMR3_CSCTRL2 |= TMR_CSCTRL_TCF1EN;}
150static inline void FUEL8_TIMER_ENABLE(
void) {TMR3_CSCTRL3 &= ~TMR_CSCTRL_TCF1; TMR3_CSCTRL3 |= TMR_CSCTRL_TCF1EN;}
161static inline void IGN1_TIMER_ENABLE(
void) {TMR2_CSCTRL0 &= ~TMR_CSCTRL_TCF1; TMR2_CSCTRL0 |= TMR_CSCTRL_TCF1EN;}
162static inline void IGN2_TIMER_ENABLE(
void) {TMR2_CSCTRL1 &= ~TMR_CSCTRL_TCF1; TMR2_CSCTRL1 |= TMR_CSCTRL_TCF1EN;}
163static inline void IGN3_TIMER_ENABLE(
void) {TMR2_CSCTRL2 &= ~TMR_CSCTRL_TCF1; TMR2_CSCTRL2 |= TMR_CSCTRL_TCF1EN;}
164static inline void IGN4_TIMER_ENABLE(
void) {TMR2_CSCTRL3 &= ~TMR_CSCTRL_TCF1; TMR2_CSCTRL3 |= TMR_CSCTRL_TCF1EN;}
165static inline void IGN5_TIMER_ENABLE(
void) {TMR4_CSCTRL0 &= ~TMR_CSCTRL_TCF1; TMR4_CSCTRL0 |= TMR_CSCTRL_TCF1EN;}
166static inline void IGN6_TIMER_ENABLE(
void) {TMR4_CSCTRL1 &= ~TMR_CSCTRL_TCF1; TMR4_CSCTRL1 |= TMR_CSCTRL_TCF1EN;}
167static inline void IGN7_TIMER_ENABLE(
void) {TMR4_CSCTRL2 &= ~TMR_CSCTRL_TCF1; TMR4_CSCTRL2 |= TMR_CSCTRL_TCF1EN;}
168static inline void IGN8_TIMER_ENABLE(
void) {TMR4_CSCTRL3 &= ~TMR_CSCTRL_TCF1; TMR4_CSCTRL3 |= TMR_CSCTRL_TCF1EN;}
183#define ENABLE_BOOST_TIMER() PIT_TCTRL1 |= PIT_TCTRL_TEN
184#define DISABLE_BOOST_TIMER() PIT_TCTRL1 &= ~PIT_TCTRL_TEN
186#define ENABLE_VVT_TIMER() PIT_TCTRL2 |= PIT_TCTRL_TEN
187#define DISABLE_VVT_TIMER() PIT_TCTRL2 &= ~PIT_TCTRL_TEN
190#define ENABLE_FAN_TIMER() TMR3_CSCTRL1 |= TMR_CSCTRL_TCF2EN
191#define DISABLE_FAN_TIMER() TMR3_CSCTRL1 &= ~TMR_CSCTRL_TCF2EN
193#define BOOST_TIMER_COMPARE PIT_LDVAL1
194#define BOOST_TIMER_COUNTER 0
195#define VVT_TIMER_COMPARE PIT_LDVAL2
196#define VVT_TIMER_COUNTER 0
199#define FAN_TIMER_COMPARE TMR3_COMP22
200#define FAN_TIMER_COUNTER TMR3_CNTR1
206#define IDLE_COUNTER 0
207#define IDLE_COMPARE PIT_LDVAL0
209#define IDLE_TIMER_ENABLE() PIT_TCTRL0 |= PIT_TCTRL_TEN
210#define IDLE_TIMER_DISABLE() PIT_TCTRL0 &= ~PIT_TCTRL_TEN
216#define SECONDARY_SERIAL_T HardwareSerial
218#include <FlexCAN_T4.h>
219#define NATIVE_CAN_AVAILABLE
uint16_t COMPARE_TYPE
The timer overflow type.
Definition board_avr2560.h:33
static void IGN1_TIMER_ENABLE(void)
Definition board_teensy41.h:161
static void IGN3_TIMER_DISABLE(void)
Definition board_teensy41.h:172
static void IGN1_TIMER_DISABLE(void)
Definition board_teensy41.h:170
static void FUEL2_TIMER_ENABLE(void)
Definition board_teensy41.h:144
static void FUEL1_TIMER_DISABLE(void)
Definition board_teensy41.h:152
static void FUEL4_TIMER_DISABLE(void)
Definition board_teensy41.h:155
static void IGN3_TIMER_ENABLE(void)
Definition board_teensy41.h:163
static void FUEL4_TIMER_ENABLE(void)
Definition board_teensy41.h:146
bool pinIsSerial(uint8_t)
static void FUEL5_TIMER_DISABLE(void)
Definition board_teensy41.h:156
static void FUEL2_TIMER_DISABLE(void)
Definition board_teensy41.h:153
static void FUEL3_TIMER_DISABLE(void)
Definition board_teensy41.h:154
static void IGN5_TIMER_ENABLE(void)
Definition board_teensy41.h:165
static bool pinIsReserved(uint8_t pin)
Definition board_teensy41.h:79
static void FUEL7_TIMER_DISABLE(void)
Definition board_teensy41.h:158
constexpr uint16_t BLOCKING_FACTOR
Definition board_teensy41.h:75
static void FUEL7_TIMER_ENABLE(void)
Definition board_teensy41.h:149
static void FUEL3_TIMER_ENABLE(void)
Definition board_teensy41.h:145
static void FUEL6_TIMER_ENABLE(void)
Definition board_teensy41.h:148
static void IGN6_TIMER_DISABLE(void)
Definition board_teensy41.h:175
static constexpr uint32_t ticksToMicros(COMPARE_TYPE ticks)
Convert timer ticks to µS.
Definition board_teensy41.h:60
static void FUEL6_TIMER_DISABLE(void)
Definition board_teensy41.h:157
static void IGN7_TIMER_DISABLE(void)
Definition board_teensy41.h:176
static void IGN2_TIMER_DISABLE(void)
Definition board_teensy41.h:171
static void IGN8_TIMER_DISABLE(void)
Definition board_teensy41.h:177
static void IGN6_TIMER_ENABLE(void)
Definition board_teensy41.h:166
static void IGN2_TIMER_ENABLE(void)
Definition board_teensy41.h:162
static void IGN8_TIMER_ENABLE(void)
Definition board_teensy41.h:168
static void FUEL8_TIMER_DISABLE(void)
Definition board_teensy41.h:159
static void IGN4_TIMER_ENABLE(void)
Definition board_teensy41.h:164
static void IGN7_TIMER_ENABLE(void)
Definition board_teensy41.h:167
static void IGN5_TIMER_DISABLE(void)
Definition board_teensy41.h:174
static void IGN4_TIMER_DISABLE(void)
Definition board_teensy41.h:173
static void FUEL1_TIMER_ENABLE(void)
Definition board_teensy41.h:143
static void FUEL8_TIMER_ENABLE(void)
Definition board_teensy41.h:150
static void FUEL5_TIMER_ENABLE(void)
Definition board_teensy41.h:147
constexpr uint16_t TABLE_BLOCKING_FACTOR
Definition board_teensy41.h:76
static constexpr COMPARE_TYPE uS_TO_TIMER_COMPARE(uint32_t micros)
Convert µS to timer ticks.
Definition board_teensy41.h:53