www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Midi-Befehle mit einem Atmega 16 senden


Autor: Manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich will mit einem Atmega 16 Midibefehle an einen PC senden. Dazu habe 
ich eine USB-MIDI-Schnittstelle, die ich am PC mit MIDI-OX überwache. 
Ich habe die Schaltung nach diesem
(http://www.ucapps.de/howtodebug/mbhp_core_extract_...)
Schaltplan aufgebaut und ein kleines Testprogramm geschrieben.

Das Problem ist: Es geht überhaupt gar nix; MIDI-OX zeigt nichts an! 
(wenn ich ein Instrument anschließe geht alles einwandfrei; an der 
Schnittstelle liegts nicht!)

Ich hab schon mehrere Internetseiten durchforstet; bin ratlos :-( !

Hier ist mein Testprogramm: CPU läuft @ 8Mhz intern

int main (){
 DDRD = 0xff;
 PORTD = 0;
 cli();
 UCSRB |= ( 1 << TXEN );      // UART TX einschalten
 UCSRC |= ( 1 << URSEL )|( 3<<UCSZ0 );    // Asynchron 8N1
 UBRRH  = 0;                              // Highbyte ist 0
 UBRRL  = 15;                         // Lowbyte ist 15 ( dezimal ) 
(8Mhz)
 for (;;){
  UDR = 0x89; //einige NOTE ON und NOTE OFF Befehle
  UDR = 0x20;
  UDR = 0x40;
  warte();//allg. warteschleife
  UDR = 0x99;
  UDR = 0x20;
  UDR = 0x40;
        warte();//allg. wartenschleife
  }
}

Schonmal danke für eure Antworten!

Manuel

Autor: Stefan Kleinwort (_sk_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aufgebaut nach diesem Link? Also hast Du garnichts aufgebaut?

>Hier ist mein Testprogramm: CPU läuft @ 8Mhz intern

Heisst das: interner RC-Osc.?
Das kann nicht funktionieren. Oder nur durch Zufall. Wenn die Temperatur 
gerade richtig ist. RC-Osc ist viel zu ungenau für den UART. Dafür 
brauchst Du einen Quarz.

>  UDR = 0x89; //einige NOTE ON und NOTE OFF Befehle
>  UDR = 0x20;
>  UDR = 0x40;

Das kann auch nicht funktionieren. Du musst testen, ob der UART wieder 
frei für das nächste Zeichen ist, indem Du beim UART-Status auf
"TX Data Register Empty" abfragst.

Schau Dir am Besten mal das Tutorial hier an.

Stefan

Autor: Manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Antwort!

ich werds mal mit dem Quarz versuchen. Sollte aber MIDI-OX nicht trotz 
nicht exaktem Takt irgend etwas empfangen?

ach ja...ich hatte aus versehen den Link falsch eingegeben...hier ist 
der richtige:
http://www.ucapps.de/howtodebug/mbhp_core_extract_...

Grüße Manuel



Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

die Hardware selbst geht aber? Also wie auf dem Bild Mega16 raus, Brücke 
zwischen Tx und Rx, dann muß der Pc seine gesendeten Midi-Daten selbst 
wieder empfangen. Wenn nicht, erst mal die Hardware zum Spielen bringen.

Gruß aus Berlin
Michael

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.