Please note: in difference to the original page, this translation is not automatically extracted from the source code, and therefore not always up-to-date!

Referencia de Funciones MIOS (Version C)


Click aquí para versión ASM 


MIOS_MIDI_BeginStream
C_DECLARACIÓN void MIOS_MIDI_BeginStream(void)
DESCRIPTION usa esta función antes de que se haya enviado ningún dato o evento MIDI.
Necesario para el correcto funcionamiento de la función de enlace de la MIDIbox.
C_IN -
C_OUT -
C_EXAMPLE
  // envía el evento MIDI B0 07 7F
MIOS_MIDI_BeginStream();
MIOS_MIDI_TxBufferPut(0xb0);
MIOS_MIDI_TxBufferPut(0x07);
MIOS_MIDI_TxBufferPut(0x7f);
MIOS_MIDI_EndStream();

Volver

MIOS_MIDI_DeviceIDAutoSet
C_DECLARATION void MIOS_MIDI_DeviceIDAutoSet(void)
DESCRIPTION deriva la ID del dispositivo MIDI desde la cabecera de la ID del PIC
C_IN -
C_OUT -
C_EXAMPLE
  // poner la ID de dispositivo como el valor especificado en la cabecera de ID del PIC
 MIOS_MIDI_DeviceIDAutoSet();

Volver

MIOS_MIDI_DeviceIDGet
C_DECLARATION unsigned char MIOS_MIDI_DeviceIDGet(void)
DESCRIPTION Devuelve la ID del dispositivo MIDI
C_IN -
C_OUT número de dispositivo
C_EXAMPLE
  // Imprime en pantalla la ID de dispositivo
MIOS_LCD_PrintHex2(MIOS_MIDI_DeviceIDGet());

Volver

MIOS_MIDI_DeviceIDSet
C_DECLARATION void MIOS_MIDI_DeviceIDSet(unsigned char device_id)
DESCRIPTION Establece la ID del dispositivo MIDI. Debería ser un único número en una cadena MIDI.
 Normalmente, esta ID deriva del encabezado de la ID del PIC con la función MIOS_MIDI_DeviceIDAutoSet
C_IN número de dispositivo en <device_id>
C_OUT -
C_EXAMPLE
  ;; cambiar la ID de dispositivo
MIOS_MIDI_DeviceIDSet(0x03);

Volver 

MIOS_MIDI_EndStream
C_DECLARATION void MIOS_MIDI_EndStream(void)
DESCRIPTION Usa esta función después de que hayan sido enviados el evento MIDI o datos.
Esto es necesario para el correcto funcionamiento de la función de enlace de MIDIbox!
C_IN -
C_OUT -
C_EXAMPLE
  // Envía el evento MIDI 90 36 7F
MIOS_MIDI_BeginStream();
MIOS_MIDI_TxBufferPut(0x90);
MIOS_MIDI_TxBufferPut(0x36);
MIOS_MIDI_TxBufferPut(0x7f);
MIOS_MIDI_EndStream();

Volver

MIOS_MIDI_Init
C_DECLARATION void MIOS_MIDI_Init(void)
DESCRIPTION Inicializa la interfaz MIDI: La tasa de baudios será establecida dependiendo de la opción To-Host/MIDI, Los buffers Rx y Tx serán vaciados
C_IN -
C_OUT -
Volver

MIOS_MIDI_InterfaceAutoSet
C_DECLARATION void MIOS_MIDI_InterfaceAutoSet(void)
DESCRIPTION Deriva el tipo de interfaz MIDI y la dirección del módulo MBHP_IIC_MIDI del encabezado de la ID del PIC.
To-Host flag: ID Byte 6, Bit 0
Dirección del módulo MBHP_IIC_MIDI : ID Byte 5
Si la dirección esclava es  != 0x00 y != 0xff, será tomado por MIOS como valor por defecto para salida de MIDI (Out)
C_IN -
C_OUT -
C_EXAMPLE
  // Dispone la interfaz MIDI como el tipo especificado en el encabezado de ID del PIC
 MIOS_MIDI_InterfaceAutoSet();

Volver

MIOS_MIDI_InterfaceGet
C_DECLARATION unsigned char MIOS_MIDI_InterfaceGet(void)
DESCRIPTION Devuelve el tipo actual de interfaz MIDI siguiendo los tipos de interfaces provistos.
0x00: MIOS_MIDI_INTERFACE_COMMON (interfaz MIDI común, 31250 baud)
0x01: MIOS_MIDI_INTERFACE_TO_HOST (interfaz MIDIbox-to-COM , RS232, 38400 baud)
>= 0x02: MBHP_IIC_MIDI dirección del módulo
C_IN -
C_OUT tipo de interfaz
C_EXAMPLE
  // Obtener el tipo de interfaz y su rama dependiendo de la configuración.
switch( MIOS_MIDI_InterfaceGet() ) {
case MIOS_MIDI_INTERFACE_COMMON:
// haz esto...
break;
case MIOS_MIDI_INTERFACE_TO_HOST:
// haz esto otro...
break;
default:
// IIC esclavo seleccionado...
}

Volver

MIOS_MIDI_InterfaceSet
C_DECLARATION void MIOS_MIDI_InterfaceSet(unsigned char interface)
DESCRIPTION Esta función tiene dos propósitos:
Si el número de interfaz es 0x00 o 0x01, la USART interna será seleccionada, y se configurará una tasa de baudios (baudrate) de 31250 o 38400 :
0x00: MIOS_MIDI_INTERFACE_COMMON (interfaz MIDI común, 31250 baudios)
0x01: MIOS_MIDI_INTERFACE_TO_HOST (MIDIbox-to-COM interfaz, RS232, 38400 baudios)

Con valores  >= 0x02 se seleccionará un módulo MBHP_IIC_MIDI para los mensajes MIDI salientes (que son enviados con MIOS_MIDI_TxBufferPut)
Los mensajes entrantes seguirán gestionándpse con el USART interno!
Si los datos deben ser recibidos por un módulo MBHP_IIC_MIDI , por favor, usa las funciones apropiadas del paquete de software que se distribuye en el paquete que lleva el módulo incluído.
 Date cuenta de que la función MIOS_MIDI_InterfaceAutoSet te permite derivar el tipo de interfaz MIDI y la dirección IIC esclava de la cabecera de ID del PIC!
C_IN Tipo de interfaz en <interface>
C_OUT -
C_EXAMPLE

// Envía el reloj MIDI a través del MIDI Out con tasa de baudios normal
MIOS_MIDI_InterfaceSet(MIOS_MIDI_INTERFACE_COMMON);
MIOS_MIDI_TxBufferPut(0xf8);

// Envía el reloj MIDI a través del MBHP_IIC_MIDI con dirección 0x10
MIOS_MIDI_InterfaceSet(0x10);
MIOS_MIDI_TxBufferPut(0xf8);

// Volver a la interfaz por defecto
MIOS_MIDI_InterfaceAutoSet();

Volver

MIOS_MIDI_MergerGet
C_DECLARATION unsigned char MIOS_MIDI_MergerGet(void)
DESCRIPTION devuelve la configuración de la fusión integrada MIDI: 0x00: MIOS_MIDI_MERGER_DISABLED (fusión deshabilitada)
0x01: MIOS_MIDI_MERGER_ENABLED (fusión habilitada)
0x02: MIOS_MIDI_MERGER_MBLINK_EP (MIDIbox Link End Point)
0x03: MIOS_MIDI_MERGER_MBLINK_FP (MIDIbox Link Forwarding Point)
C_IN -
C_OUT merger function ID
C_EXAMPLE
  // Obtener configuración de fusión y rama dependiendo de la configuración
switch( MIOS_MIDI_MergerGet() ) {
case MIOS_MIDI_MERGER_ENABLED:
// hacer esto...
break;
case MIOS_MIDI_MERGER_MBLINK_EP:
// hacer esto...
break;
case MIOS_MIDI_MERGER_MBLINK_FP:
// hacer esto...
break;
default: // MIOS_MIDI_MERGER_DISABLED:
// hacer esto...
}

Volver

MIOS_MIDI_MergerSet
C_DECLARATION void MIOS_MIDI_MergerSet(unsigned char mode)
DESCRIPTION configura la fusión integrada MIDI se proveen las siguientes IDs de Fusor MIDI :
0x00: MIOS_MIDI_MERGER_DISABLED (fusión deshabilitada)
0x01: MIOS_MIDI_MERGER_ENABLED (fusión habilitada)
0x02: MIOS_MIDI_MERGER_MBLINK_EP (MIDIbox Link End Point)
0x03: MIOS_MIDI_MERGER_MBLINK_FP (MIDIbox Link Forwarding Point)
C_IN merger function ID in <mode>
C_EXAMPLE
  // configurar la MIDIbox como MIDIbox Link End Point
// (significa: fusión habilitada solo para eventos que hayan sido
// generados por otra MIDIbox que esté configurada como
// MIDIbox Link Forwarding Point)
MIOS_MIDI_MergerSet(MIOS_MIDI_MERGER_MBLINK_EP);

Volver

MIOS_MIDI_RxBufferFree
C_DECLARATION unsigned char MIOS_MIDI_RxBufferFree(void)
DESCRIPTION Devuelve un número de bytes libres en el buffer de recepción
C_IN -
C_OUT número de bytes libres 
NOTE Esta función es SOLO para uso interno de MIOS!
Los bytes recibidos serán notificados por los atajos de MPROC!
C_EXAMPLE
  // Introduce un byte MIDI en el Buffer Rx si éste no está lleno
 if( MIOS_MIDI_RxBufferFree() ) {
MIOS_MIDI_RxBufferPut(0xf8); // Reloj MIDI
}

Volver

MIOS_MIDI_RxBufferGet
C_DECLARATION unsigned char MIOS_MIDI_RxBufferGet(void)
DESCRIPTION Obtiene un byte del buffer de recepción.
C_IN -
C_OUT byte recibido
NOTE Esta función es solo para uso inteno de MIOS!
Los bytes recibidos serán notificados por los atajos MPROC !
C_EXAMPLE
  unsigned char b;

// obtiene un byte MIDI del Buffer Rx si se ha recibido algo.
 if( MIOS_MIDI_RxBufferUsed() ) {
b = MIOS_MIDI_RxBufferGet();
}

Volver

MIOS_MIDI_RxBufferPut
C_DECLARATION void MIOS_MIDI_RxBufferPut(unsigned char b)
DESCRIPTION pone un byte en el buffer de recepción
C_IN byte in <b>
C_OUT -
NOTE Esta función es solo para uso inteno de MIOS!
Los bytes recibidos serán notificados por los atajos MPROC !
C_EXAMPLE
  // pone un byte MIDI en el Buffer Rx si éste no está lleno.
if( MIOS_MIDI_RxBufferFree() ) {
MIOS_MIDI_RxBufferPut(0xf8); // Reloj MIDI
}

Volver

MIOS_MIDI_RxBufferUsed
C_DECLARATION unsigned char MIOS_MIDI_RxBufferUsed(void)
DESCRIPTION Devuelve el número de bytes usados en el buffer de recepción.
C_IN -
C_OUT número de bytes usados
NOTE Esta función es solo para uso inteno de MIOS!
Los bytes recibidos serán notificados por los atajos MPROC !
C_EXAMPLE
  // detecta si se ha recibido algo vía MIDI
if( MIOS_MIDI_RxBufferUsed() ) {
// hacer algo...
}

Volver

MIOS_MIDI_TxBufferFlush
C_DECLARATION void MIOS_MIDI_TxBufferFlush(void)
DESCRIPTION Espera hasta que se hayan transmitido todos los bytes MIDI del Buffer Tx
C_IN -
C_OUT -
C_EXAMPLE
  // espera hasta que el buffer esté vacío, entonces manda una descarga de nuevos bytes
