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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.