From 352835b6f555be683ec9296607842e095e59fc66 Mon Sep 17 00:00:00 2001 From: DashyFox Date: Mon, 16 Oct 2023 11:11:23 +0300 Subject: [PATCH] Raw, test and tune --- IR_Decoder.cpp | 6 ++++-- IR_Decoder.h | 19 ++++++++++++++++++- IR_config.h | 8 ++++---- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/IR_Decoder.cpp b/IR_Decoder.cpp index 7457ac3..1c8f00f 100644 --- a/IR_Decoder.cpp +++ b/IR_Decoder.cpp @@ -199,10 +199,12 @@ void IR_Decoder::isr() { // в прерывании вызываем isr() } } else { /* riseSyncTime = bitTime; */ } // сброс тюнера frontCounter--; + //Serial.println(frontCounter); } else { if (isPreamb) {// первый фронт после + gotTune._set(riseSyncTime); } - isPreamb = false; + isPreamb = false; } // определить направление фронта @@ -241,7 +243,7 @@ void IR_Decoder::isr() { // в прерывании вызываем isr() lowCount = ceil_div(lowTime, riseTime); // предполагаемое колличество LOW битов allCount = ceil_div(risePeriod, riseTime); // предполагаемое колличество всего битов - if (highCount == 0 && highTime > riseTime / 4) { // fix короткой единицы (?)после пропуска нулей(?) + if (highCount == 0 && highTime > riseTime / 3) { // fix короткой единицы (?)после пропуска нулей(?) highCount++; errorCounter++; #ifdef IRDEBUG diff --git a/IR_Decoder.h b/IR_Decoder.h index fc5c558..39d629b 100644 --- a/IR_Decoder.h +++ b/IR_Decoder.h @@ -39,7 +39,7 @@ public: ////////////////////////////////////////////////////////////////////////// - class InputData : protected IR_FOX { + class InputData : protected IR_FOX { friend IR_Decoder; protected: bool _isAvaliable = false; @@ -131,10 +131,27 @@ public: } }; + class RawTune { + friend IR_Decoder; + private: + bool _isAvaliable = false; + uint16_t _tune; + public: + bool avaliable() { return _isAvaliable; }; + uint16_t getTune() { return _tune; }; + void resetAvaliable() { _isAvaliable = false; }; + private: + void _set(uint16_t val) { + _tune = val; + _isAvaliable = true; + } + }; + Data gotData; RawData gotRawData; Accept gotAccept; Request gotRequest; + RawTune gotTune; private: diff --git a/IR_config.h b/IR_config.h index 7d73518..bb1d5ef 100644 --- a/IR_config.h +++ b/IR_config.h @@ -63,7 +63,8 @@ msg type: #define bytePerPack 3 // колличество байтов в пакете #define freeFrec true -#define carrierTune 8 +#define carrierTune 4 +#define preambPulse 3 // 8 для gyverCore // 4~5 для arduino nano @@ -86,7 +87,6 @@ typedef uint16_t crc_t; #define bufferBitSizeMax (dataBitSize) // Размер буффера в битах //const auto x = bufferBitSizeMax; -#define preambPulse 3U #define preambFronts (preambPulse*2) // количество фронтов преамбулы #define carrierFrec 38000U // частота несущей @@ -97,8 +97,8 @@ typedef uint16_t crc_t; const auto _x_ = halfPeriod; // В процессе работы значения будут отклонятся в соответствии с предыдущим битом -#define bitActiveTakts 30U // длительность активной части бита в тактах -#define bitPauseTakts 7U // длительность промежутков в тактах +#define bitActiveTakts 25U // длительность единицы в тактах +#define bitPauseTakts 6U // длительность нуля в тактах #define bitTakts (bitActiveTakts+bitPauseTakts*2U) // Общая длительность бита в тактах #define bitTime (bitTakts*carrierPeriod) // Общая длительность бита