Autor Tema: Contorlador MIDI usando PIC16F877  (Leído 5432 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado esteban79

  • PIC10
  • *
  • Mensajes: 5
Contorlador MIDI usando PIC16F877
« en: 20 de Diciembre de 2008, 20:05:00 »
Hola gente de todopic!, un placer encontrar tanta info por aca.
Les cuento que me trae y las dudas que nacen en el proceso. En principio estoy comenzando a investigar todo este tema de los pics, a nivel electronico (usando PIC16F877) y a nivel de programacion (lo quiero programar en C). La idea que tengo es poder, en principio, hacer funcionar un pulsador que al accionarlo transmita una señal al Puerto MIDI IN (Conector DIN 5 para transmitir informacion de instrumentos musicales a la placa de sonido de la PC).
Ya cuento con mi Pic16f877, cristal 20MHZ, Programador serial para el PIC, protoboard, conector din5 y el soft que instale es el winpic800 y HI-TECH Lite (Para poder programar en C)

Ahora mis dudas, lei la hoja de datos del Pic, pero no termino de entender en que voltaje tendria que funcionar el pic una vez programado. Y por otro lado, mirando codigo de varios proyectos y dado que parece que el puerto midi funciona a 31250 kbps de velocidad, no se donde especificarlo en el codigo C.

Les paso las informacion relevante que fui encontrando con respecto a lo relacionado con MIDI:
 http://www.sea-acustica.es/Buenos_Aires_2008/a-225.pdf  (ahi encontre un proyecto super relacionado con esto, pero sin el codigo completo.)
 Nota: La velocidad del protocolo MIDI es de 31250 kbps (Por esta razon parece que se necesita un cristal de 20Mhz)
 
Links sobre controladores MIDI usando PIC's:
   http://www.audiomulch.com/midipic/

Bueno, eso es todo por ahora, avisen si no es el foro correspondiente! ;)

Saludos

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Contorlador MIDI usando PIC16F877
« Respuesta #1 en: 21 de Diciembre de 2008, 11:34:01 »
Hola Esteban! Bienvenido al foro!!
Si recien estas empezando con pics y programacion en C, te recomiendo q encares proyectos mas simples hasta q le agarres bien la mano.
Con respecto a tus dudas, los pics suelen trabajar a 5V, aunq tambien puede ser 3.3V u otros valores dependiendo el pic q uses (leer bien la hoja de datos).
Si queres implementar alguna clase de protocolo que el pic no implemente por hardware, no te queda otra q hacerlo por software. Osea q vas a tener q implementar los retardos, y todo lo necesario "a mano".
No es facil hacer esto, por eso te decia q primero hagas cosas mas simples hasta q tengas la experiencia necesaria.
Mucha suerte!!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

jacrmr

  • Visitante
Re: Contorlador MIDI usando PIC16F877
« Respuesta #2 en: 21 de Diciembre de 2008, 22:46:34 »
esteban79, yo he implementado varios dispositivos MIDI con PICs, pero siempre he usado ensamblador. Por razones de precisión te conviene manejarlo con un cristal de 20 MHz y en la hoja de datos te indica la fórmula para calcular el valor de un registro con el que configuras la velocidad del USART en 31250.

Desconectado esteban79

  • PIC10
  • *
  • Mensajes: 5
Re: Contorlador MIDI usando PIC16F877
« Respuesta #3 en: 22 de Diciembre de 2008, 00:55:30 »
Gracias por responder!!! si, la verdad es que como decía, estoy comenzando con el uso de pics y todavía me falta bastante,  pero sigo firme en concretar mi proyecto. JACRMR gracias por el dato del USART ya estoy investigando un poco de eso y voy a considerar comenzar con ensamblador! (espero tener suerte ya que en general programo en php ;) ).

JACRMR me gustaría saber si tienes algún ejemplo, como comentaba antes, solo para presionar un botón y poder enviar un mensaje MIDI en ensamblador. Ya que estoy un poco perdido con ese tema.

Gracias nuevamente por responder gera y jacrmr! todo este intercambio me sirve mucho para continuar!

Saludos

Desconectado WillyP

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 280
    • Sitiónica
Re: Contorlador MIDI usando PIC16F877
« Respuesta #4 en: 22 de Diciembre de 2008, 02:11:42 »
Hola esteban79

Hace unos años estuve experimentando con Midi, tengo algunos archivos en asm (ensamblador) Voy a buscar alguno que te pueda servir para empezar. Recuerdo uno que utilizaba el Pic 16F84A y enviaba a la PC un acorde de Do mayor séptima cada 2 segundos o algo así.

Saludos.-   

jacrmr

  • Visitante
Re: Contorlador MIDI usando PIC16F877
« Respuesta #5 en: 22 de Diciembre de 2008, 03:56:44 »
esteban79, bueno, antes que nada ¿por cuál opción te had decidido, C o ensamblador? Por ejemplo en ensamblador algo muy, pero muy simple sería lo siguiente (obviamente hay que añadirle más funcionalidad si quieres hacerlo con más botones o más funciones MIDI, y pulirlo por supuesto, es sólo el esqueleto) :

Código: ASM
  1. CICLO_PRINCIPAL
  2.         btfsc   PUERTO_BOTON,PIN_BOTON
  3.         goto    CICLO_PRINCIPAL
  4.         movlw   CMD_MIDI_PGM_CHANGE
  5.         movwf   TXREG
  6.         movlw   0x05
  7.         movwf   TXREG

