CSC

"TnT" CORE32 Midi IN Message

28 posts in this topic

Habe endlich mal alles soweit bis auf die LEDs angeschlossen, was zum Projekt gehört.

1x CORE STM32

4x AINx4 (128 POTIs)

4X DINx4 (BM 2x16x16, 40 Encoder)

4x DOUTx4 (LED_Rings, etc.)

8x GLCD PCD8544

Dank T.K. ist auch die Applikation fertig geworden :sorcerer:

Nun setzen der Jumper J24/25/26 auf 5V und Upload des .Hex files

(schneller compileriert über Windows CMD und make befehl als eine geduschte Katze und vor allem Eclipse!)

und booten der Applikation, wurden mehrere Midi In Messages schnell aufeinanderfolgend angezeigt.

Die Status LED auf den Board flakkerte verdammt schnell.

Dachte zuerst an den normalzustand für die Datenübertragung.

Doch nach etwa 2 Minuten kam auch schon der Bluescreen bei Windows XP SP3 mit der Fehlermeldung ( STOP: 0x00 00 00 7F )

Ernuerter versuch:

Nach starten von Ableton und einen kleinen Versuch kurz etwas über Midi zuzuweisen, kam folgendes zum vorschein.

Ohne betätigen einer taste, Encoder oder eines Potis, stand automatisch Ch8 CC19 als Zuweisung dort.

Zudem sprang der Wert non Stop zwischen CC19 und CC20 um und versuchte einen Channel zuzuweisen, mal 6,14,4,16 und 8.

Wäre sicherlich noch einige Minuten so weitergegangen.

Doch der Bluescreen kam auch diesesmal! :frantics:

Habe mich dann mal versucht schlau zu lesen.

Laut der App, denke ich, kann es nur an AIN liegen.

Ist die einzige Zeile die auf den Channel zugreift.

void APP_AIN_NotifyChange(u32 pin, u32 pin_value)

