English Version
French Version
Spanish Version
Interfaz MIOS C
Programar aplicaciones MIOS en C podrá ser una solución alternativa para el
ensamblador en el futuro, porque este lenguaje es más
fácil de entender, menos propenso a errores y más
reutilizable. La desventaja de C es un peor funcionamiento y
códigos mucho más largos, lo que significa que no
será posible programar aplicaciones tan complejas como MIDIbox SID o MIDIbox SEQ
completamente en C, especialmente por la reducción de flash y
RAM del PIC18F452 (que es mayormente suficiente, pero no lo
suficientemente alta para muchas aplicaciones...). Puede que esto sea
resuelto paso a paso con los futuros derivados pin compatibles, que
contendrán mucha más memoria, pero puuede que esto tarde
algunos años.
De cualquier manera, a
pesar de este hecho, MIOS y C son una estupenda combinación.
¿Por qué? porque MIOS (el Sistema Operativo) está
programado en lenguaje ensamblador y ha sido optimizado a mano para
mayor velocidad. Maneja muchas tareas críticas de
ejecución de las que el usuario no se tiene que preocupar. MIOS
contiene un montón de funciones prefabricadas que evitan a la
gente tener que reinventarlo todo- Posibilita al programador
interesado la correcta implementación del proyecto MIDI sin
conocimientos básicos sobre IO de alto rendimiento o
correcto procesamiento MIDI.
Así, el usuario solo tiene que iniciar la capa
de la aplicación en la que la optimización no importa
mucho. Y puede esperar que, muchas de las funciones sean procesadas a
la misma velocidad, así hayan sido escritas en C o en
ensamblador. Ok, el resultado depende mucho de la aplicación y
el compilador utilizados, pero es posible hacer muchas cosas estupendas
sin mucho esfuerzo, y cuantos más usuarios hayan empezando a
acercarse a C, muchos más ejemplos de código
podrán
ser compartidos con la comunidad, hecho que elevará el nivel de
las nuevas aplicaciones.
Actualmente, no soy capaz de estimar cuándo conviene
programar algo en ensamblador o en C- es este un tipo de conocimiento a
adquirir en los próximos meses- ¡Serán bienvenidos toda vuestra
ayuda y recomendaciones! No olvideis que
también es posible mezclar C y ensamblador en la capa de la
aplicación. Sugiero: La interfaz de usuario (botones, manejo de LEDs, salida de pantalla, MIDI IO) puede ser
implementada con C sin deventajas, pero las rutinas que tienen que
interactuar rápido (como un controlador periférico o
algoritmos con procesos de muchos datos) deberían ser
programados
en módulos separados de ensamblador y llamados con C.
Realización Técnica
Para MIOS en sí no importa si una rutina de C o
ensamblador está enganchado a las rutinas de respuesta de
USER_*, porque esta posibilidad ha sido tenida en cuenta desde el
principio de la fase de diseño. MIOS siempre se
entroncará con los vectores de USER_* en los eventos, que
son parte de la aplicación. Desde ahí, la
aplicación puede enlazarse a C si se desea.
Las funciones MIOS (MIOS_*) pueden ser
llamadas, en su mayor parte, desde un programa en C sin pérdida
de datos, mientras solo haya un parámetro de entrada y/o salida.
Las funciones con más parámetros requieren un poco
más de código que copie los parámetros de C ( que
son incrustados en la compilación) en los MIOS_PARAMETER[123].
Si esto te suena nuevo, no te sientas confuso,
por favor- no te tienes que ocupar de esta manipulación de
segundo nivel.
En vez de eso, solo tienes que usar
el llamado "Wrapper" (envoltura), que contiene todo el
código que hace falta para enlazar funciones C con MIOS. Este
"Wrapper" es parte del paquete MIOS Base.
Ejemplos de programación
CODE |
Enviar eventos MIDI de movimientos de pote |
CODE |
Envío de eventos mapeados de MIDI de movimientos de pote |
CODE |
Escala de valores de pote |
CODE |
Realización de función Toque-suave para potes |
CODE |
envío de eventos MIDI de movimientos de boton |
CODE |
Control de 128 LEDs via MIDI |
CODE |
Envío de eventos relativos MIDI de movimiento de rotary encoders |
CODE |
Envío de eventos MIDI de 7bit de movimiento de rotary encoders |
CODE |
Envío de eventos NRPN de 14bit de movimientos de rotary encoder |
CODE |
Un Manejo simple para motorfaders |
CODE |
Filtrado de todos los eventos MIDI excepto Bn 07 xx (Controladores de Volumen) |
CODE |
Sólo eventos de avance del Channel #1 |
CODE |
Conversión de CC a NRPN |
CODE |
Conversión de NRPN a CC |
CODE |
Conduciendo los pins del PIC vía MIDI |
CODE |
Impresión de valores en una LCD |
CODE |
Uso de caracteres especiales en una LCD |
Last update: 2015-09-24
Copyright © 1998-2015, Thorsten Klose. All rights reserved.
|