Added auto SPI speed (not finished yet)

This commit is contained in:
Sjef Verhoeven PE5PVB
2024-04-17 23:27:44 +02:00
parent eb1d57b0ca
commit f7a22f0eb3
4 changed files with 109 additions and 25 deletions

View File

@@ -491,7 +491,14 @@ void setup() {
scancancel = EEPROM.readByte(EE_BYTE_SCANCANCEL);
scanmute = EEPROM.readByte(EE_BYTE_SCANMUTE);
if (spispeed == SPI_SPEED_DEFAULT) tft.setSPISpeed(SPI_FREQUENCY / 1000000); else tft.setSPISpeed(spispeed * 10);
if (spispeed == SPI_SPEED_DEFAULT) {
tft.setSPISpeed(SPI_FREQUENCY / 1000000);
} else if (spispeed == 7) {
setAutoSpeedSPI();
} else {
tft.setSPISpeed(spispeed * 10);
}
LWLowEdgeSet = FREQ_LW_LOW_EDGE_MIN;
LWHighEdgeSet = FREQ_LW_HIGH_EDGE_MAX;
MWLowEdgeSet = mwstepsize == false ? FREQ_MW_LOW_EDGE_MIN_9K : FREQ_MW_LOW_EDGE_MIN_10K;
@@ -2658,6 +2665,7 @@ void ShowFreq(int mode) {
attachInterrupt(digitalPinToInterrupt(ROTARY_PIN_A), read_encoder, CHANGE);
attachInterrupt(digitalPinToInterrupt(ROTARY_PIN_B), read_encoder, CHANGE);
setAutoSpeedSPI();
rdsreset = true;
licold = 254;
ECCold = 253;
@@ -4060,3 +4068,50 @@ void startFMDXScan() {
scantimer = millis();
scandxmode = true;
}
void setAutoSpeedSPI() {
switch (frequency / 10) {
case 875 ... 877: tft.setSPISpeed(28); break;
case 878 ... 881: tft.setSPISpeed(24); break;
case 882 ... 892: tft.setSPISpeed(42); break;
case 893 ... 899: tft.setSPISpeed(31); break;
case 900 ... 904: tft.setSPISpeed(12); break;
case 905 ... 906: tft.setSPISpeed(16); break;
case 907 ... 910: tft.setSPISpeed(11); break;
case 911 ... 916: tft.setSPISpeed(15); break;
case 917 ... 921: tft.setSPISpeed(24); break;
case 922 ... 928: tft.setSPISpeed(13); break;
case 929: tft.setSPISpeed(11); break;
case 930 ... 932: tft.setSPISpeed(13); break;
case 933 ... 939: tft.setSPISpeed(18); break;
case 940 ... 941: tft.setSPISpeed(12); break;
case 942: tft.setSPISpeed(17); break;
case 943 ... 949: tft.setSPISpeed(15); break;
case 950: tft.setSPISpeed(19); break;
case 951: tft.setSPISpeed(15); break;
case 952 ... 960: tft.setSPISpeed(22); break;
case 961 ... 965: tft.setSPISpeed(15); break;
case 966 ... 973: tft.setSPISpeed(22); break;
case 974 ... 979: tft.setSPISpeed(17); break;
case 980 ... 982: tft.setSPISpeed(20); break;
case 983 ... 987: tft.setSPISpeed(18); break;
case 988 ... 993: tft.setSPISpeed(11); break;
case 994 ... 996: tft.setSPISpeed(18); break;
case 997 ... 1005: tft.setSPISpeed(11); break;
case 1006: tft.setSPISpeed(13); break;
case 1007 ... 1011: tft.setSPISpeed(11); break;
case 1012 ... 1016: tft.setSPISpeed(18); break;
case 1017 ... 1026: tft.setSPISpeed(13); break;
case 1027 ... 1035: tft.setSPISpeed(23); break;
case 1036 ... 1038: tft.setSPISpeed(15); break;
case 1039 ... 1042: tft.setSPISpeed(12); break;
case 1043 ... 1047: tft.setSPISpeed(23); break;
case 1048 ... 1050: tft.setSPISpeed(28); break;
case 1051 ... 1062: tft.setSPISpeed(15); break;
case 1063 ... 1068: tft.setSPISpeed(18); break;
case 1069 ... 1074: tft.setSPISpeed(14); break;
case 1075: tft.setSPISpeed(17); break;
case 1076 ... 1080: tft.setSPISpeed(15); break;
default: tft.setSPISpeed(30); break;
}
}

View File

@@ -1274,7 +1274,11 @@ void ShowOneLine(byte position, byte item, bool selected) {
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString("MHz", 298, 3);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 258, 3);
if (spispeed == 7) {
FullLineSprite.drawString(myLanguage[language][86], 258, 3);
} else {
FullLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 258, 3);
}
}
break;
@@ -1805,10 +1809,20 @@ void MenuUp() {
OneBigLineSprite.drawString("MHz", 155, 0);
OneBigLineSprite.setTextDatum(TR_DATUM);
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
OneBigLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 140, 0);
if (spispeed == 7) {
OneBigLineSprite.drawString(myLanguage[language][86], 140, 0);
} else {
OneBigLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 140, 0);
}
OneBigLineSprite.pushSprite(24, 118);
if (spispeed == SPI_SPEED_DEFAULT) tft.setSPISpeed(SPI_FREQUENCY / 1000000); else tft.setSPISpeed(spispeed * 10);
if (spispeed == SPI_SPEED_DEFAULT) {
tft.setSPISpeed(SPI_FREQUENCY / 1000000);
} else if (spispeed == 7) {
setAutoSpeedSPI();
} else {
tft.setSPISpeed(spispeed * 10);
}
break;
}
break;
@@ -2596,10 +2610,20 @@ void MenuDown() {
OneBigLineSprite.drawString("MHz", 155, 0);
OneBigLineSprite.setTextDatum(TR_DATUM);
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
OneBigLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 140, 0);
if (spispeed == 7) {
OneBigLineSprite.drawString(myLanguage[language][86], 140, 0);
} else {
OneBigLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 140, 0);
}
OneBigLineSprite.pushSprite(24, 118);
if (spispeed == SPI_SPEED_DEFAULT) tft.setSPISpeed(SPI_FREQUENCY / 1000000); else tft.setSPISpeed(spispeed * 10);
if (spispeed == SPI_SPEED_DEFAULT) {
tft.setSPISpeed(SPI_FREQUENCY / 1000000);
} else if (spispeed == 7) {
setAutoSpeedSPI();
} else {
tft.setSPISpeed(spispeed * 10);
}
break;
}
@@ -3452,7 +3476,11 @@ void DoMenu() {
OneBigLineSprite.drawString("MHz", 155, 0);
OneBigLineSprite.setTextDatum(TR_DATUM);
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
OneBigLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 140, 0);
if (spispeed == 7) {
OneBigLineSprite.drawString(myLanguage[language][86], 140, 0);
} else {
OneBigLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 140, 0);
}
OneBigLineSprite.pushSprite(24, 118);
break;
}

