Stand-alone-Morse-Keyboard mit ATtiny 85

  • Moin, moin,


    ich kann Telegrafie schneller hören als geben (zu Anfang war es mal umgekehrt). Trotz reichlich Morse-Praxis - meist per ICW - komme ich beim Geben mit dem Paddle kaum über 33 WpM.


    Da ich nur "Second Class Operator" bin (SOC Nr. 1315), habe ich keine Berührungsängste mit "elektronischen Prothesen". Daher entstand die Idee, mal den Betrieb mit einer Morse-Tastatur auszuprobieren.


    Wird zwar von vielen abgelehnt, aber ein Elbug ist ja auch eine elektronische Prothese (die jedoch allgemein akzeptiert wird). Morse-Decoder finde ich jedoch nicht sinnvoll, weil die einfach zu unvollkommen für praktischen Betrieb sind.


    Ich kann nur mit zwei Fingern tippen, aber es reicht auch über längere Zeit für Tempo 40 Wpm (habe gerade eine halbe Stunde 2-way-QSO mit Morse-Keyboards hinter mir - Decodierung aber per 2-way Brain, keine Software).


    Wird keinen interessieren ;) - aber falls doch: hier der Link auf einen Beitrag in DK7JDs Elektronik-Labor: https://www.elektronik-labor.de/avr/morse-keyboard.html


    73,

    Ralf

  • Moin,

    Wird zwar von vielen abgelehnt

    Taste ist Taste ;)

    Ich kann nur mit zwei Fingern tippen, aber es reicht auch über längere Zeit für Tempo 40 Wpm (habe gerade eine halbe Stunde 2-way-QSO mit Morse-Keyboards hinter mir - Decodierung aber per 2-way Brain, keine Software).

    200 Anschläge pro Minute mit 2 Fingern ist aber echt sportlich.


    73, Tom

  • Na ja,


    man kann ja durchgehend Kleinbuchstaben verwenden, und der "word mode" sorgt dafür, dass es nicht mitten im Wort zu Pausen kommt, falls der Vorschreibpuffer mal leer läuft. Das passiert mir nach zu vielen Vertippern.


    Ansporn für die Sache war dieses Video von W5UXH; der kann das wirklich ;)


    External Content www.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.


    Bei DEM Tempo bekomme ich aber nix mehr mit.....


    73,

    Ralf

  • Hallo Ralf,

    ein interessantes Projekt, welches anschaulich zeigt, was so ein 8-beiniger Käfer alles kann.

    Bruce, W8BH, hat mit der Arduino IDE ein Programm in C für eine Morsetastatur mit einem Seeeduino XIAO geschrieben und noch eine OLED-Anzeige spendiert:

    http://w8bh.net/KeyboardKeyer.pdf

    CPU: Arm Cortex-M0+ 32-bit 48 MHz, MC SAMD21G18 mit 256 KB Flash und 32 KB SRAM.


    Viel Spaß beim Lesen,

    73, Roland, DF8IW

  • Moin,

    CPU: Arm Cortex-M0+ 32-bit 48 MHz, MC SAMD21G18 mit 256 KB Flash und 32 KB SRAM.

    ne'n ARM Cortex verwenden und dann im Code ständig diese unsägliche delay() Funktion, sehr effizient ;)


    73, Tom

  • Danke. Mich interessierts. Sehr cool. Ich liebe den 85iger.

  • Daher entstand die Idee, mal den Betrieb mit einer Morse-Tastatur auszuprobieren.

    Moin Ralf,


    Tastaturen - sei es im Verbund mit dem PC oder autark wie hier - sind bei sehr hohem Tempo durchaus üblich. Und, wie ich finde, keine Schande. Der eine oder andere ist mit zunehmendem Alter oft nicht mehr so gelenkig, dass er hohes Tempo auf den üblichen Wegen geben kann. Wenn es mit der Tastatur leichter und schmerzfreier geht, warum denn nicht?

    Decodierung aber per 2-way Brain, keine Software

    Genau das ist der Punkt. So soll(te) es sein. :thumbup:

    73 Michael, DF2OK.

    ~ AFU seit 1975 ~ DARC ~ G-QRP-Club ~ DL-QRP-AG ~ AGCW ~ FISTS ~ QRPARCI ~ SKCC ~

    ~ CW ~ SSB ~ RTTY ~ SSTV ~ ATV ~ SAT ~ FM ~ PR ~ PSK31 ~

    QRP: DK6SX-TRX 40m | Sierra Allband+KC2+DLQRP-PA | DK1HE-TRX 20+15m | Norcal-20 | SMiTe (SMD-Pixie-2) | QRP-40 mini | ELBC-Mini 40m | HB-1A | MA12/40 | TenTec Scout 555 & Argonaut II | diverse RX+TX | Meßtechnik, NT, ATU, Antennen, Portabeltechnik, Konverter, Transverter, Keyer, ATV-Restseitenband-TX, PA es VV, div. Zubehör. | THT es SMT |

  • Moin,

    Warum nicht ein 6 $ - Modul nehmen ? ; egal wie leistungsfähig es ist.

    da habe ich kein Problem mit!


    Nur mit dem delay() aus der Arduino-Bibliothek. In einem Stück Code hatte ich das sogar mal in einer Interruptroutine gesehen! Wie soll denn ein Bastler das richtig lernen, wenn überall nur delay() verwendet wird? :/Dabei werden Dinge wie millis() und andere Timerfunktionen mitgeliefert.


    73, Tom

  • Huch,


    das Thema ist ja wieder hoch geploppt; ich hatte erwartet, dass es (fast) kommentarlos aus der Liste der letzten Beiträge herausfallen wird....


    Versuch einer Sammelantwort:


    @ DF8IW:


    Danke für den Link zur W8BH-Morse-Tastatur; die hatte ich aber schon vorher bei der Suche nach der PS/2-Stecker-Belegung gefunden (und mir da auch eine Grafik "ausgeborgt").



    @ OE9SAU:


    Mein Lieblings-Attiny ist der ATtiny13, weil ich eh' nur einfache Sachen hinkriege. Nur wenn der nicht reicht, wird's ein ATtiny85 oder Atiny84.



    @ DF2OK:


    Morse-Tastaturen oder -Programme sind wohl eher was für Contester und 599-Funker. Bei den CW-RagChewern sind sie wohl eher verpönt; bei den *HSC-Vereinen sind Decoder und auch Tastaturen ausdrücklich für die "Sponsor-QSOs" untersagt. Vielleicht wird hinsichtlich der Tastaturen aufgrund des zunehmenden Remote-Betriebes ein Umdenken einsetzen.


    73,

    Ralf

  • Moin Ralf,

    HSC-Vereinen sind Decoder und auch Tastaturen ausdrücklich für die "Sponsor-QSOs" untersagt.

    korrekt. Aber es gibt ein Funkbetriebsleben neben HSC und Co. ;)

    73 Michael, DF2OK.

    ~ AFU seit 1975 ~ DARC ~ G-QRP-Club ~ DL-QRP-AG ~ AGCW ~ FISTS ~ QRPARCI ~ SKCC ~

    ~ CW ~ SSB ~ RTTY ~ SSTV ~ ATV ~ SAT ~ FM ~ PR ~ PSK31 ~

    QRP: DK6SX-TRX 40m | Sierra Allband+KC2+DLQRP-PA | DK1HE-TRX 20+15m | Norcal-20 | SMiTe (SMD-Pixie-2) | QRP-40 mini | ELBC-Mini 40m | HB-1A | MA12/40 | TenTec Scout 555 & Argonaut II | diverse RX+TX | Meßtechnik, NT, ATU, Antennen, Portabeltechnik, Konverter, Transverter, Keyer, ATV-Restseitenband-TX, PA es VV, div. Zubehör. | THT es SMT |

  • Moin Michael,

    korrekt. Aber es gibt ein Funkbetriebsleben neben HSC und Co. ;)

    und neben Contests & Co, abseits von 599 tu.


    Taste ist Taste - ob es nun die red Switches von Cherry oder Begali sind ;) Und wo genau ist der Unterschied zwischen einem Memory-Keyer und einer PC-Tastatur? Bei beiden werden die Zeichen nicht mehr von Hand geformt, nur angetriggert. Wenn elektronisches Geben so verpönt ist, dann müssten auch alle Keyer von den Tischen verschwinden und die Junker aus der Schublade geholt werden. Es geht hier ja nicht um Dekoder, gehört wird weiterhin mit den Ohren.


    73, Tom

  • Post by dk2jk ().

    This post was deleted by the author themselves: mein Beitrag war zu emotional ().
  • Moin Heribert,

    Delay() stammt aus dem Projekt 'Arduino', das viele interessierte Menschen dazu ermuntert hat , sich überhaupt mit der Programmierung von Mikroprozessoren zu beschäftigen. Es geht doch darum, dass man überhaupt an die Materie herankommt.

    millis() auch und ist ja nun echt simpel. Nur kann die CPU in der Wartezeit dann auch andere Dinge tun.


    73, Tom

  • Hallo Tom,


    die wenigsten Programmieren noch und kennen einen Ereignis- und zeitgesteuerte Programmausführung.


    Credo: Es wird nicht mehr gewartet.


    Interrupts werden der Hauptprogrammschleife nur noch signalisiert.


    Es wird eine immer konstante Programmzykluszeit vorausgesetzt.

    Z.B. 1 ms oder 10 ms.


    Eingaben über Taster und Keyswitches werden korrekt Entprellt und nur die Ereignisse, wurde "gedrückt", wurde "losgelassen" usw. übermittelt.


    (Teil-)Programmcode wird in kleine Teile zerlegt, die man nun in der Programmzykluszeit einfach unterbringen kann.

    So wird der gesamte (Teil-)Programmcode mit N-Durchläufen einer Programmzykluszeit abgearbeitet.

  • DL7BJ, DC5PI

    Hallo ihr Programmierer,

    ihr krittelt etwas am Keyboard-Keyer-Code von W8BU herum, weil er die "unsägliche" delay() Funktion benutzt.

    Ich habe mir den Code angeschaut und finde nur drei Verwendungen:

    delay(ditPeriod); delay(msWait); delay(100);

    „Alle Wege führen nach Rom.“

    Mag sein, dass es aus akademischer Sicht alternative Funktionen gibt, die ein paar Millisekunden sparen.

    Wir reden hier über einen Codeumsetzer, bei dem zeitunkritisch Signale von Hand über eine Tastatur eingegeben werden.

    Der Sketch verwendet nur 54980 Bytes (20%) des Programmspeicherplatzes.

    Ich bin kein Programmierer, aber ich meine, die Kritik an der Verwendung der delay(); ist hier weit hergeholt.

    Bleibt Cool, 73, Roland, DF8IW ;)

  • Moin Roland,

    Mag sein, dass es aus akademischer Sicht alternative Funktionen gibt, die ein paar Millisekunden sparen

    darum geht es aber nicht! https://randomnerdtutorials.co…e-arduino-delay-function/


    Blocking functions sind auf Microcontrollern und unter Multitasking Systemen einfach nur Mist, das hat man vor Jahrzehnten schon nicht gemacht. Vor allem, weil Arduino in der Umgebung millis() für die einfache Anwendung liefert. Wenn man das schon lernen möchte, dann gleich richtig und Hände weg von delay()!


    73, Tom

  • Hallo Tom,

    ok, Du hast mich überzeugt.

    Der Link liefert die ausführliche Erklärung.

    Ich werde von nun an delay(); vermeiden :)

    Danke, Roland, DF8IW

  • Der Link liefert die ausführliche Erklärung.

    Hab' ihn mir auch mal angesehen und durchgelesen. Find die Erklärung(en) dort gut.

    73 Michael, DF2OK.

    ~ AFU seit 1975 ~ DARC ~ G-QRP-Club ~ DL-QRP-AG ~ AGCW ~ FISTS ~ QRPARCI ~ SKCC ~

    ~ CW ~ SSB ~ RTTY ~ SSTV ~ ATV ~ SAT ~ FM ~ PR ~ PSK31 ~

    QRP: DK6SX-TRX 40m | Sierra Allband+KC2+DLQRP-PA | DK1HE-TRX 20+15m | Norcal-20 | SMiTe (SMD-Pixie-2) | QRP-40 mini | ELBC-Mini 40m | HB-1A | MA12/40 | TenTec Scout 555 & Argonaut II | diverse RX+TX | Meßtechnik, NT, ATU, Antennen, Portabeltechnik, Konverter, Transverter, Keyer, ATV-Restseitenband-TX, PA es VV, div. Zubehör. | THT es SMT |

  • Moin,


    das ist fein!


    Wobei der Code in dem Link für die Verwendung von millis() auch wieder so ein gutes Beispiel ist, wie umständlich das manchmal mit Arduino Lösungen dargestellt wird.

    Bei allen neueren ATMega Controllern geht das simpler und schneller, z.B.Pin 13 vom Arduino Uno (PortB, Pin PB5) zu schalten. Man muss bei einem Blinklicht nicht wissen, ob der gerade an oder aus ist, einfach umschalten langt.

    Code
    if (currentMillis - previousMillis >= interval) {
        // save the last time you blinked the LED
        previousMillis = currentMillis;
        PORTB ^= (1<<PB5);   
      }

    73, Tom