Bueno el temas es el siguiente : por el canal 13 el tractor me envia señales de notas on/off con las cuales yo tengo que prender o apagar determinados leds , pero la cuestion es que no todos deben trabajar asi, por ejemplo de los 32 leds del DOUT los 5 primeros trabajan asi los 4 siguientes los adsministro por el programa y luego otros por midi y asi sucesivamente (osea no debo administrar en su totalidad los led por midi).
Por el momento estube jugando con el codigo de ejemplo que figura en la libreria C
void MPROC_NotifyReceivedEvnt(
unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam
{
// a note event provides 128 different note values (0..127)
// in this simple example, each note sets an individual pin
// for DOUT pin numbers, see also this documentation:
// http://www.ucapps.de/mios/mios_pin_list.txt
if( evnt0 == 0x80 || evnt0 == 0x90 ) {
// 90 xx 00 is the same like a note off event!
// (-> http://www.borg.com/~jglatt/tech/midispec.htm)
if( evnt0 == 0x80 || evnt2 == 0x00 ) {
// Note Off
MIOS_DOUT_PinSet(31, 0); //Modificado el pin por el led que quiero accionar
} else {
// Note On
MIOS_DOUT_PinSet(31, 1); //Modificado el pin por el led que quiero accionar
}
}
}
Bueno aca con este logre que cualquier señal (nota) que recibo en el canal 1 me prende el ultimo led. Ahora bien el la primer linea despues del if el 0x80 supuestamente no es la nota y el segundo el 0x90 es el canal??? realmente no entiendo bien la rutina. me podrian dar alguna explicacion como trabaja?? Luego trabaje con la del ain64_din128_dout128_v2b.zip de la cual extraje:
// check if note on or off event at channel 1 has been received
if( evnt0 == 0x80 || evnt0 == 0x90 ) {
// if note off event: force evnt2 to 0 for easier handling of 'LED off'
if( evnt0 == 0x80 )
evnt2 = 0;
// number of DOUT pin in evnt1, value in evnt2
MIOS_DOUT_PinSet(evnt1, evnt2 ? 0x01 : 0x00);
Bueno aca si bien pude lograr controlar los ultimos 8 leds con determinadas notas no encontre como hacer para controlar especificamente los que quiero yo como por ejemplo el 24, 25 , 28 y 31 y el resto controlarlos por soft.
Si alguien tendria la gentilesa de transcribirme un ejemplo con las correspondientes anotaciones para que pueda entenderlo o bien explicarme un poco como modificar los anteriores por que no los entiendo
Gracias
Edu