www.mikrocontroller.net

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


Autor: Cyberman (Gast)
Datum:

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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die "Machbarkeitsstudie" wirft weitere Fragen auf:

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

...

Autor: Cyberman (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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...

...

Autor: Läubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.