17 #ifndef SRC_SDI12_BOARDS_H_
18 #define SRC_SDI12_BOARDS_H_
22 #if defined(ESP32) || defined(ESP8266)
63 #if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || \
64 defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || \
65 defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644__) || \
66 defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega1284__)
71 #define TIMER_IN_USE_STR "TCNT1"
77 #if F_CPU == 16000000L
81 #define PRESCALE_IN_USE_STR "1024"
89 #define TICKS_PER_BIT 13
95 #define BITS_PER_TICK_Q10 79
102 #define RX_WINDOW_FUDGE 2
104 #elif F_CPU == 12000000L
108 #define PRESCALE_IN_USE_STR "1024"
116 #define TICKS_PER_BIT 10
122 #define BITS_PER_TICK_Q10 105
129 #define RX_WINDOW_FUDGE 2
131 #elif F_CPU == 8000000L
135 #define PRESCALE_IN_USE_STR "256"
143 #define TICKS_PER_BIT 26
149 #define BITS_PER_TICK_Q10 39
156 #define RX_WINDOW_FUDGE 10
171 #elif defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
176 #define TIMER_IN_USE_STR "TCNT1"
182 #if F_CPU == 16000000L
186 #define PRESCALE_IN_USE_STR "1024"
194 #define TICKS_PER_BIT 13
200 #define BITS_PER_TICK_Q10 79
207 #define RX_WINDOW_FUDGE 2
209 #elif F_CPU == 8000000L
210 #define PRESCALE_IN_USE_STR "512"
218 #define TICKS_PER_BIT 13
224 #define BITS_PER_TICK_Q10 79
231 #define RX_WINDOW_FUDGE 5
238 #elif defined(ARDUINO_AVR_YUN) || defined(ARDUINO_AVR_LEONARDO) || \
239 defined(__AVR_ATmega32U4__)
244 #define TIMER_IN_USE_STR "TCNT4"
250 #if F_CPU == 16000000L
254 #define PRESCALE_IN_USE_STR "1024"
262 #define TICKS_PER_BIT 13
268 #define BITS_PER_TICK_Q10 79
275 #define RX_WINDOW_FUDGE 2
277 #elif F_CPU == 8000000L
281 #define PRESCALE_IN_USE_STR "512"
289 #define TICKS_PER_BIT 13
295 #define BITS_PER_TICK_Q10 79
302 #define RX_WINDOW_FUDGE 5
309 #elif defined(ARDUINO_SAMD_ZERO) || defined(ARDUINO_ARCH_SAMD) || \
310 defined(__SAMD21G18A__) || defined(__SAMD21J18A__) || defined(__SAMD21E18A__)
315 #define TIMER_IN_USE_STR "GCLK4-TC3"
319 #define TCNTX REG_TC3_COUNT8_COUNT
324 #define PRESCALE_IN_USE_STR "3x1024"
333 #define TICKS_PER_BIT 13
339 #define BITS_PER_TICK_Q10 79
346 #define RX_WINDOW_FUDGE 2
350 #elif defined(ESP32) || defined(ESP8266)
374 #define TICKS_PER_BIT 13
380 #define BITS_PER_TICK_Q10 79
387 #define RX_WINDOW_FUDGE 2
391 #error "Please define your board timer and pins"
uint8_t sdi12timer_t
Definition: SDI12_boards.h:27
The class used to define the processor timer for the SDI-12 serial emulation.
Definition: SDI12_boards.h:33
void resetSDI12TimerPrescale(void)
Reset the processor timer prescaler to whatever it was prior to being adjusted for this library.
void configSDI12TimerPrescale(void)
Set the processor timer prescaler such that the 10 bits of an SDI-12 character are divided into the r...
SDI12Timer()
Construct a new SDI12Timer.
Definition: SDI12_boards.cpp:21