Usb Midi Firmware für die WCH CH551-CH554. Das Projekt ist sowohl unter Keil als auch SDCC zu benutzen. Eine einfache Doku kann mit Doxygen erzeugt werden. Den Schaltplan hab ich mal angehängt, das SPI Flash und der 3.3V Regler ist nicht notwendig. Forumsthread: Beitrag "Re: uC für 0,20€ CH552 / CH554 von WCH Billig Micro mit USB Funktion, Chip vorstellung" Als Besonderheit gibt es 3 konfigurierbare Optionen im DataFlash - DataFlash[0] = 0 schaltet Active Sensing aus - DataFlash[1] = 0 schaltet Running Status auf dem Output aus. - DataFlash[2] = 0 schaltet schaltet die Ausgabe auf Uart0. Alle anderen Werte schalten die Optionen ein. Running Status auf der Ausgangsseite ist noch nicht 100% getestet und auch nicht unbedingt notwendig (im Gegensatz zur Eingangsseite). Das Grundkonzept des Eingangsparsers habe ich mal vor vielen Jahren auf einer Linux Seite als Demo für die Programmierung des Cypress FX1 oder AN2131 gefunden. Mit Google kann das allerdings nicht mehr finden und das Original hab ich nicht mehr. Ich kann deshalb keine Angaben zum Ursprung machen. Die Firmware läuft stabil (getestet über viele Stunden) mit MidiOx mit einer Brücke von RxT und TxT und einem Midi File unter MidiOx in einer Endlosschleife.
Irgendwo ist noch ein Bug vergraben. Ich habe hier ein Midifile bei dem sich der Uart komplett aufhängt. Das passiert allerdings nur mit der SDCC Variante. Die Keil Version spielt wie erwartet. Ich hab auch schon eine Idee was da passiert. Zuerst will aber die Config Optionen via SysEx sowie das FW update implementieren.
Beitrag #6849393 wurde von einem Moderator gelöscht.
Thomas Z. schrieb: > Das passiert allerdings nur mit der SDCC Variante. Die Keil Version > spielt wie erwartet. Ohne Details zu kennen, kann ich zwar eigentlich nichts dazu sagen, aber: Eine naheliegende Möglichkeit wäre die Verwendung einer nicht initialisierten Variablen, die bei Keil gerade einen Wert enthält, mit dem es klappt, bei SDCC dagegen einen anderen.
Philipp Klaus K. schrieb: > Eine naheliegende Möglichkeit wäre die Verwendung einer nicht > initialisierten Variablen, die bei Keil gerade einen Wert enthält, mit > dem es klappt, bei SDCC dagegen einen anderen. Zuerst hatte ich die Vermutung, dass etwas mit dem volatile bei den Fifo Control structs nicht so funktioniert wie gedacht. Inzwischen gehen meine Vermutungen aber auch eher zu nicht initialisierten Variablen. Ich weis inzwischen dass die Ursache wohl ein Bufferüberlauf bei der TxFifo ist. Warum das nur bei SDCC passiert und dort auch nur bei einem bestimmten Midifile, untersuche ich noch. Ich muss mir mal den Startup Code beim SDCC genauer ansehen, den hab ich bisher weitgehend ignoriert.
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.