ATtiny12: Programm für Morse-Ausgabe auf LED gesucht

Gast #350956
Lesenswert?

Ja, es soll in einer Schleife immer wieder der gleiche Text
ausge"blinkt" werden. Gut wäre, wenn die Länge von "dit" und
"dah" und die Gebegeschwindigkeit im Programmcode über eine Variable
einstellbar wären. Der Morsetext selbst soll ebenfalls im Programmcode
stehen, in Ascii, z.B. als .db String.
#350957
Lesenswert?

Das ist realisierbar. Ich habe sowas zwar noch nicht gemacht, auch noch
nicht tiefer darüber nachgedacht, ich würde erstmal so herangehen (die
Funkamateure haben da sicher bessere Lösungen):

Leg den Text mit .db in den Flash, ebenso eine Tabelle
ASCII-Morsecode.
Dazu würde sich anbieten, 5 Bit des Morsecodebytes (Morsecode hat m.E.
maximal 5 Zeichen) als Code (Punkt=0, Strich=1 oder umgedreht) zu
werten und die 3 übrigen Bit geben an, wieviele Zeichen der Morsecode
hat.
Alternativ zur Tabelle ASCII-Morsecode kannst du den Text gleich auf
dem PC in Morsecode wandeln und in den Quelltext des Programms
übernehmen, das spart Flash und Rechenarbeit.

Im Programm richtest du dir einen Timer-Interrupt ein, in dem du Tasten
entprellst (Einstellung des Ausgabetempos mittels Up/down-Tasten, durch
die der Timer-Reload verändert wird) und die Softwarezähler für die
Abarbeitung des Morsecodes gezählt werden. Für jeden Punkt setzt du den
Softwaretimer auf einen definierten Wert+Pausenwert im Morsezeichen, für
jeden Strich auf das Dreifache+Pausenwert im Morsezeichen, für jede
Pause einen noch höheren Wert. Beim Ablauf des Zählers wird auf den
Pausenwert innerhalb des Morsezeichens (und bei Gleichheit das Licht
ausgemacht) und auf 0 getestet (nächstes Bit holen, oder Byte, falls
Bitzähler abgelaufen ist, dann Pause senden).

Das ist im Prinzip eine einfache Ablaufsteuerung, die komplett im
Timer-Interrupt laufen kann.

Ich halte es auch für machbar, den Timer-Interrupt mit einer
Tonfrequenz laufen zu lassen und die Zeichenerzeugung über einen
weiteren Softwareteiler (einstellbarer Reload wegen Ausgabetempo)
vorzunehmen. Dann kannst du einen zweiten Ausgang mit der Tonfrequenz
schalten und neben der LED auch einen Kopfhörer anschließen.

Als Taktquelle reicht der interne RC-Oszillators des Tiny12, selbst
ohne Calibration müsste die Rechenleistung ausreichen.

Also, mach' dich ran...

...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren