Fix SW round bug

It should be round to every 5K step
This commit is contained in:
kevin
2023-07-07 22:04:54 +08:00
parent 308350a20c
commit c73bd1c573
+17 -1
View File
@@ -1366,6 +1366,18 @@ void Round50K(unsigned int freq) {
} }
} }
void Round5K(unsigned int freqAM) {
if (freqAM % 10 < 3) {
frequency_AM = (freqAM - freqAM % 10);
}
else if (freqAM % 10 > 2 && freqAM % 10 < 8) {
frequency_AM = (freqAM - (freqAM % 10 - 5));
}
else if (freqAM % 10 > 7) {
frequency_AM = (freqAM - (freqAM % 10) + 10);
}
}
void RoundStep() { void RoundStep() {
if (band == BAND_FM) { if (band == BAND_FM) {
unsigned int freq = frequency; unsigned int freq = frequency;
@@ -1379,11 +1391,15 @@ void RoundStep() {
Round50K(freq); Round50K(freq);
} }
radio.SetFreq(frequency); radio.SetFreq(frequency);
} } else {
if (band == BAND_MW) { if (band == BAND_MW) {
unsigned int freq = frequency_AM / (region == 0 ? FREQ_MW_STEP_9K : FREQ_MW_STEP_10K); unsigned int freq = frequency_AM / (region == 0 ? FREQ_MW_STEP_9K : FREQ_MW_STEP_10K);
frequency_AM = freq * (region == 0 ? FREQ_MW_STEP_9K : FREQ_MW_STEP_10K); frequency_AM = freq * (region == 0 ? FREQ_MW_STEP_9K : FREQ_MW_STEP_10K);
radio.SetFreqAM(frequency_AM); radio.SetFreqAM(frequency_AM);
} else if (band == BAND_SW) {
Round5K(frequency_AM);
radio.SetFreqAM(frequency_AM);
}
} }
while (digitalRead(ROTARY_BUTTON) == LOW) delay(50); while (digitalRead(ROTARY_BUTTON) == LOW) delay(50);