Aquí estarías mandando un cambio de programa con el nuevo programa en el número 5. Antes debes declarar el CMD_MIDI_PGM_CHANGE, PUERTO_BOTON, el PIN_BOTON, (el pulsador debe tener una resistencia pullup y se activa al conectarlo a tierra), e inicializar el USART. Como te comento es algo muy sencillo y habrá que pulirlo y agregarle más funcionalidad pero para transmitir MIDI es algo tan simple como eso. Simplemente escribes en el registro TXREG y el USART manda el valor por el MIDI OUT.

Desconectado esteban79

  • PIC10
  • *
  • Mensajes: 5
Re: Contorlador MIDI usando PIC16F877
« Respuesta #6 en: 22 de Diciembre de 2008, 20:02:09 »
Gracias nuevamente JACRMR y WillyP buenisimo, cuando encuentres algo de eso avisame que me viene super bien.

JACRMR, por el momento estoy tratando de entender ensamblador, pero me gustaría intentarlo con C ya que me resulta mas intuitivo. Ahora te quería consultar por el código que me pasaste, cual sería el código análogo en C? ya voy investigando un poco de ensamblador pero me pierdo a la hora de entender la estructura general; digamos que el código se entiende, pero se que tras esto hay algunas configuraciones extras, como algún seteo inicial e includes de las librerias del PIC. Se entiende?

Bueno, gracias y Saludos!

Desconectado chichepic

  • PIC12
  • **
  • Mensajes: 56
    • MidiQuet
Re: Contorlador MIDI usando PIC16F877
« Respuesta #7 en: 03 de Enero de 2009, 10:12:49 »
Hola esteban79,espero no hayas abandonado tu proyecto.Tuve varias experincias con el maravilloso MIDI.Ante nada pasate por aca http://www.ucapps.de/  ...arme algunos de esos "cacharros" y son impresionantes.Aprovechando tu 16f877 puedes buscar el primero que hicieron, MIDIbox PLUS ,no lleva MIOS solo tienes que quemarle el .hex y puedes monitorearlo con soft MIDI-OX. Por otro lado programe mi propio controlador con BASIC PROTON,un 16f873,LCD y probe hasta 16 potes y 16 botones andando joya (con los mismos multiplexores que MIDIbox).Bueno espero que te sirva...saludos.

jacrmr

  • Visitante
Re: Contorlador MIDI usando PIC16F877
« Respuesta #8 en: 03 de Enero de 2009, 14:15:40 »
esteban79, por el momento no tengo ningún código en C para MIDI para mostrarte. Pero si en ASM es sencillo imáginate lo instantáneo que es en C. En efecto ocupas el (o los) include y la inicialización de puertos y palabra de configuración como mínimo.

Desconectado esteban79

  • PIC10
  • *
  • Mensajes: 5
Re: Contorlador MIDI usando PIC16F877
« Respuesta #9 en: 06 de Enero de 2009, 19:00:41 »
Hola, sigo en el proyecto!.. si!. todavía no abandone! ;). Chichepic te queria consultar, porque en la pagina encontré varios proyectos (en la pagina inicial ). Por otro lado como es el rollo con BASIC PROTON ?.. es mas amigable que ensamblador?

Bueno gracias y espero tu respuesta!!! :D

Saludos!


Desconectado chichepic

  • PIC12
  • **
  • Mensajes: 56
    • MidiQuet
Re: Contorlador MIDI usando PIC16F877
« Respuesta #10 en: 08 de Enero de 2009, 16:43:33 »
Joya que estes en camino.Justo con lo que tenes,pic xtal, podes armae este
http://www.ucapps.de/midibox_plus.html
todos los demas llevan MIOS (18f452) que es un "sistema operativo" que se graba via midi sobre un Bootloader (quemado previamente en el pic) que nos permite cargar distintas "aplicaciones" (controladores,sinte,secuenciador,etc) y tambien hay aplicaciones en C.
tienes que descargar el .hex apropiado para el 877..    y el MIDI-OX para monitorerlo..Por donde vas a ingresar? si tenes entrada midi va directo y sino se puede por el pto serie a 38400 baud. y con un  driver ..fijate el modulo LTC de la pag.  te va a ayudar mucho,con cada uno de esos modulos armas el cacharro que quieras..CORE, AIN ,DIN...
Con Proton es muy facil,no se ensamblador, solo tienes que poner para ej. NOTE ON
   HRSOut 144,tec,64
   print at 1,1,"tecla: ",dec2 tec.
pero te recomiendo ver los eventos midi antes en el MIDI.OX con algo ya hecho y despues escribis tu codigo.Espero te sirva saludos..

Desconectado esteban79

  • PIC10
  • *
  • Mensajes: 5
Re: Contorlador MIDI usando PIC16F877
« Respuesta #11 en: 09 de Enero de 2009, 21:09:08 »
Gracias Chichepic!... me puse a ver en detalle la pagina MIDIBOX y es notable lo que lograron, todo super modular. Creo que me voy a meter directamente con el Core en principio y despues con AIN para poder meter un pote a ver que pasa. Despues te cuento como me fue.

Saludos y Gracias!

Esteban

Desconectado chichepic

  • PIC12
  • **
  • Mensajes: 56
    • MidiQuet
Re: Contorlador MIDI usando PIC16F877
« Respuesta #12 en: 09 de Enero de 2009, 21:40:59 »
Hola...fijate que el CORE no es el mismo para 877 q  18f452,con este modulo pcipal ya podes probar potes.
Te diria que te inscribas en el foro español de dicha pagina.
nos vemos...


 

anything