Raw, test and tune

This commit is contained in:
DashyFox 2023-10-16 11:11:23 +03:00
parent e812f97f37
commit 352835b6f5
3 changed files with 26 additions and 7 deletions

View File

@ -199,10 +199,12 @@ void IR_Decoder::isr() { // в прерывании вызываем isr()
} }
} else { /* riseSyncTime = bitTime; */ } // сброс тюнера } else { /* riseSyncTime = bitTime; */ } // сброс тюнера
frontCounter--; frontCounter--;
//Serial.println(frontCounter);
} else { } else {
if (isPreamb) {// первый фронт после if (isPreamb) {// первый фронт после
gotTune._set(riseSyncTime);
} }
isPreamb = false; isPreamb = false;
} }
// определить направление фронта // определить направление фронта
@ -241,7 +243,7 @@ void IR_Decoder::isr() { // в прерывании вызываем isr()
lowCount = ceil_div(lowTime, riseTime); // предполагаемое колличество LOW битов lowCount = ceil_div(lowTime, riseTime); // предполагаемое колличество LOW битов
allCount = ceil_div(risePeriod, riseTime); // предполагаемое колличество всего битов allCount = ceil_div(risePeriod, riseTime); // предполагаемое колличество всего битов
if (highCount == 0 && highTime > riseTime / 4) { // fix короткой единицы (?)после пропуска нулей(?) if (highCount == 0 && highTime > riseTime / 3) { // fix короткой единицы (?)после пропуска нулей(?)
highCount++; highCount++;
errorCounter++; errorCounter++;
#ifdef IRDEBUG #ifdef IRDEBUG

View File

@ -39,7 +39,7 @@ public:
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
class InputData : protected IR_FOX { class InputData : protected IR_FOX {
friend IR_Decoder; friend IR_Decoder;
protected: protected:
bool _isAvaliable = false; 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; Data gotData;
RawData gotRawData; RawData gotRawData;
Accept gotAccept; Accept gotAccept;
Request gotRequest; Request gotRequest;
RawTune gotTune;
private: private:

View File

@ -63,7 +63,8 @@ msg type:
#define bytePerPack 3 // колличество байтов в пакете #define bytePerPack 3 // колличество байтов в пакете
#define freeFrec true #define freeFrec true
#define carrierTune 8 #define carrierTune 4
#define preambPulse 3
// 8 для gyverCore // 8 для gyverCore
// 4~5 для arduino nano // 4~5 для arduino nano
@ -86,7 +87,6 @@ typedef uint16_t crc_t;
#define bufferBitSizeMax (dataBitSize) // Размер буффера в битах #define bufferBitSizeMax (dataBitSize) // Размер буффера в битах
//const auto x = bufferBitSizeMax; //const auto x = bufferBitSizeMax;
#define preambPulse 3U
#define preambFronts (preambPulse*2) // количество фронтов преамбулы #define preambFronts (preambPulse*2) // количество фронтов преамбулы
#define carrierFrec 38000U // частота несущей #define carrierFrec 38000U // частота несущей
@ -97,8 +97,8 @@ typedef uint16_t crc_t;
const auto _x_ = halfPeriod; const auto _x_ = halfPeriod;
// В процессе работы значения будут отклонятся в соответствии с предыдущим битом // В процессе работы значения будут отклонятся в соответствии с предыдущим битом
#define bitActiveTakts 30U // длительность активной части бита в тактах #define bitActiveTakts 25U // длительность единицы в тактах
#define bitPauseTakts 7U // длительность промежутков в тактах #define bitPauseTakts 6U // длительность нуля в тактах
#define bitTakts (bitActiveTakts+bitPauseTakts*2U) // Общая длительность бита в тактах #define bitTakts (bitActiveTakts+bitPauseTakts*2U) // Общая длительность бита в тактах
#define bitTime (bitTakts*carrierPeriod) // Общая длительность бита #define bitTime (bitTakts*carrierPeriod) // Общая длительность бита