CSC

"TnT" CORE32 Midi IN Message

28 posts in this topic

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.

Share this post


Link to post
Share on other sites

Ãœberraschung?!

"Ja haben wir denn schon weihnachten?!"

Bezüglich Informatikunterricht muss ich dich enttäuschen.

Kenne die Computer seid über 15 Jahre,vom Schneider PC, bis Amiga 500, C64, 386er und und und, aber die Programmierung habe ich nie angefangen.

Mal hier, mal dort, etwas aufgeschnappt und verstehen können.

Da immer wieder "neue" Sprachen kamen, hab ich kein großes Interesse daran gehabt.

C Programmtechnisch absoluter anfänger.

Mittlerweile kenne ich aber "%d" Ganzzahlwertausgabe, Endlosschleife....

aber nicht das genaue Verhalten bei größeren Programmen.

Mit der Zeit, wird das aber schon.

Übung macht den Meister, heisst es so schön.

Habe hier am Anfang zum Teil nur "Bahnhof" verstanden.

Die Struktur der Programm, ist eigentlich ganz simple.

Werde dann mal sehen, was MIOS ausspuckt und nochmal Bescheid geben.

Danke und schönen Gruß

Edited by CSC

Share this post


Link to post
Share on other sites

Debug ist auch erledigt.

Alle Tasten werden über Debug ausgespuckt. :thumbsup:

Matrix / Mod: 0,1 Row: 0-15 sr_pin: 0-15 Value: 0,1

Vor lauter Bäumen, übersah ich anscheinend den Wald!!! :rofl:

:fear: Geist und Seele bewahrten Ruhe und bewiesen Kraft.

Nach fast 4 Zigaretten, 1 Bier, viel :clover: und vor allem die Schnauze voll, machte ich mal aus reiner neugier,

aus

// each channel has 16 buttons

u8 note = mod*16 + 0x3c + sr_pin; // 0x3c is C-3

// each channel has 16 buttons

u8 note = mod + 0x3c + sr_pin; // 0x3c is C-3

UND es funktioniert, perfekt.

mod(0) + 0x3C + sr_pin (0-15) = 0x3C - 0x4b

mod(1) + 0x3C + sr_pin (0-15) = 0x4C - 0x5b

Was die 16 bei Mod*16 begrenzte oder machte, bleibt für mich ein rätsel.

Nach dem dritten Edit dieses Posts,

danke an T.K. und den anderen.

und schönen Gruß

post-8517-0-95842800-1312767509_thumb.jp

Edited by CSC

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now