MIOS_MIDI_TxBufferFlush();
MIOS_MIDI_TxBufferPut(0xf0);
// ...

Volver

MIOS_MIDI_TxBufferFree
C_DECLARATION unsigned char MIOS_MIDI_TxBufferFree(void)
DESCRIPTION Devuelve el número de bytes libres en el buffer de transmisión.
C_IN -
C_OUT número de bytes libresnumber of free bytes
NOTE Esta función es solo para uso inteno de MIOS!
La función MIOS_MIDI_TxBufferPut()esperará hasta que el buffer esté lleno.
C_EXAMPLE
  // Pone un byte MIDI en el Buffer Tx si éste no está lleno
if( MIOS_MIDI_TxBufferFree() ) {
MIOS_MIDI_TxBufferPut(0xf8);
}

Volver

MIOS_MIDI_TxBufferGet
C_DECLARATION unsigned char MIOS_MIDI_TxBufferGet(void)
DESCRIPTION Obtiene un byte libre del buffer de transmisión.
C_IN -
C_OUT byte para transmitir
NOTE Esta función es solo para uso inteno de MIOS!
C_EXAMPLE
  unsigned char b;

// obtiene un byte libre del Buffer Tx si hay un nuevo byte disponible
if( MIOS_MIDI_TxBufferUsed() ) {
b = MIOS_MIDI_TxBufferGet();
}

Volver

MIOS_MIDI_TxBufferPut
C_DECLARATION void MIOS_MIDI_TxBufferPut(unsigned char b)
DESCRIPTION mete un byte en el buffer de transmisión.
Si el Buffer Tx está lleno, la función será suspendida hasta que se haya transmitido un byte vía MIDI.
Esta función redirige los bytes salientes hacia el módulo MBHP_IIC_MIDI module si ha sido seleccionado con la función MIOS_MIDI_InterfaceSet o MIOS_MIDI_InterfaceAutoSet function
C_IN byte para transmitir <b>
C_OUT -
C_EXAMPLE
  // pone un byte MIDI en el Buffer Tx
 MIOS_MIDI_TxBufferPut(0xf8); // MIDI Clock

Volver

MIOS_MIDI_TxBufferUsed
C_DECLARATION unsigned char MIOS_MIDI_TxBufferUsed(void)
DESCRIPTION Devuelve el número de bytes usados en el buffer
C_IN -
C_OUT número de bytes usados
NOTE Esta función es solo para uso inteno de MIOS!
La función MIOS_MIDI_TxBufferPut() esperará hasta que el buffer esté lleno
C_EXAMPLE
  // monitoriza si se ha introducido algo en el Buffer Tx
 if( MIOS_MIDI_TxBufferUsed() ) {
// tiene algo
}

Volver

MIOS_MPROC_MergerDisable
C_DECLARATION void MIOS_MPROC_MergerDisable(void)
DESCRIPTION Esta función te permite deshabilitar temporalmente el proceso de fusión de MIDI durante la recepción de un nuevo evento.Es usado por los parseadores SysEx para prevenir la expedición de las secuencias (strings) SysEx, pero también puede ser usado por el atajo USER_MPROC_NotifyReceivedByte para filtrar otros eventos. La fusión se habilitará nuevamente una vez se haya recibido un evento MIDI completo!
C_IN -
C_OUT -
Volver

MIOS_MPROC_MergerEnable
C_DECLARATION void MIOS_MPROC_MergerEnable(void)
DESCRIPTION Habilita el procesamiento de fusión MIDI como se especifica con MIOS_MIDI_MergerSet
C_IN -
C_OUT -
Volver

MIOS_MPROC_MergerGet
C_DECLARATION unsigned char MIOS_MPROC_MergerGet(void)
DESCRIPTION Devuelve 1 si el proceso de fusión está habilitado, 0 si está deshabilitado
C_IN -
C_OUT status
Volver

MIOS_AIN_DeadbandGet
C_DECLARATION unsigned char MIOS_AIN_DeadbandGet(void)
DESCRIPTION Devuelve la diferencia entre el último y el actual valor de pote que debe ser archivado para disparar la función "NotifyChange" (notificar cambio)
C_IN -
C_OUT diff value
Volver

MIOS_AIN_DeadbandSet
C_DECLARATION void MIOS_AIN_DeadbandSet(unsigned char deadband)
DESCRIPTION Marca la diferencia entre el último y el actual valor de pote que debe ser archivado para disparar la función "NotifyChange" (notificar cambio)
C_IN Valor de deadband en <deadband>
C_OUT -
Volver

MIOS_AIN_DynamicPrioGet
C_DECLARATION unsigned char MIOS_AIN_DynamicPrioGet(void)
DESCRIPTION devuelve el status de la característica de sampleado de prioridad dinámica . La bandera solo se tomará en cuenta en modo multiplexado (más de 8potes conectados al core vía AINX4).Si está activo, la frecuencia de sampleado de los dos últimos potes girados será dinámicamente incrementada para mayor exactitud.
C_IN -
C_OUT 0x00: sampleado de prioridad dinámica deshabilitado o modo activo no multiplexado.
0x01: sampleado de prioridad dinámica habilitado(por defecto)
Volver

MIOS_AIN_DynamicPrioSet
C_DECLARATION void MIOS_AIN_DynamicPrioSet(unsigned char enable)
DESCRIPTION habilita o deshabilita la característica de sampleado de prioridad dinámica.enables or disables the dynamic priority sampling feature. La bandera sóo se tendrá en cuenta en el modo multiplexado(más de 8 potes conectados al módulo core vía AINX4). Si está activo, la frecuencia de sampleado de los dos últimos potes activados será dinámicamente incrementada para mayor exactitud.
C_IN 0x00: sampleado de prioridad dinámica desactivado
0x01: sampleado de prioridad dinámica habilitado(por defecto)
C_OUT -
Volver

MIOS_AIN_LastPinsGet
C_DECLARATION unsigned char MIOS_AIN_LastPinsGet(void)
DESCRIPTION devuelve el índice de los dos pines que han sido sampleados con un valor diferente al final. 
En palablas menos abstractas: devuelve el número de los dos últimos potes activados.
C_IN -
C_OUT Valor devuelto y MIOS_PARAMETER1: último pin
MIOS_PARAMETER2: penúltimo pin
Volver

MIOS_AIN_Muxed
C_DECLARATION void MIOS_AIN_Muxed(void)
DESCRIPTION activa el modo MUX( se pueden conectar hasta 64 potes vía multiplexadores AIN)
C_IN -
C_OUT -
Volver

MIOS_AIN_NumberGet
C_DECLARATION unsigned char MIOS_AIN_NumberGet(void)
DESCRIPTION devuelve el número de pines análogos disponibles.
C_IN -
C_OUT número de pins análogos
Volver

MIOS_AIN_NumberSet
C_DECLARATION void MIOS_AIN_NumberSet(unsigned char pots)
DESCRIPTION establece el número de pines AIN disponibles
Si el número es  > 64, el valór será forzado a 64 
C_IN Número de pins análogos en<pots>
C_OUT -
Volver

MIOS_AIN_Pin7bitGet
C_DECLARATION unsigned char MIOS_AIN_Pin7bitGet(unsigned char pin)
DESCRIPTION rdevuelve un valor de 7-bit de la entrada AIN (input)
C_IN número de pins análogos de entrada en<pin>
C_OUT valor de 7-bit 
Volver

MIOS_AIN_PinGet
C_DECLARATION unsigned int MIOS_AIN_PinGet(unsigned char pin)
DESCRIPTION Devuelve el valor de la entrada AIN (input)
C_IN Número de pin en <pin>
C_OUT valor de 10 bit 
Volver

MIOS_AIN_PinLSBGet
C_DECLARATION unsigned char MIOS_AIN_PinLSBGet(unsigned char pin)
DESCRIPTION Devuelve el valor LSB de una entrada AIN (input) 
C_IN número de pin en <pin>
C_OUT Valor LSB
Volver

MIOS_AIN_PinMSBGet
C_DECLARATION unsigned char MIOS_AIN_PinMSBGet(unsigned char pin)
DESCRIPTION Devuelve un valor MSB de entrada AIN (input)
C_IN número de pin en <pin>
C_OUT Valor MSB
Volver

