HardwareTimer auto set support

This commit is contained in:
DashyFox 2025-03-06 17:05:37 +03:00
parent 6ba8fdffe4
commit 2d839d3ff8
2 changed files with 3 additions and 3 deletions

View File

@ -45,11 +45,11 @@ HardwareTimer* IR_Encoder::IR_Timer = nullptr;
inline HardwareTimer* IR_Encoder::get_IR_Timer(){return IR_Encoder::IR_Timer;} inline HardwareTimer* IR_Encoder::get_IR_Timer(){return IR_Encoder::IR_Timer;}
void IR_Encoder::begin(HardwareTimer* timer, uint8_t channel, IRQn_Type IRQn, uint8_t priority){ void IR_Encoder::begin(HardwareTimer* timer, uint8_t channel, IRQn_Type IRQn, uint8_t priority, void(*isrCallback)()){
IR_Timer = timer; IR_Timer = timer;
if(IR_Timer == nullptr) return; if(IR_Timer == nullptr) return;
IR_Timer->setOverflow(carrierFrec * 2, HERTZ_FORMAT); IR_Timer->setOverflow(carrierFrec * 2, HERTZ_FORMAT);
IR_Timer->attachInterrupt(channel, IR_Encoder::isr); IR_Timer->attachInterrupt(channel, (isrCallback == nullptr ? IR_Encoder::isr : isrCallback));
NVIC_SetPriority(IRQn, priority); NVIC_SetPriority(IRQn, priority);
IR_Timer->resume(); IR_Timer->resume();
} }

View File

@ -21,7 +21,7 @@ public:
/// @param decPair Приёмник, для которого отключается приём в момент передачи передатчиком /// @param decPair Приёмник, для которого отключается приём в момент передачи передатчиком
IR_Encoder(uint8_t pin, uint16_t addr = 0, IR_DecoderRaw *decPair = nullptr, bool autoHandle = true); IR_Encoder(uint8_t pin, uint16_t addr = 0, IR_DecoderRaw *decPair = nullptr, bool autoHandle = true);
static void isr(); static void isr();
static void begin(HardwareTimer* IR_Timer, uint8_t channel, IRQn_Type IRQn, uint8_t priority); static void begin(HardwareTimer* timer, uint8_t channel, IRQn_Type IRQn, uint8_t priority, void(*isrCallback)() = nullptr);
static HardwareTimer* get_IR_Timer(); static HardwareTimer* get_IR_Timer();
void enable(); void enable();