Ansteuerung der Transceiver eingebaut, Menü dafür etwas verändert.
Erste Vorbereitungen für das Senden von Texten.
Dieser Commit ist enthalten in:
Ursprung
75daf456cd
Commit
20f0d60e78
@ -1,2 +1,34 @@
|
|||||||
:100000000605050C580200321E00000001010055D3
|
:1000000000000000000000000000000000000000F0
|
||||||
|
:1000100000000000000000000000000000000000E0
|
||||||
|
:1000200000000000000000000000000000000000D0
|
||||||
|
:1000300000000000000000000000000000000000C0
|
||||||
|
:1000400000000000000000000000000000000000B0
|
||||||
|
:1000500000000000000000000000000000000000A0
|
||||||
|
:100060000000000000000000000000000000000090
|
||||||
|
:100070000000000000000000000000000000000080
|
||||||
|
:100080000000000000000000000000000000000070
|
||||||
|
:100090000000000000000000000000000000000060
|
||||||
|
:1000A0000000000000000000000000000000000050
|
||||||
|
:1000B0000000000000000000000000000000000040
|
||||||
|
:1000C0000000000000000000000000000000000030
|
||||||
|
:1000D0000000000000000000000000000000000020
|
||||||
|
:1000E0000000000000000000000000000000000010
|
||||||
|
:1000F0000000000000000000000000000000000000
|
||||||
|
:1001000000000000000000000000000000000000EF
|
||||||
|
:1001100000000000000000000000000000000000DF
|
||||||
|
:1001200000000000000000000000000000000000CF
|
||||||
|
:1001300000000000000000000000000000000000BF
|
||||||
|
:1001400000000000000000000000000000000000AF
|
||||||
|
:10015000000000000000000000000000000000009F
|
||||||
|
:10016000000000000000000000000000000000008F
|
||||||
|
:10017000000000000000000000000000000000007F
|
||||||
|
:10018000000000000000000000000000000000006F
|
||||||
|
:10019000000000000000000000000000000000005F
|
||||||
|
:1001A000000000000000000000000000000000004F
|
||||||
|
:1001B000000000000000000000000000000000003F
|
||||||
|
:1001C000000000000000000000000000000000002F
|
||||||
|
:1001D000000000000000000000000000000000001F
|
||||||
|
:1001E000000000000000000000000000000000000F
|
||||||
|
:1001F000000000000605050C580200321E00000039
|
||||||
|
:050200000101000055A2
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
@ -8,8 +8,8 @@
|
|||||||
// Stringkonstanten für das Display
|
// Stringkonstanten für das Display
|
||||||
|
|
||||||
// Programm Info
|
// Programm Info
|
||||||
const char Trx1[] = "TRX 1";
|
const char sTrx1[] = "TRX 1";
|
||||||
const char Trx2[] = "TRX 2";
|
const char sTrx2[] = "TRX 2";
|
||||||
const char IambicA[] = "Iambic A";
|
const char IambicA[] = "Iambic A";
|
||||||
const char IambicB[] = "Iambic B";
|
const char IambicB[] = "Iambic B";
|
||||||
const char Ultimatic[] = "Ultimat.";
|
const char Ultimatic[] = "Ultimat.";
|
||||||
@ -114,17 +114,17 @@ void Drehencoder(void)
|
|||||||
switch(bMenuCtrl.CurMenue)
|
switch(bMenuCtrl.CurMenue)
|
||||||
{
|
{
|
||||||
case M_TRX1:
|
case M_TRX1:
|
||||||
if(bConfig.TRX == 2)
|
if(bConfig.Trx1)
|
||||||
bConfig.TRX = 0;
|
bConfig.Trx1 = 0;
|
||||||
else
|
else
|
||||||
bConfig.TRX = 1;
|
bConfig.Trx1 = 1;
|
||||||
bMenuCtrl.m_buttonPressed = 0;
|
bMenuCtrl.m_buttonPressed = 0;
|
||||||
break;
|
break;
|
||||||
case M_TRX2:
|
case M_TRX2:
|
||||||
if(bConfig.TRX == 1)
|
if(bConfig.Trx2)
|
||||||
bConfig.TRX = 0;
|
bConfig.Trx2 = 0;
|
||||||
else
|
else
|
||||||
bConfig.TRX = 2;
|
bConfig.Trx2 = 1;
|
||||||
bMenuCtrl.m_buttonPressed = 0;
|
bMenuCtrl.m_buttonPressed = 0;
|
||||||
break;
|
break;
|
||||||
case M_IAMBICA:
|
case M_IAMBICA:
|
||||||
@ -282,7 +282,7 @@ void ConfigMenue(void)
|
|||||||
{
|
{
|
||||||
case M_TRX1:
|
case M_TRX1:
|
||||||
lcd_gotoxy(0,3);
|
lcd_gotoxy(0,3);
|
||||||
if((bConfig.TRX == 1) || (bConfig.TRX == 0))
|
if(bConfig.Trx1)
|
||||||
sprintf(line,"[%s]", "TRX 1");
|
sprintf(line,"[%s]", "TRX 1");
|
||||||
else
|
else
|
||||||
sprintf(line," %s ", "TRX 1");
|
sprintf(line," %s ", "TRX 1");
|
||||||
@ -290,7 +290,7 @@ void ConfigMenue(void)
|
|||||||
break;
|
break;
|
||||||
case M_TRX2:
|
case M_TRX2:
|
||||||
lcd_gotoxy(0,3);
|
lcd_gotoxy(0,3);
|
||||||
if((bConfig.TRX == 2) || (bConfig.TRX == 0))
|
if(bConfig.Trx2)
|
||||||
sprintf(line,"[%s]", "TRX 2");
|
sprintf(line,"[%s]", "TRX 2");
|
||||||
else
|
else
|
||||||
sprintf(line," %s ", "TRX 2");
|
sprintf(line," %s ", "TRX 2");
|
||||||
@ -441,12 +441,12 @@ void UpdateDisplay(void)
|
|||||||
sprintf(line,"%s", Ultimatic);
|
sprintf(line,"%s", Ultimatic);
|
||||||
lcd_puts(line);
|
lcd_puts(line);
|
||||||
lcd_gotoxy(0,0);
|
lcd_gotoxy(0,0);
|
||||||
if(bConfig.TRX == 1)
|
if(bConfig.Trx1 == 1)
|
||||||
sprintf(line, "%s", Trx1);
|
sprintf(line, "%s", sTrx1);
|
||||||
if(bConfig.TRX == 2)
|
if(bConfig.Trx2 == 1)
|
||||||
sprintf(line, "%s", Trx2);
|
sprintf(line, "%s", sTrx2);
|
||||||
if(bConfig.TRX == 0)
|
if((bConfig.Trx1 == 1) && (bConfig.Trx2 == 1))
|
||||||
sprintf(line, "%s %s", Trx1, Trx2);
|
sprintf(line, "%s %s", sTrx1, sTrx2);
|
||||||
lcd_puts(line);
|
lcd_puts(line);
|
||||||
lcd_gotoxy(0,6);
|
lcd_gotoxy(0,6);
|
||||||
if(bConfig.SpeedRatioEnabled)
|
if(bConfig.SpeedRatioEnabled)
|
||||||
|
@ -22,6 +22,7 @@ extern void SideToneOff(void);
|
|||||||
extern void DelayMilliSeconds(uint16_t t);
|
extern void DelayMilliSeconds(uint16_t t);
|
||||||
extern void Tone(uint16_t f, uint8_t t);
|
extern void Tone(uint16_t f, uint8_t t);
|
||||||
extern void SetRatio(void);
|
extern void SetRatio(void);
|
||||||
|
extern void SetWeight(void);
|
||||||
extern void SidetoneDisable(void);
|
extern void SidetoneDisable(void);
|
||||||
extern void SidetoneEnable(void);
|
extern void SidetoneEnable(void);
|
||||||
extern void SidetoneOff(void);
|
extern void SidetoneOff(void);
|
||||||
|
@ -8,7 +8,8 @@
|
|||||||
// EEProm Speicher
|
// EEProm Speicher
|
||||||
uint8_t Dummy;
|
uint8_t Dummy;
|
||||||
uint8_t ee_Dummy EEMEM = 0x55; // Dummy for Address 0
|
uint8_t ee_Dummy EEMEM = 0x55; // Dummy for Address 0
|
||||||
uint8_t ee_TRX EEMEM = 0; // TRX 1 oder 2 oder beide
|
uint8_t ee_Trx1 EEMEM = 0; // TRX 1
|
||||||
|
uint8_t ee_Trx2 EEMEM = 0; // TRX 2
|
||||||
uint8_t ee_KeyerMode EEMEM = 1; // Iambic A, Iambic B oder Ultimatic
|
uint8_t ee_KeyerMode EEMEM = 1; // Iambic A, Iambic B oder Ultimatic
|
||||||
uint8_t ee_SidetoneEnabled EEMEM = 1; // Mithörton eingeschaltet
|
uint8_t ee_SidetoneEnabled EEMEM = 1; // Mithörton eingeschaltet
|
||||||
uint8_t ee_WpMBpM EEMEM = 0; // WpM oder BpM Anzeige
|
uint8_t ee_WpMBpM EEMEM = 0; // WpM oder BpM Anzeige
|
||||||
@ -22,6 +23,12 @@ uint8_t ee_WpM EEMEM = 12; // Geschwindigkeit WpM
|
|||||||
uint8_t ee_RiseTime EEMEM = 5; // Anstiegszeit Sinuston
|
uint8_t ee_RiseTime EEMEM = 5; // Anstiegszeit Sinuston
|
||||||
uint8_t ee_RiseTimeCounter EEMEM = 5; // Anzahl Sinusschwingungen für den Anstieg
|
uint8_t ee_RiseTimeCounter EEMEM = 5; // Anzahl Sinusschwingungen für den Anstieg
|
||||||
uint8_t ee_DebounceTime EEMEM = 6; // Entprellzeit für Straight Key Eingang
|
uint8_t ee_DebounceTime EEMEM = 6; // Entprellzeit für Straight Key Eingang
|
||||||
|
// Textspeicher
|
||||||
|
uint8_t ee_Msg1[100] EEMEM;
|
||||||
|
uint8_t ee_Msg2[100] EEMEM;
|
||||||
|
uint8_t ee_Msg3[100] EEMEM;
|
||||||
|
uint8_t ee_Msg4[100] EEMEM;
|
||||||
|
uint8_t ee_Msg5[100] EEMEM;
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
/** @fn void DelayMilliSeconds(uint16_t ms)
|
/** @fn void DelayMilliSeconds(uint16_t ms)
|
||||||
@ -100,7 +107,8 @@ void WriteEEprom(void)
|
|||||||
eeprom_write_byte(&ee_WpM, bConfig.WpM);
|
eeprom_write_byte(&ee_WpM, bConfig.WpM);
|
||||||
eeprom_write_byte(&ee_KeyerMode, bConfig.KeyerMode);
|
eeprom_write_byte(&ee_KeyerMode, bConfig.KeyerMode);
|
||||||
eeprom_write_word(&ee_SidetoneFreq, bConfig.SidetoneFreq);
|
eeprom_write_word(&ee_SidetoneFreq, bConfig.SidetoneFreq);
|
||||||
eeprom_write_byte(&ee_TRX, bConfig.TRX);
|
eeprom_write_byte(&ee_Trx1, bConfig.Trx1);
|
||||||
|
eeprom_write_byte(&ee_Trx2, bConfig.Trx2);
|
||||||
eeprom_write_byte(&ee_SidetoneEnabled, bConfig.SidetoneEnabled);
|
eeprom_write_byte(&ee_SidetoneEnabled, bConfig.SidetoneEnabled);
|
||||||
eeprom_write_byte(&ee_WpMBpM, bConfig.WpMBpM);
|
eeprom_write_byte(&ee_WpMBpM, bConfig.WpMBpM);
|
||||||
eeprom_write_byte(&ee_Reverse, bConfig.Reverse);
|
eeprom_write_byte(&ee_Reverse, bConfig.Reverse);
|
||||||
@ -152,7 +160,8 @@ void SetEEprom(void)
|
|||||||
bConfig.WpM = 15;
|
bConfig.WpM = 15;
|
||||||
bConfig.KeyerMode = 2;
|
bConfig.KeyerMode = 2;
|
||||||
bConfig.SidetoneFreq = 600;
|
bConfig.SidetoneFreq = 600;
|
||||||
bConfig.TRX = 1;
|
bConfig.Trx1 = 1;
|
||||||
|
bConfig.Trx2 = 0;
|
||||||
bConfig.SidetoneEnabled = 1;
|
bConfig.SidetoneEnabled = 1;
|
||||||
bConfig.WpMBpM = 1;
|
bConfig.WpMBpM = 1;
|
||||||
bConfig.Reverse = 0;
|
bConfig.Reverse = 0;
|
||||||
@ -164,6 +173,8 @@ void SetEEprom(void)
|
|||||||
bConfig.RiseTimeCounter = 5;
|
bConfig.RiseTimeCounter = 5;
|
||||||
bConfig.DebounceTime = 5;
|
bConfig.DebounceTime = 5;
|
||||||
WriteEEprom();
|
WriteEEprom();
|
||||||
|
|
||||||
|
sprintf(bMessage.Msg1,"CQ CQ CQ DE DL7BJ DL7BJ DL7BJ PSE K\n");
|
||||||
}
|
}
|
||||||
/** @fn void ReadEEprom(void)
|
/** @fn void ReadEEprom(void)
|
||||||
* @brief Einstellungen aus dem EEprom lesen
|
* @brief Einstellungen aus dem EEprom lesen
|
||||||
@ -183,7 +194,8 @@ void ReadEEprom(void)
|
|||||||
bConfig.WpM = eeprom_read_byte(&ee_WpM);
|
bConfig.WpM = eeprom_read_byte(&ee_WpM);
|
||||||
bConfig.KeyerMode = eeprom_read_byte(&ee_KeyerMode);
|
bConfig.KeyerMode = eeprom_read_byte(&ee_KeyerMode);
|
||||||
bConfig.SidetoneFreq = eeprom_read_word(&ee_SidetoneFreq);
|
bConfig.SidetoneFreq = eeprom_read_word(&ee_SidetoneFreq);
|
||||||
bConfig.TRX = eeprom_read_byte(&ee_TRX);
|
bConfig.Trx1 = eeprom_read_byte(&ee_Trx1);
|
||||||
|
bConfig.Trx2 = eeprom_read_byte(&ee_Trx2);
|
||||||
bConfig.SidetoneEnabled = eeprom_read_byte(&ee_SidetoneEnabled);
|
bConfig.SidetoneEnabled = eeprom_read_byte(&ee_SidetoneEnabled);
|
||||||
bConfig.WpMBpM = eeprom_read_byte(&ee_WpMBpM);
|
bConfig.WpMBpM = eeprom_read_byte(&ee_WpMBpM);
|
||||||
bConfig.Reverse = eeprom_read_byte(&ee_Reverse);
|
bConfig.Reverse = eeprom_read_byte(&ee_Reverse);
|
||||||
@ -277,6 +289,10 @@ void TXKey(uint8_t State)
|
|||||||
{
|
{
|
||||||
SidetoneOn();
|
SidetoneOn();
|
||||||
sbi(PORTC,MORSE_LED);
|
sbi(PORTC,MORSE_LED);
|
||||||
|
if(bConfig.Trx1)
|
||||||
|
sbi(PORTC,TRX1);
|
||||||
|
if(bConfig.Trx2)
|
||||||
|
sbi(PORTC,TRX2);
|
||||||
bState.KeyState = 1;
|
bState.KeyState = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -288,11 +304,25 @@ void TXKey(uint8_t State)
|
|||||||
{
|
{
|
||||||
SidetoneOff();
|
SidetoneOff();
|
||||||
cbi(PORTC,MORSE_LED);
|
cbi(PORTC,MORSE_LED);
|
||||||
|
if(bConfig.Trx1)
|
||||||
|
cbi(PORTC,TRX1);
|
||||||
|
if(bConfig.Trx2)
|
||||||
|
cbi(PORTC,TRX2);
|
||||||
}
|
}
|
||||||
bState.KeyState = 0;
|
bState.KeyState = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/** @fn void CheckButtons(void)
|
||||||
|
* @brief Fragt die Taster ab und löst entsprechende Funktion aus
|
||||||
|
* @param none
|
||||||
|
* @return none
|
||||||
|
*/
|
||||||
|
void CheckButtons(void)
|
||||||
|
{
|
||||||
|
if(!(PINB & (1<<MEM5)))
|
||||||
|
SendString(bMessage.Msg1);
|
||||||
|
}
|
||||||
/** @fn void CheckStraightKey(void)
|
/** @fn void CheckStraightKey(void)
|
||||||
* @brief Fragt die Handtasteneingänge ab und gibt das
|
* @brief Fragt die Handtasteneingänge ab und gibt das
|
||||||
* entsprechende Symbol aus. Bei der Handtaste
|
* entsprechende Symbol aus. Bei der Handtaste
|
||||||
@ -620,57 +650,70 @@ void BeepBoop(void)
|
|||||||
Boop();
|
Boop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SendString(char *s)
|
||||||
|
{
|
||||||
|
int c;
|
||||||
|
while(*s != 0x00)
|
||||||
|
{
|
||||||
|
if(*s != 0x20)
|
||||||
|
SendChar(*s);
|
||||||
|
else if (*s == 0x20)
|
||||||
|
{
|
||||||
|
DelayMilliSeconds(7*DahMillis);
|
||||||
|
}
|
||||||
|
*s++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void SendChar(unsigned char c)
|
void SendChar(unsigned char c)
|
||||||
{
|
{
|
||||||
switch(c)
|
switch(c)
|
||||||
{
|
{
|
||||||
// Buchstaben
|
// Buchstaben
|
||||||
/*
|
case 'A': SendDit(); SendDah(); break;
|
||||||
case 'A': SendDit(AUTO); SendDah(AUTO); break;
|
case 'B': SendDah(); SendDit(); SendDit(); SendDit(); break;
|
||||||
case 'B': SendDah(AUTO); SendDit(AUTO); SendDit(AUTO); SendDit(AUTO); break;
|
case 'C': SendDit(); SendDah(); SendDit(); SendDah(); break;
|
||||||
case 'C': SendDit(AUTO); SendDah(AUTO); SendDit(AUTO); SendDah(AUTO); break;
|
case 'D': SendDah(); SendDit(); SendDit(); break;
|
||||||
case 'D': SendDah(AUTO); SendDit(AUTO); SendDit(AUTO); break;
|
case 'E': SendDit(); break;
|
||||||
case 'E': SendDit(AUTO); break;
|
case 'F': SendDit(); SendDah(); SendDit(); SendDit(); break;
|
||||||
case 'F': SendDit(AUTO); SendDah(AUTO); SendDit(AUTO); SendDit(AUTO); break;
|
case 'G': SendDah(); SendDah(); SendDit(); break;
|
||||||
case 'G': SendDah(AUTO); SendDah(AUTO); SendDit(AUTO); break;
|
case 'H': SendDit(); SendDit(); SendDit(); SendDit(); break;
|
||||||
case 'H': SendDit(AUTO); SendDit(AUTO); SendDit(AUTO); SendDit(AUTO); break;
|
case 'I': SendDit(); SendDit(); break;
|
||||||
case 'I': SendDit(AUTO); SendDit(AUTO); break;
|
case 'J': SendDit(); SendDah(); SendDah(); SendDah(); break;
|
||||||
case 'J': SendDit(AUTO); SendDah(AUTO); SendDah(AUTO); SendDah(AUTO); break;
|
case 'K': SendDah(); SendDit(); SendDah(); break;
|
||||||
case 'K': SendDah(AUTO); SendDit(AUTO); SendDah(AUTO); break;
|
case 'L': SendDit(); SendDah(); SendDit(); SendDit(); break;
|
||||||
case 'L': SendDit(AUTO); SendDah(AUTO); SendDit(AUTO); SendDit(AUTO); break;
|
case 'M': SendDah(); SendDah(); break;
|
||||||
case 'M': SendDah(AUTO); SendDah(AUTO); break;
|
case 'N': SendDah(); SendDit(); break;
|
||||||
case 'N': SendDah(AUTO); SendDit(AUTO); break;
|
case 'O': SendDah(); SendDah(); SendDah(); break;
|
||||||
case 'O': SendDah(AUTO); SendDah(AUTO); SendDah(AUTO); break;
|
case 'P': SendDit(); SendDah(); SendDah(); SendDit(); break;
|
||||||
case 'P': SendDit(AUTO); SendDah(AUTO); SendDah(AUTO); SendDit(AUTO); break;
|
case 'Q': SendDah(); SendDah(); SendDit(); SendDah(); break;
|
||||||
case 'Q': SendDah(AUTO); SendDah(AUTO); SendDit(AUTO); SendDah(AUTO); break;
|
case 'R': SendDit(); SendDah(); SendDit(); break;
|
||||||
case 'R': SendDit(AUTO); SendDah(AUTO); SendDit(AUTO); break;
|
case 'S': SendDit(); SendDit(); SendDit(); break;
|
||||||
case 'S': SendDit(AUTO); SendDit(AUTO); SendDit(AUTO); break;
|
case 'T': SendDah(); break;
|
||||||
case 'T': SendDah(AUTO); break;
|
case 'U': SendDit(); SendDit(); SendDah(); break;
|
||||||
case 'U': SendDit(AUTO); SendDit(AUTO); SendDah(AUTO); break;
|
case 'V': SendDit(); SendDit(); SendDit(); SendDah(); break;
|
||||||
case 'V': SendDit(AUTO); SendDit(AUTO); SendDit(AUTO); SendDah(AUTO); break;
|
case 'W': SendDit(); SendDah(); SendDah(); break;
|
||||||
case 'W': SendDit(AUTO); SendDah(AUTO); SendDah(AUTO); break;
|
case 'X': SendDah(); SendDit(); SendDit(); SendDah(); break;
|
||||||
case 'X': SendDah(AUTO); SendDit(AUTO); SendDit(AUTO); SendDah(AUTO); break;
|
case 'Y': SendDah(); SendDit(); SendDah(); SendDah(); break;
|
||||||
case 'Y': SendDah(AUTO); SendDit(AUTO); SendDah(AUTO); SendDah(AUTO); break;
|
case 'Z': SendDit(); SendDit(); SendDah(); SendDah(); break;
|
||||||
case 'Z': SendDit(AUTO); SendDit(AUTO); SendDah(AUTO); SendDah(AUTO); break;
|
|
||||||
// Zahlen
|
// Zahlen
|
||||||
case '0': SendDah(AUTO); SendDah(AUTO); SendDah(AUTO); SendDah(AUTO); SendDah(AUTO); break;
|
case '0': SendDah(); SendDah(); SendDah(); SendDah(); SendDah(); break;
|
||||||
case '1': SendDit(AUTO); SendDah(AUTO); SendDah(AUTO); SendDah(AUTO); SendDah(AUTO); break;
|
case '1': SendDit(); SendDah(); SendDah(); SendDah(); SendDah(); break;
|
||||||
case '2': SendDit(AUTO); SendDit(AUTO); SendDah(AUTO); SendDah(AUTO); break;
|
case '2': SendDit(); SendDit(); SendDah(); SendDah(); break;
|
||||||
case '3': SendDit(AUTO); SendDit(AUTO); SendDit(AUTO); SendDah(AUTO); SendDah(AUTO); break;
|
case '3': SendDit(); SendDit(); SendDit(); SendDah(); SendDah(); break;
|
||||||
case '4': SendDit(AUTO); SendDit(AUTO); SendDit(AUTO); SendDit(AUTO); SendDah(AUTO); break;
|
case '4': SendDit(); SendDit(); SendDit(); SendDit(); SendDah(); break;
|
||||||
case '5': SendDit(AUTO); SendDit(AUTO); SendDit(AUTO); SendDit(AUTO); SendDit(AUTO); break;
|
case '5': SendDit(); SendDit(); SendDit(); SendDit(); SendDit(); break;
|
||||||
case '6': SendDah(AUTO); SendDit(AUTO); SendDit(AUTO); SendDit(AUTO); SendDit(AUTO); break;
|
case '6': SendDah(); SendDit(); SendDit(); SendDit(); SendDit(); break;
|
||||||
case '7': SendDah(AUTO); SendDah(AUTO); SendDit(AUTO); SendDit(AUTO); SendDit(AUTO); break;
|
case '7': SendDah(); SendDah(); SendDit(); SendDit(); SendDit(); break;
|
||||||
case '8': SendDah(AUTO); SendDah(AUTO); SendDah(AUTO); SendDit(AUTO); SendDit(AUTO); break;
|
case '8': SendDah(); SendDah(); SendDah(); SendDit(); SendDit(); break;
|
||||||
case '9': SendDah(AUTO); SendDah(AUTO); SendDah(AUTO); SendDah(AUTO); SendDit(AUTO); break;
|
case '9': SendDah(); SendDah(); SendDah(); SendDah(); SendDit(); break;
|
||||||
// Sonderzeichen
|
// Sonderzeichen
|
||||||
case '=': SendDah(AUTO); SendDit(AUTO); SendDit(AUTO); SendDit(AUTO); SendDah(AUTO); break;
|
case '=': SendDah(); SendDit(); SendDit(); SendDit(); SendDah(); break;
|
||||||
case '/': SendDah(AUTO); SendDit(AUTO); SendDit(AUTO); SendDah(AUTO); SendDit(AUTO); break;
|
case '/': SendDah(); SendDit(); SendDit(); SendDah(); SendDit(); break;
|
||||||
case '.': SendDit(AUTO); SendDah(AUTO); SendDit(AUTO); SendDah(AUTO); SendDit(AUTO); SendDah(AUTO); break;
|
case '.': SendDit(); SendDah(); SendDit(); SendDah(); SendDit(); SendDah(); break;
|
||||||
case ',': SendDah(AUTO); SendDah(AUTO); SendDit(AUTO); SendDit(AUTO); SendDah(AUTO); SendDah(AUTO); break;
|
case ',': SendDah(); SendDah(); SendDit(); SendDit(); SendDah(); SendDah(); break;
|
||||||
case '?': SendDit(AUTO); SendDit(AUTO); SendDah(AUTO); SendDah(AUTO); SendDit(AUTO); SendDit(AUTO); break;
|
case '?': SendDit(); SendDit(); SendDah(); SendDah(); SendDit(); SendDit(); break;
|
||||||
case '@': SendDit(AUTO); SendDah(AUTO); SendDah(AUTO); SendDit(AUTO); SendDah(AUTO); SendDit(AUTO); break;
|
case '@': SendDit(); SendDah(); SendDah(); SendDit(); SendDah(); SendDit(); break;
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ uint8_t sreg_tmp;
|
|||||||
void SymbolLoop(uint8_t Len);
|
void SymbolLoop(uint8_t Len);
|
||||||
void CheckPaddles(void);
|
void CheckPaddles(void);
|
||||||
void SetRatio(void);
|
void SetRatio(void);
|
||||||
void DitDahBuffers(void);
|
void SetWeight(void);
|
||||||
|
|
||||||
void SendDit(void);
|
void SendDit(void);
|
||||||
void SendDah(void);
|
void SendDah(void);
|
||||||
|
@ -115,7 +115,10 @@
|
|||||||
// LCD
|
// LCD
|
||||||
#define CLEARLINE " "
|
#define CLEARLINE " "
|
||||||
#define NORMAL 0
|
#define NORMAL 0
|
||||||
|
// Texte
|
||||||
|
#define CQ "CQ"
|
||||||
|
#define DE "DE"
|
||||||
|
#define K "PSE K"
|
||||||
// Debugausgabe
|
// Debugausgabe
|
||||||
char sdebug[64];
|
char sdebug[64];
|
||||||
|
|
||||||
@ -152,7 +155,8 @@ struct MenuCtrl
|
|||||||
|
|
||||||
struct Config
|
struct Config
|
||||||
{
|
{
|
||||||
uint8_t TRX: 2; // TRX 1 oder 2 oder beide
|
uint8_t Trx1: 1; // TRX 1 eingeschaltet
|
||||||
|
uint8_t Trx2: 1; // TRX 2 eingeschaltet
|
||||||
uint8_t KeyerMode: 3; // Iambic A, Iambic B oder Ultimatic
|
uint8_t KeyerMode: 3; // Iambic A, Iambic B oder Ultimatic
|
||||||
uint8_t SidetoneEnabled: 1; // Mithörton eingeschaltet
|
uint8_t SidetoneEnabled: 1; // Mithörton eingeschaltet
|
||||||
uint8_t WpMBpM: 1; // WpM oder BpM Anzeige
|
uint8_t WpMBpM: 1; // WpM oder BpM Anzeige
|
||||||
@ -167,6 +171,19 @@ struct Config
|
|||||||
uint8_t RiseTimeCounter; // Anzahl Sinusschwingungen für den Anstieg
|
uint8_t RiseTimeCounter; // Anzahl Sinusschwingungen für den Anstieg
|
||||||
uint8_t DebounceTime; // Entprellzeit für Straight Key Eingang
|
uint8_t DebounceTime; // Entprellzeit für Straight Key Eingang
|
||||||
};
|
};
|
||||||
|
struct Message
|
||||||
|
{
|
||||||
|
char Msg1[100];
|
||||||
|
char Msg2[100];
|
||||||
|
char Msg3[100];
|
||||||
|
char Msg4[100];
|
||||||
|
char Msg5[100];
|
||||||
|
char Call[16];
|
||||||
|
char Locator[6];
|
||||||
|
char QTH[32];
|
||||||
|
char Name[16];
|
||||||
|
};
|
||||||
|
|
||||||
// Pin Change Interrupt Merker für Port
|
// Pin Change Interrupt Merker für Port
|
||||||
uint8_t LastPINDState;
|
uint8_t LastPINDState;
|
||||||
|
|
||||||
|
@ -129,21 +129,29 @@ void Init(void)
|
|||||||
sbi(PORTB,PB1);
|
sbi(PORTB,PB1);
|
||||||
sbi(PORTB,PB2);
|
sbi(PORTB,PB2);
|
||||||
sbi(PORTB,PB3);
|
sbi(PORTB,PB3);
|
||||||
sbi(PORTB,PB5);
|
// Tasten
|
||||||
|
sbi(PORTD,MEM1);
|
||||||
|
sbi(PORTD,MEM2);
|
||||||
|
sbi(PORTD,MEM3);
|
||||||
|
sbi(PORTC,MEM4);
|
||||||
|
sbi(PORTB,MEM5);
|
||||||
|
|
||||||
sbi(PORTB,AUDIO_EN);
|
sbi(PORTB,AUDIO_EN);
|
||||||
// Ein- und Ausgänge festlegen
|
// Ein- und Ausgänge festlegen
|
||||||
|
// PORTB Ausgänge
|
||||||
sbi(DDRB,PB3); // PWM
|
sbi(DDRB,PB3); // PWM
|
||||||
sbi(DDRB,AUDIO_EN); // Audio Verstärker
|
sbi(DDRB,AUDIO_EN); // Audio Verstärker
|
||||||
// PORTC
|
// PORTC Ausgänge
|
||||||
sbi(DDRC,MORSE_LED);
|
sbi(DDRC,MORSE_LED); // LED
|
||||||
// PORTD
|
sbi(DDRC,TRX1); // Transceiver 1
|
||||||
// Ein- und Ausgänge festlegen
|
sbi(DDRC,TRX2); // Transceiver 2
|
||||||
|
// PORTD Eingänge
|
||||||
DDRD = 0x00;
|
DDRD = 0x00;
|
||||||
// Interne PullUps für die Eingänge abschalten
|
// Interne PullUps für die Eingänge abschalten
|
||||||
cbi(PORTD,LEFT_PADDLE);
|
cbi(PORTD,LEFT_PADDLE);
|
||||||
cbi(PORTD,RIGHT_PADDLE);
|
cbi(PORTD,RIGHT_PADDLE);
|
||||||
cbi(PORTD,STRAIGHT_KEY);
|
cbi(PORTD,STRAIGHT_KEY);
|
||||||
// Init serial
|
// Serielle Schnittstelle
|
||||||
UBRR0=UBRR_VALUE; // Set baud rate
|
UBRR0=UBRR_VALUE; // Set baud rate
|
||||||
sbi(UCSR0B,TXEN0); // Enable TX
|
sbi(UCSR0B,TXEN0); // Enable TX
|
||||||
sbi(UCSR0B,RXEN0); // Enable RX
|
sbi(UCSR0B,RXEN0); // Enable RX
|
||||||
@ -151,7 +159,16 @@ void Init(void)
|
|||||||
sbi(UCSR0C,UCSZ01); // no parity, 1 stop bit
|
sbi(UCSR0C,UCSZ01); // no parity, 1 stop bit
|
||||||
sbi(UCSR0C,UCSZ01); // 8-bit data
|
sbi(UCSR0C,UCSZ01); // 8-bit data
|
||||||
|
|
||||||
|
// Alle Timer Variablen rücksetzen
|
||||||
|
StateRiseTimeCounter = 0;
|
||||||
|
MenuCtrlTimer = 0;
|
||||||
|
EncoderTimer = 0;
|
||||||
|
StoreEEprom = 0;
|
||||||
|
t_elementlength = 0;
|
||||||
|
t_delayms = 0;
|
||||||
|
// Timer initialisieren
|
||||||
InitTimer();
|
InitTimer();
|
||||||
|
// Encoder initialisieren
|
||||||
EncoderInit();
|
EncoderInit();
|
||||||
// Initialisierung Menüvariablen
|
// Initialisierung Menüvariablen
|
||||||
bMenuCtrl.ClrScr = 1;
|
bMenuCtrl.ClrScr = 1;
|
||||||
@ -288,8 +305,6 @@ ISR(USART_RX_vect)
|
|||||||
*/
|
*/
|
||||||
void ReStart(void)
|
void ReStart(void)
|
||||||
{
|
{
|
||||||
MenuCtrlTimer = 0;
|
|
||||||
t_delayms = 0;
|
|
||||||
bState.SendStatus = SENDING_NOTHING;
|
bState.SendStatus = SENDING_NOTHING;
|
||||||
Init();
|
Init();
|
||||||
DisplayVersion();
|
DisplayVersion();
|
||||||
@ -341,5 +356,6 @@ int main(void)
|
|||||||
UpdateDisplay(); // Display aktualisieren
|
UpdateDisplay(); // Display aktualisieren
|
||||||
CheckStraightKey(); // Handtaste auf Betätigung prüfen
|
CheckStraightKey(); // Handtaste auf Betätigung prüfen
|
||||||
CheckPaddles(); // Paddles auf Betätigung prüfen
|
CheckPaddles(); // Paddles auf Betätigung prüfen
|
||||||
|
CheckButtons();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
struct Config bConfig;
|
struct Config bConfig;
|
||||||
struct MenuCtrl bMenuCtrl;
|
struct MenuCtrl bMenuCtrl;
|
||||||
struct State bState;
|
struct State bState;
|
||||||
|
struct Message bMessage;
|
||||||
// Function prototypes
|
// Function prototypes
|
||||||
void Init(void);
|
void Init(void);
|
||||||
void InitTimer(void);
|
void InitTimer(void);
|
||||||
|
@ -30,7 +30,9 @@ void SerialSetup(void)
|
|||||||
SerialWriteString(sdebug);
|
SerialWriteString(sdebug);
|
||||||
sprintf(sdebug,"SidetoneFreq : %u\r\n", bConfig.SidetoneFreq);
|
sprintf(sdebug,"SidetoneFreq : %u\r\n", bConfig.SidetoneFreq);
|
||||||
SerialWriteString(sdebug);
|
SerialWriteString(sdebug);
|
||||||
sprintf(sdebug,"TRX : %i\r\n", bConfig.TRX);
|
sprintf(sdebug,"TRX1 : %i\r\n", bConfig.Trx1);
|
||||||
|
SerialWriteString(sdebug);
|
||||||
|
sprintf(sdebug,"TRX2 : %i\r\n", bConfig.Trx2);
|
||||||
SerialWriteString(sdebug);
|
SerialWriteString(sdebug);
|
||||||
sprintf(sdebug,"SidetoneEnabled : %i\r\n", bConfig.SidetoneEnabled);
|
sprintf(sdebug,"SidetoneEnabled : %i\r\n", bConfig.SidetoneEnabled);
|
||||||
SerialWriteString(sdebug);
|
SerialWriteString(sdebug);
|
||||||
@ -63,3 +65,4 @@ void SerialAbout(void)
|
|||||||
SerialWriteString(sdebug);
|
SerialWriteString(sdebug);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Laden…
x
In neuem Issue referenzieren
Einen Benutzer sperren