auto begin

This commit is contained in:
DashyFox 2025-02-25 18:05:10 +03:00
parent aa0b478229
commit 6ba8fdffe4
2 changed files with 13 additions and 15 deletions

View File

@ -41,19 +41,17 @@ IR_Encoder::IR_Encoder(uint8_t pin, uint16_t addr, IR_DecoderRaw *decPair, bool
} }
}; };
HardwareTimer IR_Encoder::IR_Timer; 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 Encoder_ISR(){
// IR_Encoder::isr(); void IR_Encoder::begin(HardwareTimer* timer, uint8_t channel, IRQn_Type IRQn, uint8_t priority){
// } IR_Timer = timer;
void IR_Encoder::begin(HardwareTimer timer, uint8_t channel, IRQn_Type IRQn){ if(IR_Timer == nullptr) return;
//TODO: check std::bind isr func IR_Timer->setOverflow(carrierFrec * 2, HERTZ_FORMAT);
// IR_Timer = timer; IR_Timer->attachInterrupt(channel, IR_Encoder::isr);
// IR_Timer.setOverflow(carrierFrec * 2, HERTZ_FORMAT); NVIC_SetPriority(IRQn, priority);
// IR_Timer.attachInterrupt(channel, Encoder_ISR); IR_Timer->resume();
// NVIC_SetPriority(IRQn, 0);
// IR_Timer.resume();
} }

View File

@ -11,7 +11,7 @@ class IR_Encoder : public IR_FOX
static IR_Encoder *last; static IR_Encoder *last;
IR_Encoder *next; IR_Encoder *next;
public: public:
static HardwareTimer IR_Timer; static HardwareTimer* IR_Timer;
private: private:
// uint16_t id; /// @brief Адрес передатчика // uint16_t id; /// @brief Адрес передатчика
public: public:
@ -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); static void begin(HardwareTimer* IR_Timer, uint8_t channel, IRQn_Type IRQn, uint8_t priority);
static HardwareTimer* get_IR_Timer(); static HardwareTimer* get_IR_Timer();
void enable(); void enable();
@ -46,9 +46,9 @@ public:
~IR_Encoder(); ~IR_Encoder();
volatile bool ir_out_virtual; volatile bool ir_out_virtual;
void _isr();
private: private:
void _sendBack(bool isAdressed, uint16_t addrTo, uint8_t *data, uint8_t len); void _sendBack(bool isAdressed, uint16_t addrTo, uint8_t *data, uint8_t len);
void _isr();
void setDecoder_isSending(); void setDecoder_isSending();
void sendByte(uint8_t byte, bool *prev, bool LOW_FIRST); void sendByte(uint8_t byte, bool *prev, bool LOW_FIRST);