Implement property in HoymilesRadio_CMT to set the frequency during runtime
This commit is contained in:
parent
70b85fad6f
commit
5e11f0b854
@ -199,7 +199,7 @@ enumCMTresult HoymilesRadio_CMT::cmtProcess(void)
|
||||
cmtRxTimeoutCnt++;
|
||||
} else {
|
||||
uint32_t invSerial = cmtTxBuffer[1] << 24 | cmtTxBuffer[2] << 16 | cmtTxBuffer[3] << 8 | cmtTxBuffer[4]; // read inverter serial from last Tx buffer
|
||||
cmtSwitchInvAndDtuFreq(invSerial, HOY_BOOT_FREQ / 1000, HOYMILES_CMT_WORK_FREQ);
|
||||
cmtSwitchInvAndDtuFreq(invSerial, HOY_BOOT_FREQ / 1000, _inverterTargetFrequency);
|
||||
}
|
||||
|
||||
nRes = CMT_RX_TIMEOUT;
|
||||
@ -306,7 +306,7 @@ void HoymilesRadio_CMT::init(int8_t pin_sdio, int8_t pin_clk, int8_t pin_cs, int
|
||||
|
||||
_radio->begin();
|
||||
|
||||
cmtSwitchDtuFreq(HOYMILES_CMT_WORK_FREQ); // start dtu at work freqency, for fast Rx if inverter is already on and frequency switched
|
||||
cmtSwitchDtuFreq(_inverterTargetFrequency); // start dtu at work freqency, for fast Rx if inverter is already on and frequency switched
|
||||
|
||||
if (_radio->isChipConnected()) {
|
||||
Hoymiles.getMessageOutput()->println("Connection successful");
|
||||
@ -436,6 +436,15 @@ void HoymilesRadio_CMT::setPALevel(int8_t paLevel)
|
||||
}
|
||||
}
|
||||
|
||||
void HoymilesRadio_CMT::setInverterTargetFrequency(uint32_t frequency)
|
||||
{
|
||||
_inverterTargetFrequency = frequency;
|
||||
if (!_isInitialized) {
|
||||
return;
|
||||
}
|
||||
cmtSwitchDtuFreq(_inverterTargetFrequency);
|
||||
}
|
||||
|
||||
bool HoymilesRadio_CMT::isConnected()
|
||||
{
|
||||
if (!_isInitialized) {
|
||||
|
||||
@ -13,6 +13,10 @@
|
||||
// number of fragments hold in buffer
|
||||
#define FRAGMENT_BUFFER_SIZE 30
|
||||
|
||||
#ifndef HOYMILES_CMT_WORK_FREQ
|
||||
#define HOYMILES_CMT_WORK_FREQ 865000
|
||||
#endif
|
||||
|
||||
/* CMT states */
|
||||
typedef enum {
|
||||
CMT_STATE_IDLE = 0,
|
||||
@ -43,6 +47,7 @@ public:
|
||||
void init(int8_t pin_sdio, int8_t pin_clk, int8_t pin_cs, int8_t pin_fcs, int8_t pin_gpio2, int8_t pin_gpio3);
|
||||
void loop();
|
||||
void setPALevel(int8_t paLevel);
|
||||
void setInverterTargetFrequency(uint32_t frequency);
|
||||
|
||||
bool isConnected();
|
||||
|
||||
@ -64,6 +69,8 @@ private:
|
||||
TimeoutHelper _rxTimeout;
|
||||
TimeoutHelper _txTimeout;
|
||||
|
||||
uint32_t _inverterTargetFrequency = HOYMILES_CMT_WORK_FREQ;
|
||||
|
||||
String cmtChToFreq(const uint8_t channel);
|
||||
void cmtSwitchChannel(const uint8_t channel);
|
||||
uint8_t cmtFreqToChan(const String& func_name, const String& var_name, const uint32_t freq_kHz);
|
||||
|
||||
@ -56,7 +56,6 @@ build_flags = ${env.build_flags}
|
||||
-DHOYMILES_PIN_IRQ=16
|
||||
-DHOYMILES_PIN_CE=4
|
||||
-DHOYMILES_PIN_CS=5
|
||||
-DHOYMILES_CMT_WORK_FREQ=865000
|
||||
|
||||
|
||||
[env:olimex_esp32_poe]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user