Umstrukturierung des Quellcodes in mehr Dateien
parent
2bdecacf56
commit
957ac1fa8d
@ -1,2 +1,2 @@
|
|||||||
:080000000032005802000C550B
|
:080000000203005802010C5537
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
@ -0,0 +1,317 @@
|
|||||||
|
/** @file controls.c
|
||||||
|
* @brief Display und Bedienelemente
|
||||||
|
* @author Tom, DL7BJ
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "controls.h"
|
||||||
|
|
||||||
|
// Stringkonstanten für das Display
|
||||||
|
const char CALL[] = " DL7BJ ";
|
||||||
|
const char PRG[] = " BJ-Keyer ";
|
||||||
|
const char VER[] = " V1.0 ";
|
||||||
|
const char Trx1[] = "TRX 1";
|
||||||
|
const char Trx2[] = "TRX 2";
|
||||||
|
const char IambicA[] = "Iambic A";
|
||||||
|
const char IambicB[] = "Iambic B";
|
||||||
|
const char Ratio[] = "Ratio";
|
||||||
|
const char ReverseRL[] = " L - R °";
|
||||||
|
const char ReverseLR[] = " L ° R -";
|
||||||
|
const char SideToneOnOff[] = "Mithörton";
|
||||||
|
const char SideToneFreq[] = "Frequenz";
|
||||||
|
const char RiseTime[] = "Anstieg";
|
||||||
|
const char DebounceTime[] = "Entprl.";
|
||||||
|
const char Yes[] = "J";
|
||||||
|
const char No[] = "N";
|
||||||
|
const char Hz[] = "Hz";
|
||||||
|
|
||||||
|
void Drehencoder(void)
|
||||||
|
{
|
||||||
|
int st = 0;
|
||||||
|
static int last;
|
||||||
|
|
||||||
|
if(!(bMenuCtrl.Config))
|
||||||
|
{
|
||||||
|
EncoderMinMax(5,50);
|
||||||
|
st = EncoderRead(1);
|
||||||
|
if(bConfig.WpM != st)
|
||||||
|
{
|
||||||
|
bConfig.WpM = st; // neuen Wert in bConfig speichern
|
||||||
|
bMerker.WpMChanged = 1; // Merker für Timer 0 setzen
|
||||||
|
bMenuCtrl.Update = 1; // Merker für UpdateDisplay setzen
|
||||||
|
EncoderPos = st; // neuen Werte in EncoderPos speichern
|
||||||
|
WpM = bConfig.WpM; // neuen Wert in WpM übernehmen
|
||||||
|
cli();
|
||||||
|
StoreEEprom = 0; // Timer 0 Variable löschen für Update EEprom
|
||||||
|
sei();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if((bMenuCtrl.buttonPressed == 1) && (bMenuCtrl.Config == 0))
|
||||||
|
{
|
||||||
|
bMenuCtrl.Config = 1;
|
||||||
|
MenuCtrlTimer = 0;
|
||||||
|
bMenuCtrl.buttonPressed = 0;
|
||||||
|
EncoderPos = EncoderRead(1);
|
||||||
|
bMenuCtrl.CurMenue = EncoderPosConfig;
|
||||||
|
EncoderWrite(EncoderPosConfig);
|
||||||
|
bMenuCtrl.Update = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if((bMenuCtrl.buttonPressedLong == 1) && (bMenuCtrl.Config == 1))
|
||||||
|
{
|
||||||
|
bMenuCtrl.Config = 0;
|
||||||
|
bMenuCtrl.Update = 1;
|
||||||
|
bMenuCtrl.buttonPressedLong = 0;
|
||||||
|
bMenuCtrl.buttonPressed = 0;
|
||||||
|
bMenuCtrl.m_buttonPressed = 0;
|
||||||
|
MenuCtrlTimer = 0;
|
||||||
|
EncoderPosConfig = EncoderRead(1);
|
||||||
|
EncoderWrite(EncoderPos);
|
||||||
|
bMenuCtrl.ClrScr = 1;
|
||||||
|
Beep();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(bMenuCtrl.Config == 1)
|
||||||
|
{
|
||||||
|
if(!bMenuCtrl.buttonPressed)
|
||||||
|
{
|
||||||
|
EncoderMinMax(1,M_MAX);
|
||||||
|
st = EncoderRead(1);
|
||||||
|
sprintf(sdebug,"Encoder %i\r\n",st);
|
||||||
|
if(last != st)
|
||||||
|
{
|
||||||
|
SendSerialString(sdebug);
|
||||||
|
bMenuCtrl.CurMenue = st;
|
||||||
|
bMenuCtrl.Update = 1;
|
||||||
|
}
|
||||||
|
last = st;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(bMenuCtrl.buttonPressed)
|
||||||
|
{
|
||||||
|
bMenuCtrl.m_buttonPressed = 1;
|
||||||
|
bMenuCtrl.buttonPressed = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(bMenuCtrl.m_buttonPressed == 1)
|
||||||
|
{
|
||||||
|
UpdateDisplay();
|
||||||
|
switch(bMenuCtrl.CurMenue)
|
||||||
|
{
|
||||||
|
case M_TRX1:
|
||||||
|
if(bConfig.TRX == 2)
|
||||||
|
bConfig.TRX = 0;
|
||||||
|
else
|
||||||
|
bConfig.TRX = 1;
|
||||||
|
bMenuCtrl.m_buttonPressed = 0;
|
||||||
|
break;
|
||||||
|
case M_TRX2:
|
||||||
|
if(bConfig.TRX == 1)
|
||||||
|
bConfig.TRX = 0;
|
||||||
|
else
|
||||||
|
bConfig.TRX = 2;
|
||||||
|
bMenuCtrl.m_buttonPressed = 0;
|
||||||
|
break;
|
||||||
|
case M_IAMBICA:
|
||||||
|
bConfig.IambicMode = 1;
|
||||||
|
bMenuCtrl.m_buttonPressed = 0;
|
||||||
|
break;
|
||||||
|
case M_IAMBICB:
|
||||||
|
bConfig.IambicMode = 2;
|
||||||
|
bMenuCtrl.m_buttonPressed = 0;
|
||||||
|
break;
|
||||||
|
case M_REVERSE:
|
||||||
|
if(bConfig.Reverse == 1)
|
||||||
|
bConfig.Reverse = 0;
|
||||||
|
else
|
||||||
|
bConfig.Reverse = 1;
|
||||||
|
bMenuCtrl.m_buttonPressed = 0;
|
||||||
|
if(bConfig.Reverse == 1)
|
||||||
|
PaddleMode = PADDLE_REVERSE;
|
||||||
|
else
|
||||||
|
PaddleMode = PADDLE_NORMAL;
|
||||||
|
bMenuCtrl.Update = 1;
|
||||||
|
break;
|
||||||
|
case M_RATIO:
|
||||||
|
EncoderMinMax(15,30);
|
||||||
|
st = EncoderRead(1);
|
||||||
|
bConfig.Ratio = st;
|
||||||
|
if(bConfig.Ratio > 30) bConfig.Ratio = 30;
|
||||||
|
if(bConfig.Ratio < 15) bConfig.Ratio = 15;
|
||||||
|
bMenuCtrl.Update = 1;
|
||||||
|
break;
|
||||||
|
case M_TON_FREQ:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ConfigMenue(void)
|
||||||
|
{
|
||||||
|
char line[22];
|
||||||
|
|
||||||
|
lcd_charMode(NORMAL);
|
||||||
|
lcd_gotoxy(0,0);
|
||||||
|
lcd_puts(CLEARLINE);
|
||||||
|
lcd_gotoxy(0,0);
|
||||||
|
sprintf(line,"%s - %i","Einstellungen", bMenuCtrl.CurMenue);
|
||||||
|
lcd_puts(line);
|
||||||
|
lcd_charMode(DOUBLESIZE);
|
||||||
|
lcd_gotoxy(0,3);
|
||||||
|
lcd_puts(CLEARLINE);
|
||||||
|
switch(bMenuCtrl.CurMenue)
|
||||||
|
{
|
||||||
|
case M_TRX1:
|
||||||
|
lcd_gotoxy(0,3);
|
||||||
|
if((bConfig.TRX == 1) || (bConfig.TRX == 0))
|
||||||
|
sprintf(line,"[%s]", "TRX 1");
|
||||||
|
else
|
||||||
|
sprintf(line," %s ", "TRX 1");
|
||||||
|
lcd_puts(line);
|
||||||
|
break;
|
||||||
|
case M_TRX2:
|
||||||
|
lcd_gotoxy(0,3);
|
||||||
|
if((bConfig.TRX == 2) || (bConfig.TRX == 0))
|
||||||
|
sprintf(line,"[%s]", "TRX 2");
|
||||||
|
else
|
||||||
|
sprintf(line," %s ", "TRX 2");
|
||||||
|
lcd_puts(line);
|
||||||
|
break;
|
||||||
|
case M_IAMBICA:
|
||||||
|
lcd_gotoxy(0,3);
|
||||||
|
if(bConfig.IambicMode == 1)
|
||||||
|
sprintf(line,"[%s]", IambicA);
|
||||||
|
else
|
||||||
|
sprintf(line," %s ", IambicB);
|
||||||
|
lcd_puts(line);
|
||||||
|
break;
|
||||||
|
case M_IAMBICB:
|
||||||
|
lcd_gotoxy(0,3);
|
||||||
|
if(bConfig.IambicMode == 2)
|
||||||
|
sprintf(line,"[%s]", IambicB);
|
||||||
|
else
|
||||||
|
sprintf(line," %s ", IambicB);
|
||||||
|
lcd_puts(line);
|
||||||
|
break;
|
||||||
|
case M_REVERSE:
|
||||||
|
lcd_gotoxy(0,3);
|
||||||
|
if(bConfig.Reverse == 0)
|
||||||
|
sprintf(line,"%s", ReverseLR);
|
||||||
|
else
|
||||||
|
sprintf(line,"%s", ReverseRL);
|
||||||
|
lcd_puts(line);
|
||||||
|
break;
|
||||||
|
case M_RATIO:
|
||||||
|
lcd_gotoxy(0,3);
|
||||||
|
if(bConfig.Ratio == 30)
|
||||||
|
sprintf(line,"%s", "Ratio 3:1");
|
||||||
|
else
|
||||||
|
sprintf(line,"%s %i:1", "Ratio", bConfig.Ratio/10);
|
||||||
|
lcd_puts(line);
|
||||||
|
break;
|
||||||
|
case M_TON_FREQ:
|
||||||
|
lcd_gotoxy(0,3);
|
||||||
|
if(bConfig.FrequencySidetone == 650)
|
||||||
|
sprintf(line,"%s", "Ton 650Hz");
|
||||||
|
else
|
||||||
|
sprintf(line,"%s %uHz", "Ton", bConfig.FrequencySidetone);
|
||||||
|
lcd_puts(line);
|
||||||
|
break;
|
||||||
|
case M_TON:
|
||||||
|
lcd_gotoxy(0,3);
|
||||||
|
if(bConfig.SidetoneEnabled == 1)
|
||||||
|
sprintf(line,"%s", "Ton an");
|
||||||
|
else
|
||||||
|
sprintf(line,"%s", "Ton aus");
|
||||||
|
lcd_puts(line);
|
||||||
|
break;
|
||||||
|
case M_WPMBPM:
|
||||||
|
lcd_gotoxy(0,3);
|
||||||
|
if(bConfig.WpMBpM == 0)
|
||||||
|
sprintf(line,"%s", "WpM");
|
||||||
|
else
|
||||||
|
sprintf(line,"%s", "BpM");
|
||||||
|
lcd_puts(line);
|
||||||
|
break;
|
||||||
|
case M_RISETIME:
|
||||||
|
lcd_gotoxy(0,3);
|
||||||
|
sprintf(line,"%s %ims",RiseTime, bConfig.RiseTime);
|
||||||
|
lcd_puts(line);
|
||||||
|
break;
|
||||||
|
case M_DEBOUNCE:
|
||||||
|
lcd_gotoxy(0,3);
|
||||||
|
sprintf(line,"%s %ims",DebounceTime, bConfig.DebounceTime);
|
||||||
|
lcd_puts(line);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
bMenuCtrl.Update = 0;
|
||||||
|
lcd_charMode(NORMAL);
|
||||||
|
}
|
||||||
|
void DisplayVersion(void)
|
||||||
|
{
|
||||||
|
lcd_init(LCD_DISP_ON);
|
||||||
|
lcd_charMode(DOUBLESIZE);
|
||||||
|
lcd_home();
|
||||||
|
lcd_puts(PRG);
|
||||||
|
lcd_gotoxy(1,2);
|
||||||
|
lcd_puts(VER);
|
||||||
|
lcd_gotoxy(2,4);
|
||||||
|
lcd_puts(CALL);
|
||||||
|
SideToneOff();
|
||||||
|
DelayMilliSeconds(1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** \brief UpdateDisplay
|
||||||
|
*
|
||||||
|
* Aktualisierung der Anzeigen auf dem Display je nach
|
||||||
|
* aktueller Funktion.
|
||||||
|
*
|
||||||
|
* DOUBLESIZE 4x10 character
|
||||||
|
* NORMALSIZE 8x21 character
|
||||||
|
*/
|
||||||
|
void UpdateDisplay(void)
|
||||||
|
{
|
||||||
|
char line[22];
|
||||||
|
if(bMenuCtrl.Update)
|
||||||
|
{
|
||||||
|
if(bMenuCtrl.ClrScr)
|
||||||
|
{
|
||||||
|
lcd_clrscr();
|
||||||
|
bMenuCtrl.ClrScr = 0;
|
||||||
|
bMenuCtrl.Update = 1;
|
||||||
|
}
|
||||||
|
if(!(bMenuCtrl.Config))
|
||||||
|
{
|
||||||
|
lcd_charMode(DOUBLESIZE);
|
||||||
|
lcd_gotoxy(4,3);
|
||||||
|
if(bConfig.WpMBpM)
|
||||||
|
sprintf(line,"%i WpM ",bConfig.WpM);
|
||||||
|
else
|
||||||
|
sprintf(line,"%i BpM ", bConfig.WpM*5);
|
||||||
|
lcd_puts(line);
|
||||||
|
lcd_charMode(NORMAL);
|
||||||
|
lcd_gotoxy(13,0);
|
||||||
|
if(bConfig.IambicMode == 1)
|
||||||
|
sprintf(line,"%s", IambicA);
|
||||||
|
if(bConfig.IambicMode == 2)
|
||||||
|
sprintf(line,"%s", IambicB);
|
||||||
|
lcd_puts(line);
|
||||||
|
lcd_gotoxy(0,0);
|
||||||
|
if(bConfig.TRX == 1)
|
||||||
|
sprintf(line, "%s", Trx1);
|
||||||
|
if(bConfig.TRX == 2)
|
||||||
|
sprintf(line, "%s", Trx2);
|
||||||
|
if(bConfig.TRX == 0)
|
||||||
|
sprintf(line, "%s %s", Trx1, Trx2);
|
||||||
|
lcd_puts(line);
|
||||||
|
}
|
||||||
|
if(bMenuCtrl.Config)
|
||||||
|
{
|
||||||
|
ConfigMenue();
|
||||||
|
}
|
||||||
|
bMenuCtrl.Update = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,26 @@
|
|||||||
|
/** @file controls.h
|
||||||
|
* @brief Include Datei für controls.c
|
||||||
|
* @author Tom, DL7BJ
|
||||||
|
*/
|
||||||
|
#ifndef CONTROLS_H_INCLUDED
|
||||||
|
#define CONTROLS_H_INCLUDED
|
||||||
|
|
||||||
|
#include "globals.h"
|
||||||
|
#include "encoder.h"
|
||||||
|
|
||||||
|
// Externe Variablen
|
||||||
|
extern struct Config bConfig;
|
||||||
|
extern struct MenuCtrl bMenuCtrl;
|
||||||
|
extern struct Merker bMerker;
|
||||||
|
extern uint16_t MenuCtrlTimer;
|
||||||
|
extern uint8_t WpM;
|
||||||
|
// Externe Funktionen
|
||||||
|
extern void Boop(void);
|
||||||
|
extern void Beep(void);
|
||||||
|
|
||||||
|
// Prototypes
|
||||||
|
void Drehencoder(void);
|
||||||
|
void ConfigMenue(void);
|
||||||
|
void UpdateDisplay(void);
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* BJ-Keyer
|
||||||
|
*
|
||||||
|
* 2023-07-29 Tom, DL7BJ
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#ifndef MAIN_H_INCLUDED
|
||||||
|
#define MAIN_H_INCLUDED
|
||||||
|
|
||||||
|
#include "globals.h"
|
||||||
|
#include "encoder.h"
|
||||||
|
#include "functions.h"
|
||||||
|
|
||||||
|
struct Config bConfig;
|
||||||
|
struct MenuCtrl bMenuCtrl;
|
||||||
|
struct Merker bMerker;
|
||||||
|
// Function prototypes
|
||||||
|
void Init(void);
|
||||||
|
void InitTimer(void);
|
||||||
|
|
||||||
|
void CheckDahPaddle(void);
|
||||||
|
void CheckDitPaddle(void);
|
||||||
|
void CheckPaddle(void);
|
||||||
|
void CheckStraightKey(void);
|
||||||
|
void SendDit(uint8_t SendingType);
|
||||||
|
void SendDah(uint8_t SendingType);
|
||||||
|
void SideToneOff(void);
|
||||||
|
void SideToneOn(void);
|
||||||
|
void TXKey(uint8_t State, uint8_t SendingType);
|
||||||
|
void SendChar(uint8_t);
|
||||||
|
void ChangeSpeed(void);
|
||||||
|
void DoMorse(void);
|
||||||
|
|
||||||
|
void SetFrequency(uint16_t f);
|
||||||
|
|
||||||
|
#endif // BJ-KEYER_H_INCLUDED
|
Loading…
Reference in New Issue