ich möchte gerne eine Orgelkonsole bauen, in der ich 4 Manuale (FATAR, 8x8-Diodenmatrix) und ein Pedal verbaut habe. Nun möchte ich einen möglichst effizienten und zuverlässigen Scanner für diese Klaviaturen bauen. Ich hab mir schon mal das Beispiel “sm_c_example1_v1c.zip” auf der Download-Seite von ucapps.de geladen. Funktioniert auch ganz toll!
Nun 3 Fragen:
Wenn ich 4 Klaviaturen anschließen möchte, ist es dann besser, 4 8x8-Matrix-Scanner zu implementieren? Wenn ja, muss ich die Assembler-Routine 4x bereitstellen, oder wie funktioniert das?
Oder soll ich besser eine 16x16-Matrix bauen, mit der ja dann 256 Tasten eingescannt werden können? Was ist performanter? (Die Manuale in einer 16x16-Diodenmatrix bereitzustellen, wäre kein Problem)
Mir geht es in diesem Fall um die Assembler-Routine (ich habe keine Erfahrung mit Assembler) - was muss ich hier ändern, um eine 16x16er Matrix zu implementieren? (Dazu brauch ich ja 16xDIN und 16xDOUT)
Ich möchte die verbleibenden 112 IOs natürlich für Registertaster weiterverwenden. Ist das mit einem PIC machbar, oder setzt man für solch einen Aufbau lieber für jedes Manual einen eigenen PIC ein, die dann alle per MIDI in Reihe geschalten werden? Das ganze sollte halt mit möglichst geringer Latenz realisiert werden.
Es gibt da noch einen “superfast 80us” Matrix-Download: “sm_c_example2_v1c.zip”. Nur hier wird in der INIT-Routine die Shift-Register-Treiber über MIOS abgeschalten:
MIOS_SRIO_NumberSet(0); // DONT USE THE MIOS SRIO DRIVER!!!
Ich finde hier keine Einstellung welches Shift-Register für den Scanner hergenommen wird (möchte das selbst wählen können) und kann man hier die restlichen IOs der Shiftregister trotzdem als normale DIN und DOUTs verwendet werden? Wenn ja, wie?
Eine 16x16 Matrix halte ich fuer ungeeignet, da sich hiermit die Latenz verdoppelt.
Zu 2: bei der BLM_SCALAR sind die uebrigen DIN Register frei belegbar. Die 5. 8x8 Matrix liefert Dir bereits 64 weitere Eingaenge, es bleiben 11 DINs uebrig.
Evtl. koennte man den Treiber auch so konfigurieren, dass noch mehr Matrizen gescannt werden (bin mir gerade nicht sicher, ob das problemlos funktioniert)
Zu 3: funktioniert mit dieser Variante nicht, deshalb findest Du auch keine Hinweise in der Dokumentation.
Leider kann ich aber unter dem Download-Link kein blm_scalar finden. Ich kann zwar den Sourcecode über svn downloaden, aber dort ist das blm-module nicht dabei. Wo kann man ein komplettes blm_scalar-Projekt herunterladen?
Kann ich das Projekt auch so ändern, daß nur 4 8x8-Matrizen gescannt werden? Ich möchte so viel DIN/DOUT-Register für meine Registertaster zur Verfügung haben.
evtl. musst Du bei Deinem Webbrowser den Refresh-Button druecken; ich habe die blm_scalar Applikation erst vor zwei Stunden dort eingebunden (vorher war sie nur im Repository verfuegbar).
Die fuenfte Matrix laesst sich im Makefile wie folgt deaktivieren:
BLM_SCALAR_DEFINES += -DBLM_SCALAR_DIN5 0
[/code]
Zum SVN: das Repository wird nicht mit dem Webbrowser, sondern mit einem speziellen SVN Client heruntergeladen.
Falls Du unter Windows arbeitest, ist Tortoise die erste Wahl: [http://tortoisesvn.tigris.org/](http://tortoisesvn.tigris.org/)
Weitere Infos stehen unter: [http://www.midibox.org/dokuwiki/doku.php?id=windows\_toolchain\_core](http://www.midibox.org/dokuwiki/doku.php?id=windows_toolchain_core)
Gruss, Thorsten.
Wie funktioniert das, wenn ich Manuale besitze, bei denen die Diodengatter die Kathoden zusammengeschaltet sind? Klar, ich muss die Columns/Rows an den DOUT/DIN-Modulen tauschen, aber gibt es noch einen Parameter wie z.B. SM_SWAP_CR, damit auch softwareseitig die cols+rows richtig ausgewertet werden?
die DOUTs muessen in diesem Fall invertierte Werte ausgeben, dies wird mit BLM_SCALAR_CATHODES_INV_MASK=0x00 eingestellt.
Ich werde Dir morgen eine spezielle Firmware zusammenbasteln, denn die verfuegbaren Defines (die in blm_scalar.inc ausgewertet werden) sind nicht immer selbsterklaerend.