Forum: Mikrocontroller und Digitale Elektronik ATtiny12: Programm für Morse-Ausgabe auf LED gesucht


von Cyberman (Gast)


Lesenswert?

Ich möchte mit einem ATtiny12 eine LED ansteuern, die einen Text als
Morsesignale ausgibt. Hat jemand ein passendes Programm dafür?

von Hannes L. (hannes)


Lesenswert?

Die "Machbarkeitsstudie" wirft weitere Fragen auf:

Immer denselben Text?
Woher soll der Tiny12 die auszugebenden Texte holen?
Wie willst du den Tiny12 bedienen?

...

von Cyberman (Gast)


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.

von Hannes L. (hannes)


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...

...

von Läubi (Gast)


Lesenswert?

http://www.rowalt.de/mc/avr/fox/fox01.htm
Da mosrt der "Fuchs" zwar, aber du kannst das Programm vieleicht
anpassen, das es statdessen ne LED leuchten läßt :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.