MIOS_AIN_UnMuxed
C_DECLARATION void MIOS_AIN_UnMuxed(void)
DESCRIPTION desactiva el modo MUX  (se pueden conectar 8 potes directamente a los pins analógicos de entrada(input) del PIC
C_IN -
C_OUT -
Volver

MIOS_MF_DeadbandGet
C_DECLARATION unsigned char MIOS_MF_DeadbandGet(void)
DESCRIPTION >Devuelve el valor de deadband para el controlador MF 
C_IN -
C_OUT valor deadband
Volver

MIOS_MF_DeadbandSet
C_DECLARATION void MIOS_MF_DeadbandSet(unsigned char deadband)
DESCRIPTION Establece el valor de deadband para el controlador MF
C_IN valor deadband en <deadband>
C_OUT -
NOTA Solo se puede usar esta funcion cuando el controlador motor ha sido activado.
Volver

MIOS_MF_Disable
C_DECLARACION void MIOS_MF_Disable(void)
DESCRIPCION Desactiva el módulo MF
C_IN -
C_OUT -
Volver

MIOS_MF_Enable
C_DECLARACION void MIOS_MF_Enable(void)
DESCRIPCION Activa el módulo MF module - en este modo los multiplexadores están desactivados. Se pueden controlar hasta 8 motorfaders a través del puerto MUX. Esta función solo se puede usar con el controlador motor ha sido habilitado.
C_IN -
C_OUT -
C_EJEMPLO
  ;; inicializar el controlador MF para faders Alps RSAON11M9 
MIOS_MF_Enable();
MIOS_MF_DeadbandSet(3);
MIOS_MF_PWM_DutyCycleUpSet(1);
MIOS_MF_PWM_DutyCycleDownSet(1);
MIOS_MF_PWM_PeriodSet(3);

Volver

MIOS_MF_FaderMove
C_DECLARACION void MIOS_MF_FaderMove(unsigned char fader, unsigned int pos)
DESCRIPCION establecer posición objetivo y mover fader 
C_IN número de fader <fader>, posición de fader  <pos>
NOTA esta función solo se puede usar con el controlador motor habilitado.
C_EJEMPLO
  // Mover fader #7 a la posición más alta(0x3ff)
MIOS_MF_FaderMove(0x07, 0x3ff);
Volver

MIOS_MF_PWM_DutyCycleDownGet
C_DECLARACION unsigned char MIOS_MF_PWM_DutyCycleDownGet(void)
DESCRIPCION Devuelve el Duty Cycle para movimientos descendentes - ver  http://www.ucapps.de/mbhp_mf.html para información detallada acerca de este valor.
C_IN -
C_OUT Duty Cycle
Volver

MIOS_MF_PWM_DutyCycleDownSet
C_DECLARACION void MIOS_MF_PWM_DutyCycleDownSet(unsigned char cali_down)
DESCRIPCION Establece el Duty Cycle para movimientos descendentes - ver http://www.ucapps.de/mbhp_mf.html para información detallada sobre este valor.
C_IN Duty Cycle in <cali_down>
C_OUT -
Volver

MIOS_MF_PWM_DutyCycleUpGet
C_DECLARACION unsigned char MIOS_MF_PWM_DutyCycleUpGet(void)
DESCRIPCION Devuelve el Duty Cycle para movimientos ascendentes - ver http://www.ucapps.de/mbhp_mf.html para información detallada sobre este valor.
C_IN -
C_OUT Duty Cycle
Volver

MIOS_MF_PWM_DutyCycleUpSet
C_DECLARACION void MIOS_MF_PWM_DutyCycleUpSet(unsigned char cali_up)
DESCRIPCION Establece el Duty Cycle para movimientos ascendentes - ver http://www.ucapps.de/mbhp_mf.html para información detallada sobre este valor,
C_IN Duty Cycle in <cali_up>
C_OUT -
Volver

MIOS_MF_PWM_PeriodGet
C_DECLARACION unsigned char MIOS_MF_PWM_PeriodGet(void)
DESCRIPCION Devuelve el período PWM - ver http://www.ucapps.de/mbhp_mf.html para información detallada acerca de este valor.
C_IN -
C_OUT período PWM
Volver

MIOS_MF_PWM_PeriodSet
C_DECLARACION void MIOS_MF_PWM_PeriodSet(unsigned char speed)
DESCRIPCION Establece el período PWM -  ver http://www.ucapps.de/mbhp_mf.html para información detallada acerca de este valor.
C_IN PWM period in <speed>
C_OUT -
Volver

MIOS_MF_SuspendDisable
C_DECLARACION void MIOS_MF_SuspendDisable(unsigned char fader)
DESCRIPCION desactiva el modo suspenso del motor 
(función usada por detección de sensores táctiles)
esta función solo puede ser usada con el controlador motor habilitado.
C_IN number of motor in <fader> (0-7)
C_OUT -
Volver

MIOS_MF_SuspendEnable
C_DECLARACION void MIOS_MF_SuspendEnable(unsigned char fader)
DESCRIPCION Suspende el motor
(función usada por la detección de sensores táctiles)
esta función solo puede ser usada con el controlador motor habilitado.
C_IN number of motor in <fader> (0-7)
C_OUT -
Volver

MIOS_MF_SuspendGet
C_DECLARACION unsigned char MIOS_MF_SuspendGet(unsigned char fader)
DESCRIPCION devuelve el estado de suspensión del motor,
C_IN number of motor in <fader> (0-7)
C_OUT 1 si el motor está suspendido, si no 0
Volver

MIOS_MF_TouchDetectionReset
C_DECLARACION void MIOS_MF_TouchDetectionReset(unsigned char fader)
DESCRIPCION Esta función resetea la detección táctil implementada por software para que el fader sea reposicionado, no importando si está siendo movido manualmente o no
C_IN número de motor en <fader> (0-7)
C_OUT -
Volver

MIOS_DIN_PinAutoRepeatDisable
C_DECLARACION void MIOS_DIN_PinAutoRepeatDisable(unsigned char pin)
DESCRIPCION deshabilita la auto-repetición para el pin apropiado.
C_IN número de pin en <pin>
C_OUT -
Volver

MIOS_DIN_PinAutoRepeatEnable
C_DECLARACION void MIOS_DIN_PinAutoRepeatEnable(unsigned char pin)
DESCRIPCION habilita la característica de auto-repetición para el pin apropiado
C_IN número de pin en <pin>
C_OUT -
Volver

MIOS_DIN_PinAutoRepeatGet
C_DECLARACION unsigned char MIOS_DIN_PinAutoRepeatGet(unsigned char pin)
DESCRIPCION devuelve != 0 si la auto-repetición ha sido activada para el pin apropiado.
C_IN número de pin en <pin>
C_OUT != 0 si la auto-repetición ha sido activada para este pin
0 si auto-repetición ha sido desactivada para este pin
Volver

MIOS_DIN_PinGet
C_DECLARACION unsigned char MIOS_DIN_PinGet(unsigned char pin)
DESCRIPCION Devuelve el valor de  Pin DIN
C_IN Número de pin en <pin>
C_OUT 1 si un pin es +5V, 0 si el pin es de 0V
Volver

MIOS_DIN_SRGet
C_DECLARACION unsigned char MIOS_DIN_SRGet(unsigned char sr)
DESCRIPCION Devuelve el valor de registro de cambio de DIN
C_IN número de registro de cambios en <sr>
C_OUT Valor de registro de cambios
Volver

MIOS_DOUT_PinGet
C_DECLARACION unsigned char MIOS_DOUT_PinGet(unsigned char pin)
DESCRIPCION devuelve el valor de un Pin DOUT 
C_IN Número de Pin en <pin>
C_OUT 1 si el pin es de +5V,  0 si el pin es de 0V
Volver

MIOS_DOUT_PinSet
C_DECLARACION void MIOS_DOUT_PinSet(unsigned char pin, unsigned char value)
DESCRIPCION configura el pin como de 0 o 5V
C_IN Número de pin en  <pin>, valor en <value>
Volver

MIOS_DOUT_PinSet0
C_DECLARACION void MIOS_DOUT_PinSet0(unsigned char pin)
DESCRIPCION Configura el Pin a  0V
C_IN Número de pin en WREG
Volver

MIOS_DOUT_PinSet1
C_DECLARACION void MIOS_DOUT_PinSet1(unsigned char pin)
DESCRIPCION Configura el pin a  5V
C_IN Número de pin en <pin>
Volver

MIOS_DOUT_SRGet
C_DECLARACION unsigned char MIOS_DOUT_SRGet(unsigned char sr)
DESCRIPCION devuelve el valor de DOUT del shift register
C_IN número de shift register in <sr>
C_OUT valor del shift register
Volver

MIOS_DOUT_SRSet
C_DECLARACION void MIOS_DOUT_SRSet(unsigned char sr, unsigned char sr_value)
DESCRIPCION establece sl valor DOUT del shift register
C_IN número de shift register in <sr>
valor in <sr_value>
C_OUT -
Volver

MIOS_ENC_Abs7bitAdd
C_DECLARACION void MIOS_ENC_Abs7bitAdd(unsigned char enc, unsigned char value)
DESCRIPCION Añade el incrementer(incrementador) al valor absoluto de 7-bit del encoder
Esta función satura el valor. Esto significa que si el valor resultante es mayor de 127 será saturado a 127. Se hará lo mismo con valores inferiores a 0.
C_IN número de encoder in <enc>
valor de incrementer  in <value>
C_OUT devuelve un nuevo valor absoluto en MIOS_PARAMETER1
MIOS_PARAMETER2[0] es 1, si el valor ha sido cambiado, es 0 si es igual al antiguo valor.
NOTA Esta función usa un registro de repuesto que sólo está disponible cuando la velocidad del encoder está establecida como MIOS_ENC_SPEED_NORMAL. En el resto de modos de velocidad (MIOS_ENC_SPEED_SLOW y MIOS_ENC_SPEED_FAST) esta función NO DEBE USARSE, en su lugar habrá que escribir un handler dedicado para valores absolutos  (ver aplicaciones en enc_example* )
C_EJEMPLO
  // resta -5 del valor de 7-bit del encoder #0
MIOS_ENC_Abs7bitAdd(0, -5);

Volver

MIOS_ENC_Abs7bitGet
C_DECLARACION unsigned char MIOS_ENC_Abs7bitGet(unsigned char enc)
DESCRIPCION devuelve un valor absoluto de 7 bits del encoder
C_IN número de encoder in <enc>
C_OUT valor absoluto
NOTA Esta función usa un registro de repuesto que sólo está disponible cuando la velocidad del encoder está establecida como MIOS_ENC_SPEED_NORMAL. En el resto de modos de velocidad (MIOS_ENC_SPEED_SLOW y MIOS_ENC_SPEED_FAST) esta función NO DEBE USARSE, en su lugar habrá que escribir un handler dedicado para valores absolutos  (ver aplicaciones en enc_example* )
C_EJEMPLO
  // obtener el valor de 7 bits actual del encoder #0
value = MIOS_ENC_Abs7bitGet(0);

Volver

MIOS_ENC_Abs7bitSet
C_DECLARACION void MIOS_ENC_Abs7bitSet(unsigned char enc, unsigned char value)
DESCRIPCION establece el valor absoluto de 7 bits del encoder
C_IN número de encoder in <enc>, valor absoluto in <value>
NOTA Esta función usa un registro de repuesto que sólo está disponible cuando la velocidad del encoder está establecida como MIOS_ENC_SPEED_NORMAL. En el resto de modos de velocidad (MIOS_ENC_SPEED_SLOW y MIOS_ENC_SPEED_FAST) esta función NO DEBE USARSE, en su lugar habrá que escribir un handler dedicado para valores absolutos  (ver aplicaciones en enc_example* )
C_EJEMPLO
  // establece el valor de 7-bit value del encoder #0 to 0x40
MIOS_ENC_Abs7bitSet(0, 0x40);

Volver

MIOS_ENC_NumberGet
C_DECLARACION unsigned char MIOS_ENC_NumberGet(void)
DESCRIPCION devuelve el número de encoders que han sido definidos en la tabla de encoder
C_IN -
C_OUT número de encoders
Volver

MIOS_ENC_SpeedGet
C_DECLARACION unsigned char MIOS_ENC_SpeedGet(unsigned char enc)
DESCRIPCION Devuelve el ajuste de velocidad para un encoder
Están disponibles los siguientes ajustes:
MIOS_ENC_SPEED_SLOW 0x00
MIOS_ENC_SPEED_NORMAL 0x01
MIOS_ENC_SPEED_FAST 0x02
C_IN número de encoder in <enc>
C_OUT devuelve el modo de velocidad 
parámetro de velocidad en  MIOS_PARAMETER2
C_EJEMPLO
  // devuelve el ajuste de velocidad de  encoder #0
speed = MIOS_ENC_SpeedGet(0);

Volver

MIOS_ENC_SpeedSet
C_DECLARACION void MIOS_ENC_SpeedSet(unsigned char enc, unsigned char mode, unsigned char parameter)
DESCRIPCION establece la velocidad de un encoder
están disponibles los siguientes modos:
MIOS_ENC_SPEED_SLOW 0x00 (requiere parámetro adicional)
MIOS_ENC_SPEED_NORMAL 0x01 (sin parámetro adicional)
MIOS_ENC_SPEED_FAST 0x02 (requiere parámetro adicional)
C_IN número de encoder in <enc>
modo de velocidad en <mode>
parámetro de velocidad <parameter>
NOTA Cuando se usa MIOS_ENC_SPEED_SLOW o MIOS_ENC_SPEED_FAST, Las funciones MIOS_ENC_Abs* no estarán disponibles dado que estos modos de velocidad sitúan un registro de repuesto que es normalmente usado para almacenar e l valor absoluto. Así que, en este caso, debería escribirse un handler para valores absolutos.(ver aplicaciones enc_example* )
C_EJEMPLO
  MIOS_ENC_SPEED_NORMAL
~~~~~~~~~~~~~~~~~~~~~
// este modo de velocidad no requiere ningún parámetro adicional (debería ser cero)

// ajustar la velocidad del encoder #0 a "normal"
MIOS_ENC_SpeedSet(0, MIOS_ENC_SPEED_NORMAL, 0);

MIOS_ENC_SPEED_SLOW
~~~~~~~~~~~~~~~~~~~
// esta velocidad permite definir un valor pre-divisor this speed mode
// de 0 a 7

// ajustar la velocidad del encoder #0 a "slow", usar un pre-divisor
// de 3 para que el encoder incremente cada 4º paso
// step (predivider value (- 1))
MIOS_ENC_SpeedSet(0, MIOS_ENC_SPEED_SLOW, 3);

MIOS_ENC_SPEED_FAST
~~~~~~~~~~~~~~~~~~~
// en este modo de velocidad el valor de incremento depende de
// la velocidad rotacional basándose en la siguiente fórmula :

// speed_ctr: decrecido con cada ciclo de actualización
// (-> MIOS_SRIO_UpdateFrqSet)
// (normalmente 1 ms) para medir el tiempo entre
 // dos pasos del encoder
// Init value: 0x7f
// alcanza 0x00 después de 127 ciclos de actualización
// (normalmente después de 127 ms)
// <parameter>: especificado con el MIOS_ENC_SpeedSet
//
// función, valores permitidos:
// 0 (rápido) -> divisor = 2^(7-0) = 128
// 1 (más rápido) -> divisor = 2^(7-1) = 64
// ...
// 7 (el más rápido) -> divisor = 2^(7-7) = 1
// ->
// incrementer = speed_ctr / (2^(7-parámetro))

// establecer la velocidad para el encoder #0 a "fast", el valor de exponente de velocidad es 2
MIOS_ENC_SpeedSet(0, MIOS_ENC_SPEED_FAST, 2);

Volver

MIOS_SRIO_DebounceGet
C_DECLARACION unsigned char MIOS_SRIO_DebounceGet(void)
DESCRIPCION devuelve el  valor de recarga antirrebote(debounce) de los registros DIN SR
C_IN -
C_OUT valor de recarga antirrebote de contador
Volver

MIOS_SRIO_DebounceSet
C_DECLARACION void MIOS_SRIO_DebounceSet(unsigned char debounce_value)
DESCRIPCION establece el valor de recarga antirrebote (debounce) del contador para los registros DIN SR que no hayan sido asignados a encoders de rotación para efecto antirrebote de botones de mala calidad.

El efecto antirrebote se hace de la siguiente manera: en cada movimiento de botón el valor de precarga se cargará en el registro antirrebote del contador. El contador decrecerá en cada ciclo de actualización SRIO. hasta que el contador sea cero, los cambios del botón serán grabados, pero no dispararán la función USER_DIN_NotifyToggle.

Ningún movimiento de botón (previsto) se perderá, pero la latencia será incrementada. Ejemplo: Si la frecuencia de actualización está establecida en 1 mS, y el valor antirrebote en 32, el primer movimiento de botón se reconocerá con latencia de 1 mS en el peor de los casos. Cada movimiento de botón adicional que tenga lugar en los siguientes 32 mS será reconocido con una latencia de 32 mS en el peor de los casos. Cuando haya pasado el tiempo de antirrebote, la peor latencia posible es de nuevo 1 mS.

Recuerda que en las versiones de MIOS anteriores a la v1.9c, el contador antirrebote también afectó a los rotary encoders y registros DOUT (no fueron soportados).
Con MIOS V1.9c  y superiores, este problema ya no esiste y la función antirrebote puede usarse en casi todas las aplicaciones.
Única excepción: si la aplicación debería grabar los cambios de pin de sensores digitales que se están activando muy rápido, el antirrebote debe ser omitido.
C_IN debounce counter reload value in <debounce_value>
C_OUT -
Volver

MIOS_SRIO_NumberGet
C_DECLARACION unsigned char MIOS_SRIO_NumberGet(void)
DESCRIPCION devuelve el número de registros SR disponibles
C_IN -
C_OUT número de SRs
Volver

MIOS_SRIO_NumberSet
C_DECLARACION void MIOS_SRIO_NumberSet(unsigned char number_sr)
DESCRIPCION Establece el número de registros SR disponibles, si el número es > 16, el valor se forzará a 16.
C_IN número de SRs in <number_sr>
C_OUT -
Volver

MIOS_SRIO_TS_SensitivityGet
C_DECLARACION unsigned char MIOS_SRIO_TS_SensitivityGet(void)
DESCRIPCION devuelve la sensibilidad del touchsensor (sensor táctil)
C_IN -
C_OUT valor de sensibilidad
Volver

MIOS_SRIO_TS_SensitivitySet
C_DECLARACION void MIOS_SRIO_TS_SensitivitySet(unsigned char sensitivity)
DESCRIPCION establece la sensibilidad del sensor táctil.
sensibilidad == 0x00 deshabilita el TS para que el RD.4 (J14 del módulo core) no sea manejado por MIOS  y esté libre para otros propósitos
C_IN valor de sensibilidad en <sensitivity>
C_OUT -
Volver

MIOS_SRIO_UpdateFrqGet
C_DECLARACION unsigned char MIOS_SRIO_UpdateFrqGet(void)
DESCRIPCION devuelve la frecuencia de actualización de los registros SR
C_IN -
C_OUT frecuencia de actualización (unit: milliseconds)
Volver

MIOS_SRIO_UpdateFrqSet
C_DECLARACION void MIOS_SRIO_UpdateFrqSet(unsigned char update_frq)
DESCRIPCION establece la frecuencia de actualización de los registros SR
C_IN frecuencia de actualización (unit: milliseconds) en <update_frq>
C_OUT -
Volver

MIOS_LCD_Clear
C_DECLARACION void MIOS_LCD_Clear(void)
DESCRIPCION limpia la pantalla LCD 
C_IN -
C_OUT -
C_EJEMPLO
  // limpiar  LCD e imprimir un caracter
MIOS_LCD_Clear();
MIOS_LCD_PrintChar('A');
Volver

MIOS_LCD_Cmd
C_DECLARACION void MIOS_LCD_Cmd(unsigned char cmd)
DESCRIPCION envía un comando a la pantalla LCD
C_IN el comando debe enviarse en <cmd>
C_OUT -
Volver

MIOS_LCD_CursorGet
C_DECLARACION unsigned char MIOS_LCD_CursorGet(void)
DESCRIPCION Devuelve la posición del cursor de texto
0x00-0x3f: primera línea
0x40-0x7f: segunda linea
0x80-0xbf: tercera línea o segunda LCD(si está disponible)
0xc0-0xff: cuarta línea o segunda LCD (si está disponible)
C_IN -
C_OUT posición de cursor de texto
Volver

MIOS_LCD_CursorSet
C_DECLARACION void MIOS_LCD_CursorSet(unsigned char pos)
DESCRIPCION ajusta el cursor de texto en la pantalla LCD
0x00-0x3f: primera línea
0x40-0x7f: segunda línea
0x80-0xbf: tercera línea o segunda LCD (ver MIOS_LCD_YAddressSet)
0xc0-0xff: cuarta línea o segunda LCD (ver MIOS_LCD_YAddressSet)
C_IN -
C_OUT -
C_EJEMPLO
  //imprime un caracter en la primera línea, primera columna
MIOS_LCD_CursorSet(0x00 + 0);
MIOS_LCD_PrintChar('A');

// imprime un caracter en la segunda línea, última columna (LCD de 2x16)
MIOS_LCD_CursorSet(0x40 + 15);
MIOS_LCD_PrintChar('B');

// imprime caracteres en la segunda LCD
// (o 3ª y 4ª línea, ver MIOS_LCD_YAddressSet)
MIOS_LCD_CursorSet(0x80 + 0);
MIOS_LCD_PrintChar('C');
MIOS_LCD_CursorSet(0xc0 + 15);
MIOS_LCD_PrintChar('D');

Volver

MIOS_LCD_Data
C_DECLARACION void MIOS_LCD_Data(unsigned char data)
DESCRIPCION envía un valor de dato a la pantalla LCD
C_IN los datos deben ser enviados en <data>
C_OUT -
Volver

MIOS_LCD_Init
C_DECLARACION void MIOS_LCD_Init(void)
DESCRIPCION inicializa la pantalla LCD. Esta función se llama automáticamente después del inicio.
C_IN -
C_OUT -
Volver

MIOS_LCD_MessageStart
C_DECLARACION void MIOS_LCD_MessageStart(unsigned char delay)
DESCRIPCION un repuesto para MIOS_LCD_PrintMessage que permite iniciar un mensaje sin llamar a "MIOS_LCD_PrintString"
C_IN retraso del mensaje en <delay>
C_OUT -
C_EJEMPLO
  // imprime mensaje en pantalla durante 2 segundos
MIOS_LCD_CursorSet(0x00 + 0);
MIOS_LCD_PrintCString("Pot value: ");
MIOS_LCD_PrintHex2(MIOS_AIN_Pin7bitGet(0));
MIOS_LCD_MessageStart(255);
Volver

MIOS_LCD_MessageStop
C_DECLARACION void MIOS_LCD_MessageStop(void)
DESCRIPCION esta función permite parar el mensaie inmediatamente para que se llame de nuevo MIOS_LCD_Tick 
C_IN -
C_OUT -
C_EJEMPLO
  //detiene el mensaje inmediatamente e invoca de nuevo DISPLAY_Tick
MIOS_LCD_MessageStop();
Volver

MIOS_LCD_PrintBCD1
C_DECLARACION void MIOS_LCD_PrintBCD1(unsigned char v)
DESCRIPCION imprime un 8-bit como BCD (valor decimal) -- solo un dígito
C_EJEMPLO
  valor de caracter sin firmar;

// imprimir en pantalla el dígito de ´valor´ de la izquierda
MIOS_LCD_PrintBCD1(value);
Volver

MIOS_LCD_PrintBCD2
C_DECLARACION void MIOS_LCD_PrintBCD2(unsigned char v)
DESCRIPCION imprime un 8-bit como BCD (valor decimal) -- solo dos dígitos
C_IN Valor en <v>
C_OUT dos dígitos en LCD
C_EJEMPLO
 valor char sin firmar;

// imprimir en pantalla los dos dígitos de 'valor' de la izquierda
MIOS_LCD_PrintBCD2(value);
Volver

MIOS_LCD_PrintBCD3
C_DECLARACION void MIOS_LCD_PrintBCD3(unsigned char v)
DESCRIPCION imprime un 8-bit como BCD (valor decimal) -- los tres dígitos 
C_IN Valor en <v>
C_OUT tres dígitos en LCD
C_EJEMPLO
  valor char sin firmar;

// imprime en pantalla los tres dígitos de 'valor'
MIOS_LCD_PrintBCD3(value);
Volver

MIOS_LCD_PrintBCD4
C_DECLARACION void MIOS_LCD_PrintBCD4(unsigned int v)
DESCRIPCION imprime un 16-bit como BCD (valor decimal) -- cuatro dígitos
C_IN valor 16bit en <v>
C_EJEMPLO
  valor int sin firmar;

// imprime en pantalla los 4 dígitos de valor de la izquierda
MIOS_LCD_PrintBCD4(value);
Volver

MIOS_LCD_PrintBCD5
C_DECLARACION void MIOS_LCD_PrintBCD5(unsigned int v)
DESCRIPCION imprime un 16-bit como BCD (valor decimal) -- cinco dígitos
C_IN valor 16bit en <v>
C_EJEMPLO
  valor int sin firmar;

// imprime en pantalla todos los 5 dígitos de 'valor'
MIOS_LCD_PrintBCD5(value);
Volver

MIOS_LCD_PrintCString
C_DECLARACION void MIOS_LCD_PrintCString(code char *str)
DESCRIPCION imprime una secuencia acabada en 0--- solo provista por el MIOS C Wrapper!
C_IN Indicaador para secuencias acabadas en 0 en <str>
C_EJEMPLO
  // imprime secuencia en LCD- primera línea, primera columna
MIOS_LCD_CursorSet(0x00 + 0);
MIOS_LCD_PrintCString("Hello World!");
Volver

MIOS_LCD_PrintChar
C_DECLARACION void MIOS_LCD_PrintChar(unsigned char c)
DESCRIPCION imprime un solo caracter ASCII
C_IN el caracter debe imprimirse en  <c>
C_OUT el caracter en LCD
C_EJEMPLO
  ;;imprime en pantalla cuatro caracteres
MIOS_LCD_PrintChar('M');
MIOS_LCD_PrintChar('I');
MIOS_LCD_PrintChar('O');
MIOS_LCD_PrintChar('S');
Volver

MIOS_LCD_PrintHex1
C_DECLARACION void MIOS_LCD_PrintHex1(unsigned char h)
DESCRIPCION imprime un valor hex de 4-bit
C_IN Valor en <h>
C_OUT un dígito en LCD
C_EJEMPLO
  valor char sin firmar;

// imprime en pantalla la mitad de un byte de 'valor'
MIOS_LCD_PrintHex1(value);
Volver

MIOS_LCD_PrintHex2
C_DECLARACION void MIOS_LCD_PrintHex2(unsigned char h)
DESCRIPCION imprime un valor hex de 8-bit
C_IN Valor en <h>
C_EJEMPLO
  valor char sin firmar;

// imprimir en pantalla el contenido de 'valor'
MIOS_LCD_PrintHex2(value);
Volver

MIOS_LCD_PrintMessage
C_DECLARACION void MIOS_LCD_PrintMessage(code char *str)
DESCRIPCION imprime un mensaje durante 2 segundos. El flujo normal del programa no será parado en este tiempo, sólo que la rutina "DISPLAY_Tick" no será llamada. Tras el mensaje, se invocará  "DISPLAY_Init" antes del siguiente "DISPLAY_Tick"
C_IN Indicador de secuencia en <str>
La primera palabra de la secuencia debe contener la longitud y posición de LCD
C_OUT algunos caracteres en LCD durante 2 segundos
C_EXAMPLE
  // considera el uso de  MIOS_LCD_PrintMessageStart
// ver también el ejemplo appr.
Volver

MIOS_LCD_PrintPreconfString
C_DECLARACION void MIOS_LCD_PrintPreconfString(unsigned char len, code char *str)
DESCRIPCION imprime una secuencia pre-configurada
C_IN Indicador de Secuencia en  <str>
Longitud de frecuencia en <len>
C_EJEMPLO
  // definido algún sitio  *fuera* de la función!
const unsigned char text_welcome_0[] = { "Hello World!" };

// dentro de la función: imprimir secuencia
MIOS_LCD_CursorSet(0x00 + 0);
MIOS_LCD_PrintPreconfString(12, text_welcome_0);

// por favor, vea también la función MIOS_LCD_PrintCString!
Volver

MIOS_LCD_PrintString
C_DECLARACION void MIOS_LCD_PrintString(code char *str)
DESCRIPCION imprime una secuencia
C_IN Indicador de Secuencia en <str>
La primera palabra de la secuencia debe contener la longitud y posición del LCD.
C_EJEMPLO
  //¡ definido algún sitio  *fuera* de la función!
const unsigned char text_welcome_0[] = { 12, 0x00, "Hello World!" };

// dentro de la función: imprimir secuencia
 MIOS_LCD_PrintString(text_welcome_0);

// por favor, vea también la función MIOS_LCD_PrintCString!
Volver

MIOS_LCD_TypeAutoSet
C_DECLARACION unsigned char MIOS_LCD_TypeAutoSet(void)
DESCRIPCION deriva el tipo de LCDdel cabecero de ID del PIC
C_IN -
C_OUT tipo en WREG,
parámetros adicionales de LCD en MIOS_PARAMETER1 y MIOS_PARAMETER2
C_EJEMPLO
  // establece el tipo de LCD al especificado en el PIC ID header
MIOS_LCD_TypeAutoSet();

Volver

MIOS_LCD_TypeGet
C_DECLARACION unsigned char MIOS_LCD_TypeGet(void)
DESCRIPCION devuelve el tipo de LCD. Se proporcionan los siguientes LCDs:
0x00: MIOS_LCD_TYPE_CLCD (character dotmatrix LCD)
0x01: MIOS_LCD_TYPE_GLCD0 ( LCD gráfica, KS0108 o HD61202 compatible)
0x06: MIOS_LCD_TYPE_MLCD (MIDI display, ver implementación SysEx)
0x07: MIOS_LCD_TYPE_CUSTOM_LCD (controlador de LCD personalizado)
C_IN -
C_OUT tipo de LCD
C_EJEMPLO
  // ramificación dependiendo del tipo de LCD
if( MIOS_LCD_TypeGet() == MIOS_LCD_TYPE_CLCD ) {
// hacer algo especial si está conectado CLCD
}


// !!! Mejor para ramificiones dependiendo del tipo de pantalla CLCD/GLCD !!!
// !!! (también funciona con controlador LCD personalizado !!!
if( !MIOS_BOX_CFG0.USE_GLCD ) {
// hacer algo especial si está conectado CLCD
}

Volver

MIOS_LCD_TypeSet
C_DECLARACION void MIOS_LCD_TypeSet(unsigned char type, unsigned char par1, unsigned char par2)
DESCRIPCION Ajusta el tipo de LCD. Se proporcionan los siguientes LCDs:
0x00: MIOS_LCD_TYPE_CLCD (character dotmatrix LCD)
0x01: MIOS_LCD_TYPE_GLCD0 (LCD gráfica, KS0108 o HD61202 compatible)
0x06: MIOS_LCD_TYPE_MLCD (MIDI display, ver implementación SysEx)
0x07: MIOS_LCD_TYPE_CUSTOM_LCD (controlador de LCD propio)
Recuerda que la función MIOS_LCD_TypeAutoSet te permite derivar el tipo de LCD desde el encabezado de ID PIC!! Usa esta función si quieres forzar un tipo especial de LCD sin cambiar el encabezado ID de tu PIC o si quieres configurar opciones adicionales de LCD que sean distintas a los valores por defecto.
C_IN tipo de LCD en <type>
LCD Opción #1 <par1>
LCD Opción #2 <par2>
C_EJEMPLO
  Las opciones LCD disponibles difieren de los tipos LCD usados, aquí va una ista
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Tipo 0, CLCD:
con <par1> y <par2> se especifican los pins de activación (E)
 de las pantallas de caracteres. Por defecto, el input E de la primera
CLCD debe ir conectada al pin D.7, el input E de la segunda (si la hay) al pin C.4
Son necesarias las siguientes líneas de códico para conseguir esto:

// usa un CLCD, E input del primerCLCD en D.7, E del segundo CLCD @C.4
MIOS_LCD_TypeSet(MIOS_LCD_TYPE_CLCD, 0x37, 0x24);

Nota: el primer dígito del valor de parámetro establece el número de puerto
(A=0, B=1, C=2, D=3, E=4)
el segundo dígito establece el número de pin (0-7)
bit #7 establece la interfaz (0=8bit, 0=7bit)

Ejemplo para CLCD on interfaz de 4bit :
;; usa una CLCD, E input de la primera CLCD en D.7, E de la segunda CLCD @C.4
;; usando la interfaz de 4-bit :
;; -> conecta MBHP_CORE:J15:D7-D4 del módulo core a D7-D4 de la LCD
;; -> left MBHP_CORE:J15:D3-D0 of the core module open!
;; -> tie D3-D0 del LCD abajo
MIOS_LCD_TypeSet(MIOS_LCD_TYPE_CLCD, 0x80 | 0x37, 0x80 | 0x24);

Tip: cambiando estos parámetros dinámicamente también podrás
manejar más de 2 lCDs con un solo módulo core. El número
de CLCDs que pueden manejarse sólo está limitado por el
número de pines libres!!
No olvides cambiar los pines apropiados al output antes de usarlos,
y llamar a MIOS_LCD_Init por cada par de pantalla en tu USER_Init

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

Tipo 1, KS0108 o basadas en HD61202
Con <par1> se tiene que especificar si las líneas de selección del chip están invertidas

// usa una LCD gráfica compatible KS0108 o HD61202 con
// selecciones de chip no invertidas
MIOS_LCD_TypeSet(MIOS_LCD_TYPE_GLCD0, 0x00, 0x00); // (par2 unusued)

O:
// usa una LCD gráfica compatible KS0108 o HD61202 con
// selecciones de chip invertidas
MIOS_LCD_TypeSet(MIOS_LCD_TYPE_GLCD0, 0x01, 0x00); // (par2 unusued)

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

Tipo 2, basadas en T6963C
Ya no son soportadas, en su lugar usa el controlador personalizado
que está disponible en la sección de descargas MIOS

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

Tipo 6, MIDI display
ver implementación MIOS SysEx disponible en la sección de descargas de MIOS

MIOS_PARAMETER1 define la ID de dispositivo del target core:

;; envía mensajes MIDI al núcleo con la ID de dispositivo 0x42
MIOS_LCD_TypeSet(MIOS_LCD_TYPE_MLCD, 0x42, 0x00); // (par2 unusued)

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

Tipo 7, controlador LCD personalizado
  Las opciones son redirigidas al controlador LCD personal,
 siguiendo atajos que han sido preparados para una óptima
integración con MIOS:
USER_LCD_Init
USER_LCD_Clear
USER_LCD_CursorSet
USER_LCD_PrintChar

Volver

MIOS_LCD_YAddressGet
C_DECLARACION unsigned char MIOS_LCD_YAddressGet(void)
DESCRIPCION devuelve los offsets Y 
C_IN -
C_OUT Linea Y0 dirección en MIOS_PARAMETER1 (variable global definida en cmios.h),
Linea Y1 dirección en MIOS_PARAMETER2 (variable global definida en cmios.h),
Linea Y2 dirección en MIOS_PARAMETER3 (variable global definida en cmios.h),
Linea Y3 dirección devuelta directamente
Volver

MIOS_LCD_YAddressSet
C_DECLARACION void MIOS_LCD_YAddressSet(unsigned char line0, unsigned char line1, unsigned char line2, unsigned char line3);
DESCRIPCION mapea la posición Y del cursor hacia la dirección apropiada de las pantallas de caracteres y gráficas.
Las posiciones configuradas por defecto para pantallas de 2x16, 2x20, 4x20 y 2x40 :
Line0 -> MIOS cursor offset: 0x00 -> dirección cursor 0x00
Line1 -> MIOS cursor offset: 0x40 -> dirección cursor 0x40
Line2 -> MIOS cursor offset: 0x80 -> dirección cursor 0x14 (4x20 only)
Line3 -> MIOS cursor offset: 0xc0 -> dirección cursor 0x54 (4x20 only)
Para pantallas de 4x16 , hay que cambiar la configuración.:
Line0 -> MIOS cursor offset: 0x00 -> dirección cursor 0x00
Line1 -> MIOS cursor offset: 0x40 -> dirección cursor 0x40
Line2 -> MIOS cursor offset: 0x80 -> dirección cursor 0x10 (solo 4x16)
Line3 -> MIOS cursor offset: 0xc0 -> dirección cursor 0x50 (solo 4x16)
Para pantallas de 2 caracteres conectadas a un core usa:
Line0 -> MIOS cursor offset: 0x00 -> dirección cursor 0x00
Line1 -> MIOS cursor offset: 0x40 -> dirección cursor 0x40
Line2 -> MIOS cursor offset: 0x80 -> dirección cursor 0x80
Line3 -> MIOS cursor offset: 0xc0 -> dirección cursor 0xc0
(la primera LCD está direccionada por 0x00-0x7f, la segunda LCD está direccionada por 0x80-0xff)

Esta función permite centrar la pantalla si quieres usar aplicaciones escritas para pantallas de 2x16  en una pantalla más grande. Ejemplo para una pantalla de 2x20:
Line0 -> MIOS cursor offset: 0x00 -> dirección cursor 0x04
Line1 -> MIOS cursor offset: 0x40 -> dirección cursor 0x44
Line2 -> no importa
Line3 -> no importa
C_IN Linea Y0 dirección en <line0>
Linea Y1 dirección en <line1>
Linea Y2 dirección en  <line2>
Linea Y3 dirección en <line3>
C_EJEMPLO
  // configura offsets para una LCD de 4x16 LCD:
MIOS_LCD_YAddressSet(0x00, 0x40, 0x10, 0x50);

// configura MIOS para LCDs de 2 caracteres:
// (ver también http://www.ucapps.de/mbhp_lcd.html )
MIOS_LCD_YAddressSet(0x00, 0x40, 0x80, 0xc0);

Volver

MIOS_CLCD_SpecialCharInit
C_DECLARACION void MIOS_CLCD_SpecialCharInit(unsigned char num, code char *c_table)
DESCRIPCION inicializa uno de 8 caracteres especiales provistos por LCD  HD44780 de caracteres compatible 
C_IN número de caracter especial  (0-7) en <num>
indicador al char pattern especial en<c_table> (debe consistir en 8 entradas para cada línea de caracteres)
C_OUT -
C_EJEMPLO
    ver http://www.ucapps.de/mios_c_lcd_schars.html
Volver

MIOS_CLCD_SpecialCharsInit
C_DECLARACION void MIOS_CLCD_SpecialCharsInit(const char *c_table)
DESCRIPCION inicializa los caracteres especiales provistos por LCD de caracteres compatible  HD44780
Ver también: MIOS_CLCD_SpecialCharInit
C_IN indicador a char patterns especiales en <c_table> (debe consistir en 8*8 entradas para cada caracter y línea)
C_OUT -
C_EJEMPLO
    ver http://www.ucapps.de/mios_c_lcd_schars.html
Volver

MIOS_GLCD_FontInit
C_DECLARACION void MIOS_GLCD_FontInit(code char *font)
DESCRIPCION inicializa una fuente ( icono animado) o mapa de bits. esta función sólo funciona en LCDs gráficas.!
C_IN indicador al cabecero de la fuente en <font>
C_EJEMPLO
  // establecer fuente por defecto:
MIOS_GLCD_FontInit(MIOS_GLCD_FONT)
// poner el cursor a 0
MIOS_LCD_CursorSet(0x00);
// imprimir caracter 'A'
MIOS_LCD_PrintChar('A');
Volver

MIOS_GLCD_GCursorGet
C_DECLARACION unsigned char MIOS_GLCD_GCursorGet(void)
DESCRIPCION devuelve la posición del cursor gráfico 
Esta función solo funciona con LCDs gráficas
C_IN -
C_OUT posición X directamente devuelta
posición Yen MIOS_PARAMETER1 (variable global definida en cmios.h)
Volver

MIOS_GLCD_GCursorSet
C_DECLARACION void MIOS_GLCD_GCursorSet(unsigned char x, unsigned char y)
DESCRIPCION establece el cursor gráfico en una pantalla LCD
Esta función solo funciona con LCDs gráficas
C_IN posición X en <x> (0-239)
posición Y en <y> (0-7)
C_EJEMPLO
  // ajustar el cursor gráfico en160/7:
MIOS_GLCD_GCursorSet(160, 7);
Volver

MIOS_EEPROM_Read
C_DECLARACION unsigned char MIOS_EEPROM_Read(unsigned char addr)
DESCRIPCION lee un byte de la EEPROM.
C_IN dirección en: <addr> (0x00-0xff) y EEADRH (0-3, PIC18F4620 unicamente)
C_OUT devuelve el contenido EEPROM
C_EJEMPLO
  // carga un byte de la dirección 0x80
value = MIOS_EEPROM_Read(0x80);

Volver

MIOS_EEPROM_ReadPage
C_DECLARACION unsigned char MIOS_EEPROM_ReadPage(unsigned char addr, unsigned char *buffer)
DESCRIPCION lee una página de 64 bytesde la EEPROM
La EEPROM interna del PIC18F452 no provee una lectura de página por sí misma, en su lugar esta función llama 64 veces a MIOS_EEPROM_Read.
C_IN pointer to read buffer (64 bytes) in <buffer>
address in <addr> (0x00-0xc0) and EEADRH (0-3, PIC18F4620 only)
C_OUT contenido de EEPROM en lectura<buffer>
C_EJEMPLO
  unsigned char buffer[64];

// leer una página de 64 bytes de la EEPROM en la dirección 0x40
MIOS_EEPROM_ReadPage(0x40, buffer);

Volver

MIOS_EEPROM_Write
C_DECLARACION unsigned char MIOS_EEPROM_Write(unsigned char addr, unsigned char value)
DESCRIPCION Escribe un byte en la EEPROM.
El acceso de escritura se omitirá so el contenido es igual al del byte que debe ser escrito.
Returned Error Status:
0x00: no hay error
0x01: byte desparejado (falló la escritura)
C_IN byte en <value>, dirección en <addr> (0x00-0xff), high byte en EEADRH (0-3, PIC18F4620 únicamente)
C_OUT Estado de error 
C_EJEMPLO
  unsigned char error = 0;

// writeescribe 0x47 0x11 en la EEPROM en dirección 0x80/0x81
error |= MIOS_EEPROM_Write(0x80, 0x47);
error |= MIOS_EEPROM_Write(0x81, 0x11);

if( error ) {
// aquí puedes hacer algún manejo de errores }



// nota: es muy improbable que ocurra un error al escribir
// en la EEPROM interna, aún así, puedes usar el atajo siguiente:

// escribe 0x47 0x11 en la EEPROM en dirección0x80/0x81
MIOS_EEPROM_Write(0x80, 0x47);
MIOS_EEPROM_Write(0x81, 0x11);

Volver

MIOS_EEPROM_WritePage
C_DECLARACION unsigned char MIOS_EEPROM_WritePage(unsigned char addr, unsigned char *buffer)
DESCRIPCION escribe una página de 64 bytes en la EEPROM.
La EEPROM interna del PIC18F452 no provee una página escrita en sí misma, sino que esta función llama a MIOS_EEPROM_Write 64 veces.
Devuelto Estado de Error:
0x00: no hay error
0x01: byte desparejado (una o más escrituras han fallado)
C_IN indicador para escribir el buffer (64 bytes) en <buffer>
dirección en <addr> (0x00-0xc0) y EEADRH (0-3, PIC18F4620 únicamente)
C_OUT Estado de error
C_EJEMPLO
  unsigned char buffer[64];
unsigned char i;

// llena el buffer con algunos bytes
for(i=0; i<64; ++i)
buffer[i] = i;

// escribe una página de 64 bytes en la memoria EEPROM en dirección 0x80
MIOS_EEPROM_WritePage(0x80, buffer);

Volver

MIOS_FLASH_Read
C_DECLARACION unsigned char MIOS_FLASH_Read(code char *addr, char *buffer)
DESCRIPCION copia 64 bytes de la memoria FLASH al buffer
C_IN indicador para lectura de buffer (64 bytes) en <buffer>
dirección flash en <addr> (0x0000-0x7fc0, debe estar alineado con la página de 64 byte)
C_OUT volcado de memoria en  <buffer>
C_EJEMPLO
  unsigned char buffer[64];

// leer una página de 64 bytes desde la memoria flash en dirección 0x7000
MIOS_FLASH_Read(0x7000, buffer);

Volver

MIOS_FLASH_Write
C_DECLARACION unsigned char MIOS_FLASH_Write(code char *addr, char *buffer)
DESCRIPCION escribe 64 bytes en la memoria FLASH 
El acceso a la escritura será omitido si el contenido es igual a los bytes del buffer. Se previene  la escritura en espacio del programa MIOS.
PIC18F452: 0x0000-0x2fff no escribible PIC18F4620: 0x0000-0x2fff no escribible
Devuelto Estado de Error:
0x00: no hay error
0x01: byte desparejados (escritura fallida)
0x02: error de acceso (memoria protegida)
C_IN indicador para escritura de buffer(64 bytes) en <buffer>
dirección flash en <addr> (debe estar alineado con página de 64 byte)
C_OUT Devuelve estado de error
C_EJEMPLO
  unsigned char buffer[64];
unsigned char i;

// llenar buffer con algunos bytes
for(i=0; i<64; ++i)
buffer[i] = i;

// escribir una página de 64 bytes en la memoria flash en dirección 0x7000
if( MIOS_FLASH_Write(0x7000, buffer) ) {
// error handler
}

Volver

MIOS_BANKSTICK_CtrlGet
C_DECLARACION unsigned char MIOS_BANKSTICK_CtrlGet(void)
DESCRIPCION Devuelve el estado de control del BankStick
C_IN -
C_OUT bit [2..0]: A2-A0
bit [7]: Verificación deshabilitada
Volver

MIOS_BANKSTICK_CtrlSet
C_DECLARACION void MIOS_BANKSTICK_CtrlSet(unsigned char ctrl)
DESCRIPCION establece el registro de control del BankStick 
bit 2-0: selecciona el BankStick (1de 8, dirección definida con pin A0-A2 de la EEPROM)
bit 7: si está seleccionado, la verificación durante la escritura será deshabilitada
C_IN contenido de registro de control en <ctrl>
C_EJEMPLO
  unsigned char error = 0;

// escribe 0x47 0x11 en dirección 0x3000-0x3001 del BankStick número 7
MIOS_BANKSTICK_CtrlSet(0x07); // select 8th BankStick
error |= MIOS_BANKSTICK_Write(0x3000, 0x47);
error |= MIOS_BANKSTICK_Write(0x3001, 0x11);

Volver

MIOS_BANKSTICK_Read
C_DECLARACION unsigned char MIOS_BANKSTICK_Read(unsigned int addr)
DESCRIPCION lee un byte del BankStick.
C_IN dirección en <addr> (0x0000-0xffff)
C_OUT contenido de BankStick
MIOS_BOX_STAT.BS_AVAILABLE cleared if read failed
C_EJEMPLO
  // carga un byte desde la dirección address 0x7fff (la última en un BankStick de 32 k)
value = MIOS_BANKSTICK_Read(0x7fff);

if( !MIOS_BOX_STAT.BS_AVAILABLE ) {
// Aquí puedes hacer alguna corrección de errores
}

Volver

MIOS_BANKSTICK_ReadPage
C_DECLARACION unsigned char MIOS_BANKSTICK_ReadPage(unsigned int addr, unsigned char *buffer)
DESCRIPCION lee una página de 64 bytes del BankStick.
C_IN indicador para buffer de lectura(64 bytes) en <buffer><BR>
dirección en <addr> (0x0000-0xffc0)
C_OUT Contenido de BankStick en buffer de lectura
MIOS_BOX_STAT.BS_AVAILABLE también es 0 si la lectura falló
C_EJEMPLO
  unsigned char buffer[64];

// leer una página de 64 bytes dela memoria del BankStick en dirección 0x1240
MIOS_BANKSTICK_ReadPage(0x1240, buffer);

if( !MIOS_BOX_STAT.BS_AVAILABLE ) {
// Aqui puedes hacer alguna corrección de errores
}

Volver

MIOS_BANKSTICK_Write
C_DECLARACION unsigned char MIOS_BANKSTICK_Write(unsigned int addr, unsigned char value)
DESCRIPCION escribe un byte en el BankStick.
Si el modo de verificación ha sido habilitado con MIOS_BANKSTICK_CtrlSet, el acceso a la escritura será omitido si el contenido es igual al byte que debe ser escrito.
Devuelto Estado de Error:
0x00: no hay error
0x01: byte desparejados (la escritura falló) -- Ajusta solo con verificación habilitada
0x02: BankStick no disponible
C_IN byte en <value>, dirección en <addr> (0x0000-0xffff)
C_OUT estado de error
MIOS_BOX_STAT.BS_AVAILABLE limpiado si la escritura falló.
C_EJEMPLO
  unsigned char error = 0;

//escribe 0x47 0x11 en dirección 0x3000-0x3001 del BankStick
error |= MIOS_BANKSTICK_Write(0x3000, 0x47);
error |= MIOS_BANKSTICK_Write(0x3001, 0x11);

if( error ) {
// aquí puedes hacer alguna corrección de errores
}

Volver

MIOS_BANKSTICK_WritePage
C_DECLARACION unsigned char MIOS_BANKSTICK_WritePage(unsigned int addr, unsigned char *buffer)
DESCRIPCION escribe una pá´gina de 64 bytes en el BankStick. Si el modo de verificación ha sido activado con with MIOS_BANKSTICK_CtrlSet, el acceso a escritura se omitirá si el contenido es igual al del byte que debe escribirse
Estado de error devuelto:
0x00: no hay error 0x01: byte desparejados (escritura fallida) -- seleccionar solo si la verificación está activada  0x02: BankStick no disponible
C_IN indicador para buffer de escritura (64 bytes) en <buffer>
dirección en <addr> (0x0000-0xffc0)
C_OUT estado de error en WREG
MIOS_BOX_STAT.BS_AVAILABLE es limpiado si la escritura falló
C_EJEMPLO
  unsigned char buffer[64];
unsigned char i;

// llena el buffer con algunos bytes
for(i=0; i<64; ++i)
buffer[i] = i;

// escribe una página de 64 bytes enla memoria del BankStick en dirección 0x3000
if( MIOS_BANKSTICK_WritePage(0x3000, buffer) ) {
// aquí puedes hacer alguna corrección de errores
}

Volver

MIOS_IIC_AckSend
C_DECLARACION void MIOS_IIC_AckSend
DESCRIPCION envía un ACK (Acuse de Recibo)al/los esclavo(s)
C_IN -
C_OUT -
C_EJEMPLO
        ver MIOS_IIC_ByteSend y MIOS_IIC_ByteReceive
Volver

MIOS_IIC_ByteReceive
C_DECLARACION unsigned char MIOS_IIC_ByteReceive(void)
DESCRIPCION recibe un byte de un esclavo IIC.
C_IN -
C_OUT byte recibido en WREG
C_EJEMPLO
  // recibir 3 bytes del esclavo IIC conID 0x12

MIOS_IIC_Start(); // start IIC
MIOS_IIC_ByteSend(0x12 | 1);
// envía direcciónd e dispositivo -
// establecer bit #0 para notificar una lectura!!!
// no continuar si el dispositivo IIC no está disponible
if( MIOS_BOX_STAT.BS_AVAILABLE ) {
b0 = MIOS_IIC_ByteReceive; // leer primer byte
MIOS_IIC_AckSend(); // manda ACK
b1 = MIOS_IIC_ByteReceive; // leer segundo byte
MIOS_IIC_AckSend(); // manda ACK
b2 = MIOS_IIC_ByteReceive; // leer tercer byte
}
MIOS_IIC_NakSend(); // manda NAK!!!
MIOS_IIC_Stop(); // parar IIC

Para más detalles sobre el protocolo IIC (oficialmente llamado I2C), ver
http://www.semiconductors.philips.com/buses/i2c/
Volver

MIOS_IIC_ByteSend
C_DECLARACION void MIOS_IIC_ByteSend(unsigned char b)
DESCRIPCION envía un byte a través del bus IIC y comprueba el acuse de recibo/comprobación.
Si el esclavo no envió un acuse de recibo, el flag (MIOS_BOX_STAT_)BS_AVAILABLE en MIOS_BOX_STAT será limpiado.
C_IN byte que debe ser enviado en<b>
C_OUT devuelve 0x00 si  ha recibido NAK (NO acuse de recibo), si no != 0x00
debido a razones de compatibilidad, mios_box_stat.BS_AVAILABLE es ajustado en cuanto se recibe ACK 
C_EJEMPLO
  // envía 0x34, 0x56, 0x78 al esclavo IIC con ID 0x12

MIOS_IIC_Start(); // start IIC
MIOS_IIC_ByteSend(0x12); // envía la dirección del dispositivo
// bit #0 limpiado para notificar una escritura!!!
MIOS_IIC_ByteSend(0x34); // enviar primer byte de datos
MIOS_IIC_ByteSend(0x56); // enviar segundo byte de datos
MIOS_IIC_ByteSend(0x78); // enviar tercer byte de datos
MIOS_IIC_Stop(); // parar IIC

Para más detalles sobre el protocolo IIC (oficialmente llamado I2C), ver
http://www.semiconductors.philips.com/buses/i2c/

Puedes encontrar un ejemplo realzado con reintento de NAK en la página MBHP_IIC_MIDI
Volver

MIOS_IIC_CtrlGet
C_DECLARACION unsigned char MIOS_IIC_CtrlGet(void)
DESCRIPCION devuelve el estado de control IIC
C_IN -
C_OUT bit 0 si devuelve valor: estrechamiento de reloj activado
Volver

MIOS_IIC_CtrlSet
C_DECLARACION void MIOS_IIC_CtrlSet(unsigned char ctrl)
DESCRIPCION habilita el "estrechamiento de reloj" como se especifica en las caracteristicas IIC  http://www.semiconductors.philips.com/buses/i2c/  que es necesario para algunos esclavos que no pueden servir el bus inmediatamente en una petición.
C_IN <ctrl> = 0x00: estrechamiento de reloj desactivado
<ctrl> = 0x01: estrechamiento de reloj activado
NOTE Si está activado, tienes que añadir una resistencia pull-up de 1k a la línea SCL (Pin #22 del PIC)
C_EJEMPLO
  // habilitar estrechamiento de reloj
MIOS_IIC_CtrlSet(0x01);
Volver

MIOS_IIC_NakSend
C_DECLARACION void MIOS_IIC_NakSend(void)
DESCRIPCION envía un NAK (no acuse de recibo) al esclavo (s)
C_IN -
C_OUT -
C_EJEMPLO
        ver MIOS_IIC_ByteSend y MIOS_IIC_ByteReceive
Volver

MIOS_IIC_Start
C_DECLARACION void MIOS_IIC_Start(void)
DESCRIPCION Envía la condición de arranque de IIC (SCL=1, SDA 1->0)
C_IN -
C_OUT -
C_EJEMPLO
        ver  MIOS_IIC_ByteSend y MIOS_IIC_ByteReceive
Volver

MIOS_IIC_Stop
C_DECLARACION void MIOS_IIC_Stop(void)
DESCRIPCION envía la condición de parada de IIC(SCL=0->1, SDA 0->1)
C_IN -
C_OUT -
C_EJEMPLO
        ver MIOS_IIC_ByteSend y MIOS_IIC_ByteReceive
Volverp

MIOS_TIMER_Init
C_DECLARACION void MIOS_TIMER_Init(unsigned char mode, unsigned int period)
DESCRIPCION inicializa el timer que llama periódicamente a USER_Timer y lo inicia. La resolución del timer es de100nS con Prescaler 1:1, 200nS con 1:2, 400nS con 1:4, 800nS con 1:8. El período (número de relojes) se especifica como un valor de 16 bits
C_IN valor prescaler en <mode>:
0x00: 1:1
0x01: 1:2
0x02: 1:4
0x03: 1:8
número de tics (0..65535) en <period>
C_OUT -
C_EJEMPLO
  // queremos configurar el prescaler con una frecuencia de  500 Hz = 2 mS
// debe usarse prescaler 1:1
// calcula el número de relojes requeridos para este período:
// relojes = periodo / 100 nS = 2 mS / 100 nS = 20000
// por consiguiente:
MIOS_TIMER_Init(0x00, 20000);

// Ahora la función Timer() se llama cada 2 mS!
Volver

MIOS_TIMER_ReInit
C_DECLARACION void MIOS_TIMER_ReInit(unsigned char mode, unsigned int period)
DESCRIPCION igual que MIOS_TIMER_Init, pero el timer no se reseteará para permitir un reinicio suave
C_IN valor prescaler en <mode>:
0x00: 1:1
0x01: 1:2
0x02: 1:4
0x03: 1:8
número de tics (0..65535) en <period>
C_OUT -
Volver

MIOS_TIMER_Start
C_DECLARACION void MIOS_TIMER_Start(void)
DESCRIPCION (re) inicia el timer si ha sido parado anteriormente
Volver

MIOS_TIMER_Stop
C_DECLARACION void MIOS_TIMER_Stop(void)
DESCRIPCION para el timer
Volver

MIOS_HLP_16bitAddSaturate
C_DECLARACION unsigned char MIOS_HLP_16bitAddSaturate(unsigned char add_value, unsigned int *ptr, unsigned int max_value)
DESCRIPCION añade un valor firmado de 8-bit a un valor de 16 bit y satura
Esto significa: si el valor resultante es mayor que el valor máximo dado, el resultado será saturado hasta el valor máximo. Si el valor resultante es menor que 0, el resultado se saturará a 0.
Importante: el valor de 16-bit debe ser alineado con una dirección uniforme de palabra (0x10, 0x12, 0x14, ...). La primera dirección contiene el low-byte y la segunda dirección contiene el high-byte
C_IN valor de 8-bit firmado en <add_value>
indicador de variable que debe ser modificado en <ptr>
valor máximo en <max_value>
C_OUT escribe un valor absoluto nuevo en *ptr
devuelve 1 si el valor ha sido cambiado, 0 si es igual al anterior valor
C_EJEMPLO
  // resta -5 del valor de 16-bit (unsigned int)
MIOS_HLP_16bitAddSaturate(-5, &value, 0x0fff);

Volver

MIOS_HLP_AddressFromTable
C_DECLARACION no disponible en C
DESCRIPCION esta función de ayuda lee un indicador de una tabla y lo mueve a TBLPTR. De esta manera, las listas enlazadas se pueden realizar.
NOTA TBLPTRU no leído ni cambiado . La tabla debe ser localizada en un segmento de 64k !
Volver

MIOS_HLP_Dec2BCD
C_DECLARACION void MIOS_HLP_Dec2BCD(unsigned int value)
DESCRIPCION convierte un valor decimal de16-bit en BCD
C_IN valor16bit en <value>
C_OUT dígitos de más a la derecha (n1*10^1 and n0*10^0) en MIOS_PARAMETER1
dígitos centrales (n3*10^3 and n2*10^2) en MIOS_PARAMETER2
dígito de la izquierda (n5*10^4) en MIOS_PARAMETER3
C_EJEMPLO
  // adquirir el código BCD de 12345
MIOS_HLP_Dec2BCD(12345);
// ahora:
// MIOS_PARAMETER3 contiene el valor hex 0x01
// MIOS_PARAMETER2 contiene el valor hex 0x23
// MIOS_PARAMETER1 contiene el valor hex 0x45
Volver

MIOS_HLP_GetBitANDMask
C_DECLARACION unsigned char MIOS_HLP_GetBitANDMask(unsigned char value)
DESCRIPCION esta función de ayuda es útil para manipulaciones de bits
C_IN ver mapa debajo
C_OUT 0x00 -> 0b11111110
0x01 -> 0b11111101
0x02 -> 0b11111011
0x03 -> 0b11110111
0x04 -> 0b11101111
0x05 -> 0b11011111
0x06 -> 0b10111111
0x07 -> 0b01111111
Volver

MIOS_HLP_GetBitORMask
C_DECLARACION unsigned char MIOS_HLP_GetBitORMask(unsigned char value);
DESCRIPCION esta función de ayuda es útil para manipulaciones de bits
C_IN ver mapa debajo
C_OUT 0x00 -> 0b00000001
0x01 -> 0b00000010
0x02 -> 0b00000100
0x03 -> 0b00001000
0x04 -> 0b00010000
0x05 -> 0b00100000
0x06 -> 0b01000000
0x07 -> 0b10000000
Volver

MIOS_HLP_GetIndex_2bytes
C_DECLARACION no disponible en C
DESCRIPCION esta función de ayuda puede utilizarse para jumptables(tablas de salto) que contengan instrucciones de 2 bytes (-> rgoto). Recuerda que las macro JUMPTABLE_2BYTESpermiten usar esta función de forma segura sin el peligro de que el código de detrás de la tabla sea ejecutado si el número índice en WREG es mayor que el número de entradas
Volver

MIOS_HLP_GetIndex_4bytes
C_DECLARACION no disponible en C
DESCRIPCION esta función de ayuda puede utilizarse para jumptables que contengan instrucciones de 4 bytes (->goto). Recuerda que las macro JUMPTABLE_4BYTES permiten el uso de esta función de manera segura, sin peligro de que el código tras la tabla sea ejecutado si el número índice en WREG es mayor al número de entradas
Volver

MIOS_HLP_IndirectJump
C_DECLARACION no disponible en C
DESCRIPCION esta función de ayuda lee un indicador de una tabla y salta hasta este indicador
NOTE TBLPTRU no leído ni cambiado. La tabla y la dirección objetivo deben estar localizadas en un segmento de 64k !
Volver

MIOS_Delay
C_DECLARACION void MIOS_Delay(unsigned char delay)
DESCRIPCION espera un tiempo exacto
recuerda que esta función no  funcionará en una rutina de interrupción de servicio!
C_IN tiempo en ms (0-255)
C_OUT -
C_EJEMPLO
  // esperar exactamente 250 ms
MIOS_Delay(250);

Volver

MIOS_GPCounterGet
C_DECLARACION unsigned char MIOS_GPCounterGet(void)
DESCRIPCION toma el valor del contador de propósito general, que es incrementado cada milisegundo
C_IN -
C_OUT valor de contador de propósito general
Volver

MIOS_Reset
C_DECLARACION void MIOS_Reset(void)
DESCRIPCION espera hasta que el buffer Tx MIDI está vacío, entonces resetea el SO
C_IN -
C_OUT -
Volver

MIOS_SystemResume
C_DECLARACION void MIOS_SystemResume(void)
DESCRIPCION resume todas las tareas de sistema
C_IN -
C_OUT -
Volver

MIOS_SystemSuspend
C_DECLARACION void MIOS_SystemSuspend(void)
DESCRIPCION suspende todas las tareas de sistema y usuario excepto las del handler IO MIDI handler
C_IN -
C_OUT -
Volver

MIOS_UserResume
C_DECLARACION void MIOS_UserResume(void)
DESCRIPCION resume todas las tareas de usuario
C_IN -
C_OUT -
Volver

MIOS_UserSuspend
C_DECLARACION void MIOS_UserSuspend(void)
DESCRIPCION suspende todas las tareas de usuario
C_IN -
C_OUT -
Volver

USER_AIN_NotifyChange
C_DECLARACION void AIN_NotifyChange(unsigned char pin, unsigned int pin_value)
DESCRIPCION Esta función es llamada por MIOS cuando se ha movido un pote
C_IN Número de Pote en <pin>
valor de10 bit en <pin_value>
ISR no
Volver

USER_DIN_NotifyToggle
C_DECLARACION void DIN_NotifyToggle(unsigned char pin, unsigned char pin_value)
DESCRIPCION Esta función es llamada por MIOS cuando ha sido accionado un botón.
C_IN Número de Botón en <pin>
Valor de Botón <pin_value>:
- 1 si el botón ha sido desactivado(=5V)
- 0 si el botón ha sido presionado (=0V)
ISR no
Volver

USER_DISPLAY_Init
C_DECLARACION void DISPLAY_Init(void)
DESCRIPCION Esta función es llamada por MIOS cuando el contenido de la pantalla debe ser inicializado.  Este es el caso durante el arranque después de que se haya mostrado en la pantalla un mensaje temporal
C_IN -
C_OUT -
ISR no
Volver

USER_DISPLAY_Tick
C_DECLARACION void DISPLAY_Tick(void)
DESCRIPCION Esta función es llamada por MIOS en el mainloop(loop principal) cuando no se muestra en la pantalla ningún mensaje temporal.
C_IN -
C_OUT -
ISR no
Volver

USER_ENC_NotifyChange
C_DECLARACION void ENC_NotifyChange(unsigned char encoder, char incrementer)
DESCRIPCION MIOS llama a esta función cuando se ha movido un encoder
C_IN número de en <encoder>
incrementer firmado en <incrementer>
- es positivo cuando el encoder se ha girado en el sentido de las agujas del reloj
- es negativocuando el encoder se ha girado en sentido contrario a las agujas del reloj
ISR no
Volver

USER_Init
C_DECLARACION void Init(void)
DESCRIPCION MIOS llama a esta función después del encendido para inicializar la aplicación
C_IN -
C_OUT -
ISR no
Volver

USER_LCD_Clear
C_DECLARACION no disponible en C - el código es parte del controlador LCD (app_lcd.inc)
DESCRIPCION MIOS llama a esta función cuando la LCD personal debe ser limpiada
NOTA ver custom_lcd_example para más detalles
Volver

USER_LCD_Cmd
C_DECLARACION no disponible en C - el código es parte del controlador LCD  (app_lcd.inc)
DESCRIPCION envía un comando a la pantalla LCD
En CLCDs: usa esta función para decodificar los comandos HD44780 si es necesario
On GLCDs: ignora esta función!
NOTE ver custom_lcd_example para más detalles
Volver

USER_LCD_CursorSet
C_DECLARACION no disponible en C - el código es parte del controlador LCD  (app_lcd.inc)
DESCRIPCION MIOS llama esta función cuando debe camabiarse el cursor
NOTE ver custom_lcd_example para más detalles
Volver

USER_LCD_Data
C_DECLARACION no disponible en C - el código es parte del controlador LCD  (app_lcd.inc)
DESCRIPCION envía un valor de datos a la pantalla LCD
En CLCDs: enrama directamente a USER_LCD_PrintChar
En GLCDs: ignora esta funcion!
NOTA ver custom_lcd_example para más detalles
Volver

USER_LCD_Init
C_DECLARACION no disponible en C - el código es parte del controlador LCD  (app_lcd.inc)
DESCRIPCION MIOS llama a esta función cuando debe ser inicializada la LCD personal 
NOTA ver custom_lcd_example para más detalles
Volver

USER_LCD_PrintChar
C_DECLARACION no disponible en C - el código es parte del controlador LCD  (app_lcd.inc)
DESCRIPCION MIOS llama a esta función cuando debe imprimirse un caracter
NOTA ver custom_lcd_example para más detalles
Volver

USER_LCD_SpecialCharInit
C_DECLARACION no disponible en C - el código es parte del controlador LCD  (app_lcd.inc)
DESCRIPCION ver MIOS_CLCD_SpecialCharInit
NOTE ver custom_lcd_example para más detalles
Volver

USER_MIDI_NotifyRx
C_DECLARACION no disponible en C - el código debe ser añadido a mios_wrapper
DESCRIPCION MIOS llama a esta función cuando se ha recibido un byte MIDI.  Puede usarse para monitorizar la actividad Rx o para lleva a cabo alguna acción- por ej. reaccionar a eventos en tiempo real como un reloj MIDI (0xf8) con latencia mínima. Recuerda que esta es una rutina de interrupción de servicio! Usa FSR2 en vez de FSR0 y IRQ_TMPx en lugar de TMPx -- y haz la rutina lo más rápido posible!
ISR
Volver

USER_MIDI_NotifyTx
C_DECLARACION no disponible en C - el código debe ser añadido a mios_wrapper
DESCRIPCION MIOS llama a esta función antes de la transferencia de un byte MIDI. Esto se puede usar para monitorizar la actividad Tx o hacer cualquier otra acción antes de que se envíe el byte. (por ej. activar un pin para salidas MIDI multiplexadas)
Recuerda que esta es una rutina de interrupción de servicio! Usa FSR2 en lugar de FSR0 y IRQ_TMPx en lugar de TMPx -- y haz la rutina lo más rápido posible!
ISR
Volver

USER_MPROC_DebugTrigger
C_DECLARACION no disponible en C - el código debe ser añadido a mios_wrapper
DESCRIPCION MIOS llama a esta función cuando se ha recibido un comando de depuración de errores (debug) se ha recibido vía SysEx
ISR no
Volver

USER_MPROC_NotifyFoundEvent
C_DECLARACION void MPROC_NotifyFoundEvent(unsigned char evnt0, unsigned char evnt1, unsigned char evnt2)
DESCRIPCION MIOS llama a esta función cuando ha sido recibido un evento MIDI que ha sido especificado en la tabla CONFIG_MIDI_IN
C_IN Primer byte de evento  MIDI en <evnt0>
Segundo byte de evento MIDI in <evnt1>
Tercer byte de evento MIDI  in <evnt2>
C_OUT -
ISR no
Volver

USER_MPROC_NotifyReceivedByte
C_DECLARACION void MPROC_NotifyReceivedByte(unsigned char byte)
DESCRIPCION MIOS llama a esta función cuando se ha recibido un byte MIDI
C_IN byte MIDI recibido en <byte>
C_OUT -
ISR no
Volver

USER_MPROC_NotifyReceivedEvent
C_DECLARACION void MPROC_NotifyReceivedEvent(unsigned char evnt0, unsigned char evnt1, unsigned char evnt2)
DESCRIPCION MIOS llama a esta función cuando se ha recibido un evento MIDI completo-
C_IN primer byte de evento MIDI en <evnt0>
segundo byte de evento MIDI  in <evnt1>
tercer byte de evento MIDI  in <evnt2>
C_OUT -
ISR no
Volver

USER_MPROC_NotifyTimeout
C_DECLARACION void MPROC_NotifyTimeout(void)
DESCRIPCION MIOS llama a esta función cuando un evento MIDI no ha sido completamente recibido en 2 segundos
C_IN -
C_OUT -
ISR no
Volver

USER_SR_Service_Finish
C_DECLARACION void SR_Service_Finish(void)
DESCRIPCION MIOS llama a esta función después de que se hayan cargado los registros shift.
Recuerda que esta es una rutina de interrupción de servicio! Usa FSR2 en lugar de FSR0 y IRQ_TMPx en lugar de  TMPx -- y haz la rutina lo más rápido posible!
C_IN -
C_OUT -
ISR
Volver

USER_SR_Service_Prepare
C_DECLARACION void SR_Service_Prepare(void)
DESCRIPCION MIOS llama a esta función antes de que se hayan cargado los registros shift.
Recuerda que esta es una rutina de interrupción de servicio! Usa FSR2 en lugar de FSR0 y IRQ_TMPx en lugar de  TMPx -- y haz la rutina lo más rápido posible!
C_IN -
C_OUT -
ISR
Volver

USER_Tick
C_DECLARACION void Tick(void)
DESCRIPCION MIOS llama a esta función en el loop principal (mainloop) cuando no hay otra cosa que hacer
C_IN -
C_OUT -
ISR no
Volver

USER_Timer
C_DECLARACION void Timer(void)
DESCRIPCION MIOS llama periódicamente a esta función. La frecuencia debe ser inicializada con MIOS_Timer_Set
Recuerda que esta es una rutina de interrupción de servicio! Usa FSR2 en logar de FSR0 y IRQ_TMPx en lugar de  TMPx --y haz la rutina lo más rápido posible!
C_IN -
C_OUT -
ISR
Volver


Last update: 2015-09-24

Copyright © 1998-2015, Thorsten Klose. All rights reserved.