Nur nochmal als Bestaetigung - welche Events werden gesendet, wenn Du mit Deinen letzten Hardware-Fixes folgende Konfiguration verwendest:
#define DIN_16x16_L0 12
#define DIN_16x16_R0 11
// DINs of second 16x16 matrix (counted from 1)
#define DIN_16x16_L1 14
#define DIN_16x16_R1 13
// DOUTs of both matrices
#define DOUT_16x16_L 1
#define DOUT_16x16_R 2
// (not swapped!)
[/code]
Dass immer noch die gleichen Events fuer die gleiche Spalte gesendet werden, verstehe ich nicht
In meinem urspruenglichen "Quick&Dirty" Code war ja ein Fehler drin (pin\_sr wurde nicht zur Note addiert), den hast Du selbst gefunden, danach funktionierte es angeblich... und nun nicht mehr? Ich habe den Fehler mittlerweile auch in meiner Vorlage korrigiert:
[http://svnmios.midibox.org/filedetails.php?repname=svn.mios32&path=%2Ftrunk%2Fapps%2Fquickies%2Fcsc%2Fapp.c](http://svnmios.midibox.org/filedetails.php?repname=svn.mios32&path=%2Ftrunk%2Fapps%2Fquickies%2Fcsc%2Fapp.c)
Ob der Code fehlerfrei ist, kann ich natuerlich nicht sagen - habe die Hardware ja nicht vor mir liegen und kann es nicht selbst ausprobieren.
Aber vielleicht hast Du auch mit Deinen eigenen Aenderungen einen Fehler eingebaut, der zu diesem Effekt fuehrt?
Am besten setzt Du nochmal komplett auf meine Vorlage auf...
Falls das nicht weiterhelfen: MIOS\_MIDI\_SendDebugMessage is your friend! -\> [http://svnmios.midibox.org/filedetails.php?repname=svn.mios32&path=%2Ftrunk%2Fapps%2Ftutorials%2F003\_debug\_messages%2FREADME.txt](http://svnmios.midibox.org/filedetails.php?repname=svn.mios32&path=%2Ftrunk%2Fapps%2Ftutorials%2F003_debug_messages%2FREADME.txt)
AIN an J16: die 4 Pull-Ups (R30a/b/c/d) duerfen nicht verloetet (bzw. in den Sockel gesteckt) werden.
Gruss, Thorsten.
Debug-Meldungen vereinfachen das Debuggen von Routinen, man baut sie nachtraeglich an den interessanten Stellen ein, und zwar idealerweise so, dass man sie jederzeit auch wieder ausschalten kann, ohne sie komplett zu entfernen (bspw. via #if statements)
Die Kunst ist, Stellen zu finden, die nicht zu oft angesprungen werden (ansonsten wird man unnoetigen Meldungen zugemuellt), die einem jedoch trotzdem erlauben, das Fehlverhalten der Routine zu verstehen.
Deshalb kann ich Dir auch nur einen Anfang geben, den Rest musst Du interaktiv “erforschen”, ansonsten wird dieser Thread noch wochenlang weiterlaufen…
Sag mal… wie alt bist Du eigentlich, und hattest Du schonmal Informatikunterricht?
(Ich frage das nicht, um Dich blosszustellen, sondern um Dir gezieltere Antworten geben zu koennen)
Habe nun folgende Meldung in app.c eingebaut:
// a useful debug message to print out temporary variables
// disable it by changing "#if 1" by "#if 0"
#if 1
MIOS32_MIDI_SendDebugMessage("Mod:%d Row:%d sr_pin: %d value:%d\n",
mod, row, sr_pin, value);
#endif
[/code]
Ausserdem habe ich mir die Funktion nochmal genau angeschaut, und dabei wohl den Fehler gefunden: die "changed" Variable war nur 8 bit (u8), Du benoetigst jedoch 16 bit (u16)
Uebernimm bitte die komplette TASK\_MATRIX\_Scan() Funktion.
Und schau' Dir die Meldungen im MIOS Terminal an - Du wirst ueberrascht sein, wie verstaendlich der Algorithmus auf einmal wird ;)
Gruss, Thorsten.