Stephan Posted January 2, 2011 Report Share Posted January 2, 2011 Hallo, 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: 1. 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) 2. 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. 3. 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? Gruß Stephan Quote Link to comment Share on other sites More sharing options...
TK. Posted January 2, 2011 Report Share Posted January 2, 2011 Hallo Stephan, zu 1: hierfuer gibt es bereits einen fertige Driver, er findet bei der BLM16x16+X Verwendung, und bedient defaultmaessig 5 8x8 matrizen. (Download hier, suche nach blm_scalar) Das besondere an diesem Treiber ist, dass er eine C Schnittstelle bietet, so dass man die zu sendeten MIDI Events relativ einfach selbst anpassen kann - siehe auch das main.c file: http://svnmios.midibox.org/filedetails.php?repname=svn.mios&path=%2Ftrunk%2Fapps%2Fcontrollers%2Fblm_scalar%2Fmain.c 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. Gruss, Thorsten. Quote Link to comment Share on other sites More sharing options...
Stephan Posted January 2, 2011 Author Report Share Posted January 2, 2011 Hallo Thorsten, zuerst mal vielen Dank für die prompte Antwort!! 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. Gruß Stephan Quote Link to comment Share on other sites More sharing options...
Stephan Posted January 2, 2011 Author Report Share Posted January 2, 2011 noch was: ich besitze ein Board mit einem PIC18F452. Läuft das Projekt auch auf diesem Prozessor? Quote Link to comment Share on other sites More sharing options...
TK. Posted January 2, 2011 Report Share Posted January 2, 2011 Hallo Stephan, 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/ Weitere Infos stehen unter: http://www.midibox.org/dokuwiki/doku.php?id=windows_toolchain_core Gruss, Thorsten. Quote Link to comment Share on other sites More sharing options...
Stephan Posted January 4, 2011 Author Report Share Posted January 4, 2011 Hallo Thorsten, vielen Dank für das Projekt BLM_SCALAR! 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? Gruß Stephan Quote Link to comment Share on other sites More sharing options...
TK. Posted January 4, 2011 Report Share Posted January 4, 2011 Hallo Stephan, 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. Gruss, Thorsten. Quote Link to comment Share on other sites More sharing options...
Stephan Posted January 5, 2011 Author Report Share Posted January 5, 2011 Hallo Thorsten, wow, vielen Dank, das wäre super!! Muss ich dann die Ein- und Ausgänge gar nicht vertauschen? Und kann ich dann mit dieser Firmware weiterprogrammieren (in C)? Gruß Stephan Quote Link to comment Share on other sites More sharing options...
TK. Posted January 6, 2011 Report Share Posted January 6, 2011 Hallo Stephan, ich gehe davon aus, dass Du nichts vertauschen musst. Falls die Tasten falsch gemapped werden, kann man die Notenwerte ja einfach in der Software umkodieren. Hier liegt nun die reduzierte Firmware - sie sieht sehr uebersichtlich aus ;-) http://svnmios.midibox.org/listing.php?repname=svn.mios&path=%2Ftrunk%2Fapps%2Fcontrollers%2Fblm_scalar_4x8x8_buttons%2F Unter http://www.ucapps.de/mios/blm_scalar_4x8x8_buttons_v1.zip habe ich Dir ein fertiges Binary abgelegt, damit Du die Firmware gleich mal ausprobieren kannst. Gruss, Thorsten. Quote Link to comment Share on other sites More sharing options...
Stephan Posted January 9, 2011 Author Report Share Posted January 9, 2011 Hallo Thorsten, toll! :-) Klasse Arbeit, die du da geleistet hast! Alle Achtung! Genau das was ich für meine Manualsteuerung benötige. Funktioniert einwandfrei! Vielen vielen Dank!! Gruß Stephan Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.