View File

@@ -229,4 +229,5 @@ extern void startFMDXScan();
extern void DoMemoryPosTune();
extern void UpdateFonts(bool mode);
extern void tftPrint(int8_t offset, const String & text, int16_t x, int16_t y, int color, int smoothcolor, uint8_t fontsize);
extern void setAutoSpeedSPI();
#endif

View File

@@ -92,7 +92,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"NONE", // 83
"Software version", // 84
"Frequency font", // 85
"NOT POSSIBLE", // 86
"Auto", // 86
"No AF available", // 87
"No EON available", // 88
"No RT+ available", // 89
@@ -317,7 +317,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Geen", // 83
"Software versie", // 84
"Frequentie font", // 85
"NIET MOGELIJK", // 86
"Auto", // 86
"Geen AF data", // 87
"Geen EON data", // 88
"Geen RT+ data", // 89
@@ -542,7 +542,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"BRAK", // 83
"Wersja oprogramowania", // 84
"Czcionka częstotliwości", // 85
"NIEMOŻLIWE", // 86
"Auto", // 86
"AF niedostępny", // 87
"EON niedostępny", // 88
"RT+ niedostępny", // 89
@@ -767,7 +767,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"NEMA", // 83
"Verzija softvera", // 84
"Font frekvencije", // 85
"NIJE MOGUĆE", // 86
"Auto", // 86
"AF nedostupan", // 87
"EON nedostupan", // 88
"RT+ nedostupan", // 89
@@ -992,7 +992,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"KAMIA", // 83
"Έκδοση λογισμικού", // 84
"Γραμματοσειρά\nσυχνότητας", // 85
"ΜΗ ΔΥΝΑΤΟ", // 86
"Auto", // 86
"Μη διαθέσιμο AF", // 87
"Μη διαθέσιμο EON", // 88
"Μη διαθέσιμο RT+", // 89
@@ -1217,7 +1217,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"NICI UNUL", // 83
" versiune Software", // 84
"Font Frecventa", // 85
"Nu se poate", // 86
"Auto", // 86
"AF nu este disponibil", // 87
"EON nu este disponibil", // 88
"RT+ nu este disponibil", // 89
@@ -1442,7 +1442,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"KEINE", // 83
"Softwareversion", // 84
"Frequenz-Schriftart", // 85 ***
"NICHT MÖGLICH", // 86
"Auto", // 86
"Keine AF verfügbar", // 87
"Kein EON verfügbar", // 88
"Kein RT+ verfügbar", // 89
@@ -1667,7 +1667,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"NONE", // 83 represents: AM/FM bands unavailable(please delete this note after translation
"Software version", // 84
"Frequency font", // 85 ***
"ODPOJTE USB", // 86
"Auto", // 86
"AF nedostupné", // 87
"EON nedostupný", // 88
"RT+ nedostupný", // 89
@@ -1892,7 +1892,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"NONE", // 83 represents: AM/FM bands unavailable(please delete this note after translation
"Software version", // 84
"Frequency font", // 85 ***
"ODPOJTE USB", // 86
"Auto", // 86
"AF nedostupné", // 87
"EON nedostupný", // 88
"RT+ nedostupný", // 89
@@ -2117,7 +2117,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"AUCUNE", // 83
"Version de logiciel", // 84
"Police de fréquence", // 85 ***
"IMPOSSIBLE", // 86
"Auto", // 86
"AF indisponible", // 87
"EON indisponible", // 88
"RT+ indisponible", // 89
@@ -2342,7 +2342,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"NONE", // 83 represents: AM/FM bands unavailable(please delete this note after translation
"Software version", // 84
"Frequency font", // 85 ***
"НЕ Е ВЪЗМОЖНО", // 86
"Auto", // 86
"AF опцията не е налична", // 87
"EON опцията не е налична", // 88
"RT+ опцията не е налична", // 89
@@ -2567,7 +2567,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Не использовать AM", // 83
"Версия прошивки -", // 84
"Шрифт индикации частоты", // 85 ***
"НЕВОЗМОЖНО", // 86
"Auto", // 86
"Нет данных", // 87
"Нет данных", // 88
"Нет данных", // 89
@@ -2792,7 +2792,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"NONE", // 83 represents: AM/FM bands unavailable(please delete this note after translation
"Версія ПО", // 84
"Frequency font", // 85 ***
"НЕ МОЖЛИВО", // 86
"Auto", // 86
"Немає доступних AF", // 87
"Немає доступного EON", // 88
"Немає доступного RT+", // 89
@@ -3017,7 +3017,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"NONE", // 83 represents: AM/FM bands unavailable(please delete this note after translation
"Software version", // 84
"Frequency font", // 85 ***
"IMPOSSIBILE", // 86
"Auto", // 86
"AF non disponibile", // 87
"EON non disponibile", // 88
"RT + non disponibile", // 89
@@ -3242,7 +3242,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"不可用", // 83
"固件版本", // 84
"频率字体", // 85 ***
"不可用", // 86
"Auto", // 86
"AF 不可用", // 87
"EON 不可用", // 88
"RT+ 不可用", // 89
@@ -3467,7 +3467,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"INGEN", // 83
"Programvareversjon", // 84
"Frekvens skrifttype", // 85 ***
"IKKE MULIG", // 86
"Auto", // 86
"Ingen AF", // 87
"Ingen EON", // 88
"Ingen RT+", // 89
@@ -3692,7 +3692,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"NINGUNA", // 83
"Versión del software", // 84
"Fundición de frecuencia", // 85 ***
"NO ES POSIBLE", // 86
"Auto", // 86
"No AF disponible", // 87
"No EON disponible", // 88
"No RT+ disponible", // 89
@@ -3917,7 +3917,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"NENHUM", // 83
"Versão do software", // 84
"Fonte de frequência", // 85 ***
"NÃO POSSÍVEL", // 86
"Auto", // 86
"AF não disponível", // 87
"EON não disponível", // 88
"RT+ não disponível", // 89