{

// we have 128 pots

// 8 pots assigned per channel

// channel

u8 chn = pin / 8;

// CC number

u8 cc_number = 0x10 + (pin % 8);

// convert 12bit value to 7bit value

u8 value_7bit = pin_value >> 5;

// send MIDI event

MIOS32_MIDI_SendCC(DEFAULT, chn, cc_number, value_7bit);

Habe einfach mal einen Teil der Message über Midi .org ausgelesen.

Checke jetzt erstmal die einzelnen Leiterbahnen, inklusive Steuerleitung.

Da das Gehäuse noch nicht fertig ist, ist alles auf einer Platte montiert und hat 50mm Bauhöhe.

Zwischen Platine und Platte ist nicht sehr viel Platz.

Denke das es daran liegt.

post-8517-091898000 1309166458_thumb.jpg

Share this post


Link to post
Share on other sites

Hallo nochmal,

aber mit weiterhin schlechter Nachrichten.

Habe alle AINs nachgesehen und nachbearbeitet.

Optisch kein Problem. Messungen waren Okay.

3,6V Spannung Vs und Vd.

1V an A,B,C, bzw. J19.RC1, J19_RC2, J19_SC

LED Ringe habe ich auch fertig gelötet und an DOUT angeschlossen. (32x8) Die Ringe 1, 9, 17, 24 leuchten nicht.

USB Angeschlossen und das selbe Problem festgetellt.

In Ableton zeigt er bei der zuweisung immer CC19/CC20 an über verschiedene Kanäle.

Die Encoder sind kurzezeitig zu sichten. Manche mit CC60 etc.

Danach ohne DIN/DOUT eingesteckt und nochmals das selbe zu gesicht bekommen.

Laut MIOS Studio kam wie auf dem Bild zu sehen ist, folgendes.

Habe auch mal nacheinander alles abgesteckt.

Trotzdem kam die selbe meldung.

Bin mit dem Latein am Ende.

Was kann es noch sein? :frantics:

Das einzige was mir aufgefallen ist, wäre ob bei

Pin mapping on MBHP_CORE_STM32 module:

// 15 14 13 12 11 10 9 8

// J16.SO J16.SI J16.SC J16.RC J5C.A11 J5C.A10 J5C.A9 J5C.A8

// 7 6 5 4 3 2 1 0

// J5B.A7 J5B.A6 J5B.A5 J5B.A4 J5A.A3 J5A.A2 J5A.A1 J5A.A0

J16_RC, RC1 oder RC2 ist?

Kann es sein, das die Stromversorgung über USB zu schwach ist?

(Lese nur die DIN, AIN Module aus und betreibe gerade mal die LED Ringe an DOUT (die ganz normal leuchteten))

EDIT:

Was neues:

Habe nun Core32 über USB angeschlossen,

Midi-IN und Midi_OUT auf USB-Audiogerät, Device 0 = Erkannt und über IN kommen hunderte von diesen Signalen an.

Bei Tastendruck, Potiänderung, Encoderbetätigung, passiert nichts.

Im Emulator ist folgendes zu sehen...

Schönen Gruß

post-8517-0-93715000-1310413176_thumb.jp

post-8517-0-70185200-1310419030_thumb.jp

Edited by CSC

Share this post


Link to post
Share on other sites

Pin mapping on MBHP_CORE_STM32 module:

// 15 14 13 12 11 10 9 8

// J16.SO J16.SI J16.SC J16.RC J5C.A11 J5C.A10 J5C.A9 J5C.A8

// 7 6 5 4 3 2 1 0

// J5B.A7 J5B.A6 J5B.A5 J5B.A4 J5A.A3 J5A.A2 J5A.A1 J5A.A0

J16_RC, RC1 oder RC2 ist?

es ist J16.RC1 gemeint

Kann es sein, das die Stromversorgung über USB zu schwach ist?

(Lese nur die DIN, AIN Module aus und betreibe gerade mal die LED Ringe an DOUT (die ganz normal leuchteten))

Wenn Du das Core Modul nicht ueber einen USB Hub mit eigener Stromversorgung betreibst: ja - dann kann es bei sovielen Bauelementen auch irgendwann mal herumspinnen, weil die Spannung nicht reicht.

Du gehst die Sache IMHO falsch an.

Anstatt langsam die einzelnen Komponenten auszuprobieren, versuchst Du alles aufeinmal.

So wird das nie etwas!

Fange doch erstmal mit NUR 8 potis nach tutorial/011_ain an, danach 64 Potis nach tutorial/012_ain_muxed, danach 96 Potis, danach 128... schrittweise.

Spaeter dann mal die Buttons und Encoder ausprobieren, auch dafuer gibt es entspr. Tutorials.

Wenn Du hier erstmal gesicherte Verhaeltnisse hast, kannst Du auch mal die LED Ringe ausprobieren.

Bevor das nicht der Fall ist, wirst Du die verschiedenen Effekte sehr wahrscheinlich falsch deuten.

Gruss, Thorsten.

Share this post


Link to post
Share on other sites

So,

nun fast alles getestet, bis die Button Matrix.

AIN mit 8, 16, 64, 128 Potis funktioniert.

(mit dem kleinen Problem, dass die Kanäle 15 und 16 einen verkleinerten Wert bereich aufweisen und einige den gesamten Bereich nicht wiedergeben)

DOUT mit 32 LEDs funktioniert problemlos.

DIN mit Tastern funktioniert problemlos.

DIN mit Encoder funktioniert problemlos.

Frage zu app.c:

/////////////////////////////////////////////////////////////////////////////

// This hook is called before the shift register chain is scanned

/////////////////////////////////////////////////////////////////////////////

void APP_SRIO_ServicePrepare(void)

{

// 2 * 16x16 Matrix DOUTs

if( ++matrix16x16_ctr >= 16 )

matrix16x16_ctr = 0;

u16 matrix_select = ~(1 << matrix16x16_ctr); // if cathodes are connected to DOUTs

Wenn ich die "Zener" Diode mit der Kathode an DOUT anschliesse, fliest doch der Strom nicht mehr zu DIN ?!

Liegt das an er 8bit Serial IN und Output option der 74HC595er, dass ich an den DOUT modulen auch das Signal verarbeiten lassen kann?

Edited by CSC

Share this post


Link to post
Share on other sites

Ein Edit hätte sehr wahrscheinlich auch gereicht !

Zur nachverfolgung schreib ich lieber einen neuen Post.

Habe jetzt

das CSC Programm aufgespielt und alle Module angeschlossen.

USB rein : und die Midi Meldungen kamen schon wieder ohne Pause über IN und die Matrix funktionierte auch nicht.

USB raus : und die erstmal (G)LCD Display aus dem Programm verbannt.

USB rein : und die NON Stop Midi IN Meldungen kamen nicht mehr, aber die Matrix funktioniert auch noch nicht.

USB raus : und die Matrix von DOUT -> (A) Z-Diode © -> DIN nach DOUT -> © Z-Diode (A) -> DIN umgestöpselt.

u16 matrix_select = ~(1 << matrix16x16_ctr); // if cathodes are connected to DOUTs

USB rein: und alles funktioniert. (Bis auf die Displays, wobei ich diese jetzt ganz entferne!

Werde wohl einen Monitor mit Touchscreen anbauen.

Bekomme jetzt dafür vorerst wieder mal kein Signal nach Ableton, warum auch immer.

Mal sehen, was das für ein Problem ist.

Schönen Gruß

Edited by CSC

Share this post


Link to post
Share on other sites

Habe jetzt alles fertig angeschlossen gehabt und musste folgendes feststellen:

Es ist eine 2x 16x16 Button Matrix gebaut worden, mit der Kathode der Diode gerichtet nach DOUT (16DOUT-Z-Diode-32DIN).

Bei der Midi In Message in Mios32 bekomme ich immer nur eine Taste pro Kanal und Matrix angezeigt, egal welche ich pro Kanal drücke.

Taste 1-15 zeigen das selbe bei betätigen an, als Taste 16 bei Kanal 1-16, in Matrix 1 und das selbe Spiel bei der 2ten Matrix.

D.h.:

BM1_Chn1_Btn1-16 , BM1_Chn2_Btn1-16 , BM1_Chn3_Btn1-16 , BM1_Chn4_Btn1-16 , .... , BM1_Chn16_Btn1-16

Chn1_0x3C_00 , Chn2_0x3C_00 , Chn3_0x3C_00 , Chn4_0x3C_00 , .... , Chn16_0x3C_00

Chn1_0x3C_3f , Chn2_0x3C_3f , Chn3_0x3C_3f , Chn4_0x3C_3f , .... , Chn16_0x3C_3f

BM2_Chn1_Btn1-16 , BM2_Chn2_Btn1-16 , BM2_Chn3_Btn1-16 , BM2_Chn4_Btn1-16 , .... , BM2_Chn16_Btn1-16

Chn1_0x4C_00 , Chn2_0x4C_00 , Chn3_0x4C_00 , Chn4_0x4C_00 , .... , Chn16_0x4C_00

Chn1_0x4C_3f , Chn2_0x4C_3f , Chn3_0x4C_3f , Chn4_0x4C_3f , .... , Chn16_0x4C_3f

egal welche der 16 Tasten pro Kanal ich in der Matrix betätige.

Es kommt die selbe Message in Midi IN an, als würde er die einzelen "Rows" pro "Columns" nicht verwerten.

Programmauszug aus app.c:

/////////////////////////////////////////////////////////////////////////////

// Local definitions

/////////////////////////////////////////////////////////////////////////////

#define NUM_MATRICES 2

// define priority level for MATRIX_SCAN task:

// use same priority as MIOS32 specific tasks (3)

#define PRIORITY_TASK_MATRIX_SCAN ( tskIDLE_PRIORITY + 3 )

// local prototype of the task function

static void TASK_MATRIX_Scan(void *pvParameters);

/////////////////////////////////////////////////////////////////////////////

// Local variables

/////////////////////////////////////////////////////////////////////////////

static u8 enc_virtual_pos[NUM_ENCODERS];

static u16 matrix16x16_button_row_values[NUM_MATRICES][16];

static u16 matrix16x16_button_row_changed[NUM_MATRICES][16];

static u8 matrix16x16_ctr;

/////////////////////////////////////////////////////////////////////////////

// This hook is called after startup to initialize the application

/////////////////////////////////////////////////////////////////////////////

void APP_Init(void)

{

// initialize all LEDs

MIOS32_BOARD_LED_Init(0xffffffff);matrix16x16_ctr = 0;

u8 mod;

for(mod=0; mod<NUM_MATRICES; ++mod) {

u8 row;

for(row=0; row<16; ++row) {

matrix16x16_button_row_values[mod][row] = 0xffff;

matrix16x16_button_row_changed[mod][row] = 0x0000;

}

}

/////////////////////////////////////////////////////////////////////////////

// This hook is called before the shift register chain is scanned

/////////////////////////////////////////////////////////////////////////////

void APP_SRIO_ServicePrepare(void)

{

// 2 * 16x16 Matrix DOUTs

if( ++matrix16x16_ctr >= 16 )

matrix16x16_ctr = 0;

u16 matrix_select = ~(1 << matrix16x16_ctr); // if cathodes are connected to DOUTs

#if DOUT_16x16_L

MIOS32_DOUT_SRSet(DOUT_16x16_L-1, (matrix_select >> 0) & 0xff);

#endif

#if DOUT_16x16_R

MIOS32_DOUT_SRSet(DOUT_16x16_R-1, (matrix_select >> 8) & 0xff);

#endif

/////////////////////////////////////////////////////////////////////////////

// This hook is called after the shift register chain has been scanned

/////////////////////////////////////////////////////////////////////////////

void APP_SRIO_ServiceFinish(void)

{

const u8 din_map[2*2] = {

DIN_16x16_L0,

DIN_16x16_R0,

DIN_16x16_L1,

DIN_16x16_R1

};

// check for DIN changes

// Note: matrix16x16_ctr was incremented before in APP_SRIO_ServicePrepare()

int selected_row = (matrix16x16_ctr-1) & 0xf;

// check DINs

int mod;

for(mod=0; mod<NUM_MATRICES; ++mod) {

int sr0 = din_map[2*mod+0];

int sr1 = din_map[2*mod+1];

u16 sr_value = 0;

if( sr0 ) {

MIOS32_DIN_SRChangedGetAndClear(sr0-1, 0xff); // ensure that change won't be propagated to normal DIN handler

sr_value |= (MIOS32_DIN_SRGet(sr0-1) << 0);

}

if( sr1 ) {

MIOS32_DIN_SRChangedGetAndClear(sr1-1, 0xff); // ensure that change won't be propagated to normal DIN handler

sr_value |= (MIOS32_DIN_SRGet(sr1-1) << 8);

}

// determine pin changes

u16 changed = sr_value ^ matrix16x16_button_row_values[mod][selected_row];

if( changed ) {

// add them to existing notifications

matrix16x16_button_row_changed[mod][selected_row] |= changed;

// store new value

matrix16x16_button_row_values[mod][selected_row] = sr_value;

}

}

}

/////////////////////////////////////////////////////////////////////////////

// This task scans MATRIX pins periodically

/////////////////////////////////////////////////////////////////////////////

static void TASK_MATRIX_Scan(void *pvParameters)

{

u8 old_state[12]; // to store the state of 12 pins

u8 debounce_ctr[12]; // to store debounce delay counters

portTickType xLastExecutionTime;

// initialize pin state and debounce counters to inactive value

int pin;

for(pin=0; pin<12; ++pin) {

old_state[pin] = 1;

debounce_ctr[pin] = 0;

}

// Initialise the xLastExecutionTime variable on task entry

xLastExecutionTime = xTaskGetTickCount();

while( 1 ) {

vTaskDelayUntil(&xLastExecutionTime, 1 / portTICK_RATE_MS);

// check all shift registers for DIN pin changes

int mod;

for(mod=0; mod<NUM_MATRICES; ++mod) {

int row;

for(row=0; row<16; ++row) {

// check if there are pin changes - must be atomic!

MIOS32_IRQ_Disable();

u8 changed = matrix16x16_button_row_changed[mod][row];

matrix16x16_button_row_changed[mod][row] = 0;

MIOS32_IRQ_Enable();

// any pin change at this SR?

if( !changed )

continue;

// check all 16 pins of the SR

int sr_pin;

for(sr_pin=0; sr_pin<16; ++sr_pin)

if( changed & (1 << sr_pin) ) {

u32 pin = 16*row + sr_pin;

u8 value = (matrix16x16_button_row_values[mod][row] & (1 << sr_pin)) ? 1 : 0;

// decoding: 2*256 pins mapped to channel 1..16

u8 chn = pin / 16;

// each channel has 16 buttons

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

// velocity: 0x7f if button pressed, 0x00 if button depressed

u8 velocity = value ? 0x00 : 0x7f;

// send MIDI event

MIOS32_MIDI_SendNoteOn(DEFAULT, chn, note, velocity);

}

}

}

}

}

Ansonsten macht es spass und funktioniert auch alles.

Einige Problem tauchen noch auf beim lernen, der vielen Variablen und Befehle für die C-Programmierung. :hairy:

Was nicht ist, kann noch werden!!!

Vielleicht weiss "der ein oder andere" :thumbsup: was es mit dem fehler auf sich hat.

Greets

Share this post


Link to post
Share on other sites

News:

Nach Ändern des Code von,

mios32/trunk/apps/quickies/csc (app.c)

// each channel has 16 buttons

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

// velocity: 0x7f if button pressed, 0x00 if button depressed

u8 velocity = value ? 0x00 : 0x7f;

// send MIDI event

MIOS32_MIDI_SendNoteOn(DEFAULT, chn, note, velocity);

nach:

// each channel has 16 buttons

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

// velocity: 0x7f if button pressed, 0x00 if button depressed

u8 velocity = value ? 0x00 : 0x7f;

// send MIDI event

MIOS32_MIDI_SendNoteOn(DEFAULT, chn, note, velocity);

bekam ich wenigstens die L Register der Matrix ausgeben.

Ein Problem bleibt.

Die L Shift Register der Matrix werden über alle 16 Kanäle ausgewerten,

aber die R Shift Register nicht.

:question:

post-8517-0-55767300-1311701562_thumb.jp

Share this post


Link to post
Share on other sites

Um zu ueberpruefen, ob es sich hierbei um ein Hardware- oder Software-Problem handelt, wuerde ich vorschlagen, in mios32_config.h die L/R SRs zu vertauschen:


#define DIN_16x16_L0 11
#define DIN_16x16_R0 12

// DINs of second 16x16 matrix (counted from 1)
#define DIN_16x16_L1 13
#define DIN_16x16_R1 14

// DOUTs of both matrices
#define DOUT_16x16_L 1
#define DOUT_16x16_R 2
[/code] aendern in:
[code]
#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 2
#define DOUT_16x16_R 1

Welche MIDI Events werden nun gesendet?

Gruss, Thorsten.

Share this post


Link to post
Share on other sites

Habe mal etwas durchprobiert

Matrix_F und Matrix_E ist deine vorgeschlagene Version mit vertauschten DOUT SR.

_F hat DIN L0 (Taste 1-8), R0 (Taste 9-16), L1 (Taste 17-24), R1 (Taste 25-32) zu allen 16 DOUTs (Horizontal)

#define FIRST_ENC_DIN_SR 5 [40]

_F_DIN_16x16_L0 12 _ _ _ DOUT_16x16_L 2

___DIN_16x16_R0 11 _ _ _ DOUT_16x16_R 1

___DIN_16x16_L1 14

___DIN_16x16_R1 13

_E hat DIN L0 (Taste 1-8 & 17-24), L1 (Taste 9-16 & 25-32) auf der linken Seite zu 1-8 DOUT

und R0 (Taste 1-8 & 17-24), R1 (Taste 9-16 & 25-32) auf der rechten Seite zu 9-16 DOUT (Gruppiert)

#define FIRST_ENC_DIN_SR 5 [40]

_E_DIN_16x16_L0 12 _ _ _ DOUT_16x16_L 2

___DIN_16x16_R0 11 _ _ _ DOUT_16x16_R 1

___DIN_16x16_L1 14

___DIN_16x16_R1 13

Matrix_D

_D hat DIN L0 (Taste 1-8), R0 (Taste 9-16), L1 (Taste 17-24), R1 (Taste 25-32) zu allen 16 DOUTs (Horizontal)

#define FIRST_ENC_DIN_SR 5 [40]

_D_DIN_16x16_L0 1 _ _ _ DOUT_16x16_L 1

___DIN_16x16_R0 2 _ _ _ DOUT_16x16_R 2

___DIN_16x16_L1 3

___DIN_16x16_R1 4

Matrix_B

_B hat DIN L0 (Taste 1-8 & 17-24), L1 (Taste 9-16 & 25-32) auf der linken Seite zu 1-8 DOUT

und R0 (Taste 1-8 & 17-24), R1 (Taste 9-16 & 25-32) auf der rechten Seite zu 9-16 DOUT (Gruppiert)

#define FIRST_ENC_DIN_SR 1

_B_DIN_16x16_L0 11 _ _ _ DOUT_16x16_L 1

___DIN_16x16_R0 12 _ _ _ DOUT_16x16_R 2

___DIN_16x16_L1 13

___DIN_16x16_R1 14

Matrix_A

_A hat DIN L0 (Taste 1-8 & 17-24), L1 (Taste 9-16 & 25-32) auf der linken Seite zu 1-8 DOUT

und R0 (Taste 1-8 & 17-24), R1 (Taste 9-16 & 25-32) auf der rechten Seite zu 9-16 DOUT (Gruppiert)

#define FIRST_ENC_DIN_SR 1

_A_DIN_16x16_L0 12 _ _ _ DOUT_16x16_L 1

___DIN_16x16_R0 11 _ _ _ DOUT_16x16_R 2

___DIN_16x16_L1 14

___DIN_16x16_R1 13

Program blieb im Urzustand bis auf LEDs und Displays. Die wurden entfernt.

Bilder sind _A ; _B ; _D; _E; _F

post-8517-0-27635300-1312145242_thumb.jp

post-8517-0-70560000-1312145255_thumb.jp

post-8517-0-53744800-1312145268_thumb.jp

post-8517-0-45826900-1312145283_thumb.jp

post-8517-0-63126100-1312145295_thumb.jp

Share this post


Link to post
Share on other sites

Wenn ich Deine Notizen richtig interpretiere, dann sendet die rechte Seite der Matrix auch dann nichts, wenn die Shift-Register Zuweisungen getauscht werden, richtig?

Dann ist hier sehr wahrscheinlich die Hardware falsch verdrahtet - die richtige Verdrahtung kannst Du Dir auf der linken Seite abschauen.

Gruss, Thorsten.

Share this post


Link to post
Share on other sites

Ich habe beide Diodenplatinen identisch gefertigt. Ich frage mich wo noch ein fehlerschen sein kann.

Aber, eins nach dem anderen.

Gehe morgen nochmals, jede beknackte Leitung nach. Und messe jeden besch.... Punkt nach. Das kann irgendwie nicht sein.

:question: die Matrix ist so richtig? :question:

post-8517-0-83276100-1312155616_thumb.jp

Share this post


Link to post
Share on other sites

Wie hast Du denn die Pull-Up Widerstaende an den DIN Eingaengen, sowie die Dioden an den Buttons verschaltet?

Gruss, Thorsten.

Share this post


Link to post
Share on other sites

Die Pull Up Widerstände am DINX4 sind original nach Bauanleitung eingelötet und fungieren nicht als High-Active..

Müssen sie auch hoffentlich nicht.. oder? :question:

If you are using the DIN module with a MIDIO128, you maybe want to drive the pins "high-active" (which means: +5V = on, 0V = off).

In this case please solder the two red isolated cables not to 5V, but to 0V (Vss), so that the resistors act as pull-downs.

Your MIDIbox will send a lot of random MIDI traffic without these pull-ups, so don't miss them!"

Weil ich die Midio128 Applikation nicht verwendet habe, lies ich diese veränderung aus.

Die Dioden sind mit Kathode in Richtung DOUTX4 gelötet.

DOUTX4 -> Kathode Z-DIODE Anode -> Taste -> DINX4

Share this post


Link to post
Share on other sites

Ja, das ist richtig. Hier nochmal zum Vergleich: http://www.ucapps.de/mbhp/mbhp_scan_matrix1.pdf

Doch warum nimmst Du eine Z-Diode und keine ganz normale Silizium-Diode, so wie 1N4148?

Du kennst den Unterschied zwischen einer Diode und Z-Diode?

Wo liegt bei Deiner Z-Diode die Sperrspannung?

Gruss, Thorsten.

Share this post


Link to post
Share on other sites

Kleiner Verwechselungsfehler.

Die diode ist keine Z-Diode.

Ist eine BAS45AL.

Ersatz für die 1N4148 den ich noch hier hatte.

Habe aber gerade das Schaltbild der Matrix gesehen und festgestellt das an meinen DOUTX4 Modulen die Brücken für die 220er Widerstände nicht vorhanden,

sondern die widerständen noch verbaut sind.

Müssen denn an den DINX4 Modulen auch die Brücken angelötet werden, oder kann man diese belassen?

Danke

und schönen Gruß

Edited by CSC

Share this post


Link to post
Share on other sites

An die DIN shift register gehoeren keine Bruecken, dadurch wuerdest Du die Eingaenge kurzschliessen.

Es wird ganz normal mit Pull-Up Widerstaenden nach 5V verdrahtet.

Gruss, Thorsten.

Share this post


Link to post
Share on other sites

Gehe gerade nochmals die Dioden Platinen durch.

Die DOUTX4 mit Brücken, wie im Schaltbild?

Dann müsste es eigentlich schon gewesen sein.

Denke mal das ich dir morgen das nächste ergebnis sagen kann.

512 Dioden sind ziemlich viel Arbeit.

Danke nochmal.

Share this post


Link to post
Share on other sites

jep

Gruss, Thorsten.

Share this post


Link to post
Share on other sites

DINX4 ohne Brücken, mit original Widerständen...

DOUTX4 mit Brücken, ohne Widerstände...

Dioden mit Kathode zum DOUTX4...

Okay, :thumbsup:

See you later Aligator.

und danke

Share this post


Link to post
Share on other sites

NEUE Verkabelung ist fertig.

Alle Matrix Dioden Boards neu gelötet und verdrahtet und Tasten - Platinen durchgemessen.

Keine Probleme, soweit.

Danach angeschlossen und MIOS geöffnet, mit folgendem Ergebnis.

3C und 4C Noten bleiben unverändert. :frantics:

post-8517-0-93192500-1312470479_thumb.jp

post-8517-0-47476600-1312470498_thumb.jp

Share this post


Link to post
Share on other sites

! Das sind die richitgen Bilder !

R0 und R1 scheinen wieder nicht richtig zu funktionieren.

Für alle Tasten, pro Matrix kommt wieder nur eine Note an.

Bei dem letzten AINX4 Board gibt es auch probleme. Die Auflösung ist anders als bei den ersten drei.

Die meisten Potis des DINX4_4 Board an J16 geben mir nur den teilweg bereich wieder.

Alle anderen Potis, Kanal 1 -12, zeigen mir von Links bis Mitte (00 - 3F) und (3F - 7F) von der Mitte nach Rechts, an.

Bei DINX4_4, Kanal 13 bis 16, zeigen sie mir nur (L-Mitte-R) 2A - 7F - XX an

NUR beim 4. Modul an J16.

Habe schon das Modul gewechselt, um zu sehen, ob es am Modul lieg.

Ist aber auch nicht der Fall.

post-8517-0-20981400-1312473291_thumb.jp

post-8517-0-31038900-1312473302_thumb.jp

Edited by CSC

Share this post


Link to post
Share on other sites

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

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

AIN an J16: die 4 Pull-Ups (R30a/b/c/d) duerfen nicht verloetet (bzw. in den Sockel gesteckt) werden.

Gruss, Thorsten.

Share this post


Link to post
Share on other sites

Okay.

Das werde ich versuchen.

Werde dein Programm im Originalzustand lassen.

Habe "+sr_pin" nur mal aus reinem Interesse ohne Ahnung hinzugefügt.

Das mit MOD und ROW ist mir ohne Ahnung, viel zu kompliziert.

Das einzige was ich an dieser Programmiersprache beherrsche, ist höchstens die logic.

Zusammenhänge zwischen Befehlen, ohne Routine, in einem fremden Programm, sind schwer nachzuvollziehen.

Nach dem keine einzelne Note angezeigt wurde, habe ich einfach mal (ohne Ahnung) einige möglichkeiten ausprobiert.

" Es kann ja nicht sehr viel kaputt gehen...... "

Beim dazufügen von " + sr_pin " habe ich ein "besseres" ergebnis, erhalten.

Ich weiss erlich gesagt gar nicht, ob es hinzugefügt werden kann !

Ich zweifel lieber an meinen Kenntnissen als an deinen.

Nun gut.

Habe mal alles nach plan angeschlossen und geschaut was passiert.

AINX4 : R30 wurde entfernt und der Jumper J24 auf 3.3V gestöpselt. <-- Funktioniert alles perferkt!! :thumbsup:

MATRIX : Gleiches Problem. Die -R- Hälfte gibt keine Werte wieder.

Edited by CSC

Share this post


Link to post
Share on other sites

und die Bilder noch!

Möchte keinen Bilderhost aus dem Server machen, habe diese nur nochmal zur vollständigen Einsicht geladen.

post-8517-0-50207200-1312655149_thumb.jp

post-8517-0-30433100-1312655165_thumb.jp

post-8517-0-57270200-1312655182_thumb.jp

post-8517-0-23720800-1312655194_thumb.jp

Edited by CSC

Share this post


Link to post
Share on other sites

Debug Message gibt nur die Initialisierung wieder, wenn ich MIOS Studio mit angeschlossenem Core32 starte.

Kein tastendruck oder Poti-bewegung wird angezeigt.

Aber Virtual-Midi-Keyboard zeigt das debug tool bei klicken einer Pianotaste an.

Original text aus dem Tutorial wurde ins Programm eingefügt, ohne es diesen zu verändern.

-------------------------------------------------------------------------------

// send received MIDI package to MIOS Terminal

MIOS32_MIDI_SendDebugMessage("Port:%02X Type:%X Evnt0:%02X Evnt1:%02X Evnt2:%02X\n",

port,

midi_package.type,

midi_package.evnt0, midi_package.evnt1, midi_package.evnt2);

-------------------------------------------------------------------------------

Danke und schönen Gruß

post-8517-0-07843600-1312656543_thumb.jp

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