Morsetrainer Zusatzfunktionen            


Elektronik-Labor  Projekte 



Video: https://youtu.be/94BStM_jTQ8

Bedienunsanleitung: Morsetrainer.pdf

Im Modul-Bus-Shop: https://www.ak-modul-bus.de/stat/morsetaste_und_morsetrainer_cw_trainer,pd930!0,,CW-TRAINER.html

Enwicklung, Schaltbild und Firmware:

22.3.21: Touch-Key Morsetrainer
23.3.21: Touch-Morsetaste mit dem PFS154
26.3.21: Morseübungen mit dem PSF154

Inzwischen ist die Platine fertig produziert. Bei den ersten Tests hat sich gezeigt, dass die Controller sich geringfügig in der Frequenz des internen Oszillators unterscheiden. Trotz gleicher Firmware hat man daher geringe Unterschiede in der Tonhöhe und der Morsegeschwindigkeit. Das schafft eine gute Ausgangssituation für Morse-Übungsgruppen, denn es entspricht der realen Situation auf den Kurzwellenbändern, wo sich die Stationen leicht am Klang unterscheiden lassen.

Zu den Zusatzfunktionen des Geräts gehört der Morsespeicher, den man wahlweise mit der einfachen Taste (Programm 6) oder der Automatiktaste (Programm 7) betreiben kann.




		if (prog == 6 || prog == 7)  			 //Morsespeicher Key/Elbug
{
word p, s, l, z;
Beep(); Beep(); Beep();
n = 60;
p = array; //Pointer
z = 0; l = 0;
do
{
if (prog == 6) {Key();} Else {Elbug();}
if (PA.5 == 0) {A = 2;}
} while (A < 2); //Erstes Zeichen abwarten
*p = A;
p++;
do
{
if (prog == 6) {Key();} Else {Elbug();}
*p = A;
p++;
l++;
if (A>1) {z = 0;} else {z++;}
if (Z > 3) {n = 1;}
if (PA.5 == 0) {n = 1;}
}while (--n);
.delay (50000);
s = 0;
do
{
.delay (50000);
p = array;
n = l;
do
{
A = *p;
if (PA.5 == 0) {A = 1;}
if (A > 1) {CW_Out(); s = 0;}
else {s++;}
if (s > 0)
{
if (Speed ==1) {.delay(25000);}
if (Speed ==2) {.delay(18800);}
if (Speed ==3) {.delay(15000);}
if (Speed ==4) {.delay(12500);}
}
p++;
if (PA.5 == 0) {n = 1;}
}while (--n);
Jumper (); //Speed ändern?
} while (PA.5 == 1);
}




Die letzten Funktionen erlauben die Steuerung von Ausgängen durch Morsezeichen. Man kann damit bestimmt LED-Muster schalten, aber auch externe Verbraucher steuern. Eine typische Anwendung wäre die Umschaltung von Antennen in einer Amateurfunkstation.

		if (prog == 11 || prog == 12 )  //CW steuert LEDs
{
word p, s, l, z;
Beep(); Beep(); Beep();
do
{
do
{
if (prog == 11) {Key();} Else {Elbug();}
if (PA.5 == 0) {A = 2;}
} while (A < 2); //Zeichen abwarten

if (A == 0b00000101) {PA = 0b00000000; PB = 0b00000000;} //A 0
if (A == 0b00011000) {PA = 0b01000000; PB = 0b00000000;} //B 1
if (A == 0b00011010) {PA = 0b10000000; PB = 0b00000000;} //C 2
if (A == 0b00001100) {PA = 0b11000000; PB = 0b00000000;} //D 3
if (A == 0b00000010) {PA = 0b00000000; PB = 0b10000000;} //E 4
if (A == 0b00010010) {PA = 0b01000000; PB = 0b10000000;} //F 5
if (A == 0b00001110) {PA = 0b10000000; PB = 0b10000000;} //G 6
if (A == 0b00010000) {PA = 0b11000000; PB = 0b10000000;} //H 7
if (A == 0b00000100) {PA = 0b00000000; PB = 0b01000000;} //I 8
if (A == 0b00010111) {PA = 0b01000000; PB = 0b01000000;} //J 9
if (A == 0b00001101) {PA = 0b10000000; PB = 0b01000000;} //K 10
if (A == 0b00010100) {PA = 0b11000000; PB = 0b01000000;} //L 11
if (A == 0b00000111) {PA = 0b00000000; PB = 0b11000000;} //M 12
if (A == 0b00000110) {PA = 0b01000000; PB = 0b11000000;} //N 13
if (A == 0b00001111) {PA = 0b10000000; PB = 0b11000000;} //O 14
if (A == 0b00010110) {PA = 0b11000000; PB = 0b11000000;} //P 15

} while (PA.5 == 1);

Insgesamt können mit den vier Jumpern auf der Platine bis zu 15 Programme ausgewählt werden. Drei davon sind noch frei für künftige Erweiterungen


Elektronik-Labor  Projekte