www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SoftUART für MIDI - richtig so?


Autor: Hugoderwolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich will einen MIDI-Input für meine Schaltung, die bisher nur aus 'nem
8515 und einem 16x4-LCD besteht, implementieren, aber das eingebaute
UART des uC will ich mir noch für andere Dinge (wenn das Ding mehr kann
soll es evt. per RS232 konfiguriert werden können) aufheben. Daher will
ich das lieber über ein eigenes Software-UART lösen, dabei lerne ich
wenigstens noch was.
Leider sind meine Infos noch etwas Lückenhaft, ich habe aber einen Plan
und bitte euch, den kurz querzulesen:

Erstmal per Opto-Koppler einen ordentlichen Pegel vom MIDI-Kabel holen.
Input-Leitung darüber an einen Interrupt-Pin anschließen.
Wenn das Startbit kommt, wird ein Interrupt ausgelöst, der wiederum
sich selbst erstmal von der Leitung nimmt und fix einen Timer startet,
der gemäß der Baudrate die 8 Datenbits holt, sich das Stoppbit kurz
ansieht, sich deaktiviert und dann wieder den Interrupt am Pin
aktiviert. Dabei würde ich eine Zählvariable zu Anfang auf 8 setzen und
solange sie nicht 0 wird das Bit entgegennehmen. Dann nach jedem Bit
freilich den Zähler dekrementieren und anschließend vergewissern, dass
das Stoppbit kommt. Wenn Stopp ist, ein Statusbit setzen, das im
Mainloop abgefragt und entsprechend behandelt wird. Klingt schonmal
ganz nett.

- Würde das auch jemand machen, der sich damit auskennt, oder gibt es
elegantere Lösungen?
- Was mache ich eigentlich, wenn nicht wie erwartet das Stoppbit (Low)
kommt, sondern das Ding auf einmal High ist?
- Dass bei MIDI 8 Datenbits kommen ist anhand des Protokolls klar, aber
wie ist es mit 'nem Parity-Bit? Und werden nicht zufällig 2 Stoppbits
gesendet?
- Was würdet ihr noch an Fehlerbehandlung einbauen?

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soft-UARTS werden hier im Forum mehrfach beschrieben.
Atmel hat auch eine Application Note zu dem Thema.
Da Du ja scheinbar nur einen Empfänger realisieren willst, hält sich
der Aufwand in Grenzen. (Ein Nur-Sender ist noch einfacher...).

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.