Fix how the band tuning works

* add a top level default that represents 200KHz steps
* use the global min/max frequency ranges rather than hard coding it
  in the band tuning
* explicitly cap the min/max freq when tuning through the band, so
  we have a nice, neat hard stop at LOWEST_FREQ/HIGHEST_FREQ.

This now lets me band tune down to my current low freq setting of
1MHz and it doesn't overflow/underflow or go slightly out of band.
pull/3/head
Adrian Chadd 2021-03-16 10:11:19 -07:00
rodzic 54c55899bf
commit 20b42d659f
2 zmienionych plików z 23 dodań i 16 usunięć

Wyświetl plik

@ -42,6 +42,7 @@
// limits the tuning and working range of the ubitx between 3 MHz and 30 MHz // limits the tuning and working range of the ubitx between 3 MHz and 30 MHz
#define LOWEST_FREQ (100000l) #define LOWEST_FREQ (100000l)
#define HIGHEST_FREQ (30000000l) #define HIGHEST_FREQ (30000000l)
#define FAST_TUNE_STEP (200000L)
#define DEFAULT_FIRSTIF 45000000L #define DEFAULT_FIRSTIF 45000000L

Wyświetl plik

@ -11,6 +11,7 @@
* - If the menu item is NOT clicked on, then the menu's prompt is to be displayed * - If the menu item is NOT clicked on, then the menu's prompt is to be displayed
*/ */
#include "ubitx4_defaults.h"
/** A generic control to read variable values /** A generic control to read variable values
*/ */
@ -59,9 +60,6 @@ void menuBand(int btn){
int knob = 0; int knob = 0;
int band; int band;
unsigned long offset; unsigned long offset;
// band = frequency/1000000l;
// offset = frequency % 1000000l;
if (!btn){ if (!btn){
printLineF2(F("Band Select \x7E")); printLineF2(F("Band Select \x7E"));
@ -80,19 +78,27 @@ void menuBand(int btn){
knob = enc_read(); knob = enc_read();
if (knob != 0){ if (knob != 0){
/* /*
if (band > 3 && knob < 0) * Ensure that we cap the band select between LOWEST_FREQ
band--; * and HIGHEST_FREQ.
if (band < 30 && knob > 0) */
band++; if ((knob < 0) && (frequency > LOWEST_FREQ)) {
if (band > 10) /* Ensure we don't tune below LOWEST_FREQ */
isUSB = true; if (frequency > (FAST_TUNE_STEP * 2)) {
else setFrequency(frequency - FAST_TUNE_STEP);
isUSB = false; } else {
setFrequency(((unsigned long)band * 1000000l) + offset); */ setFrequency(LOWEST_FREQ);
if (knob < 0 && frequency > 3000000l) }
setFrequency(frequency - 200000l); }
if (knob > 0 && frequency < 30000000l) if ((knob > 0) && (frequency < HIGHEST_FREQ)) {
setFrequency(frequency + 200000l); /* Ensure we don't tune above HIGHEST_FREQ */
if ((frequency + FAST_TUNE_STEP) > HIGHEST_FREQ) {
setFrequency(HIGHEST_FREQ);
} else {
setFrequency(frequency + FAST_TUNE_STEP);
}
}
/* Adjust mode to be USB/LSB across 10MHz */
if (frequency > 10000000l) if (frequency > 10000000l)
isUSB = true; isUSB = true;
else else