Control de interrupción
La instrucción ICTL sirve para habilitar o deshabilitar todas las interrupciones. Cada vez que se ejecuta la instrucción ICTL, se pueden establecer parámetros como el tipo y la validez de los programas de interrupción. La configuración se puede especificar en s1_Control y s2_Condition.
s1_Control: Área de 16 bits o constante equivalente para configurar el control de interrupción
s2_Condition: Área de 16 bits o constante equivalente para configurar la condición del disparo de interrupción
Entrada
Configuración del control de interrupción
Configuración de la condición de ejecución
El número de programas de interrupción disponibles es:
módulos de interrupción (INT 0–INT 15)
módulos avanzados (módulos especiales, posicionamiento,...) (INT 16–INT 23)
programa de interrupción periódica (INT 24) (base de tiempo 0,5ms seleccionable para FP2/2SH, FP10SH)
La instrucción ICTL se debe ejecutar una sola vez en el flaco de subida de ICTL utilizando la instrucción DF Flanco de subida diferencial.
La misma condición de ejecución puede ser compartida por 2 ó mas instrucciones ICTL.
Bit |
15 .. 8 |
7 .. 0 |
---|---|---|
s1_Control 16# |
Selección de la función de control 00: Control interrupción "habilitada/deshabilitada" 01: Borra la especificación de control |
Selección del tipo de interrupción 00: Módulos de interrupción (INT 0–15) 01: Módulos avanzados (INT 16–23) 02: Interrupción periódica (INT 24) |
s2_Condition 2# |
Bit 0: 0 Programa de interrupción 0 deshabilitado Bit 0: 1 Programa de interrupción 0 habilitado Bit 1: 0 Programa de interrupción 1 deshabilitado ... Bit 15: 1 Programa de interrupción 15 habilitado Ejemplo: s2 = 2#0000000000001010 |
Se puede comprobar el estado actual (activado/desactivado) de cada interrupción inicializada, monitorizando la variable del sistema sys_wInterruptMask_0_15.
Se puede comprobar el estado actual (activado/desactivado) de cada interrupción inicializada, monitorizando la variable del sistema sys_wInterruptMask_16_31.
Se puede comprobar el intervalo de interrupción seleccionado para las interrupciones periódicas, monitorizando la variable del sistema sys_iPeriodicInterruptInterval.
Si se escribe un programa en una tarea de interrupción, esta se habilita automáticamente durante la rutina de inicialización cuando arranca el programa.
Con la instrucción ICTL se puede habilitar o deshabilitar por programa una tarea de interrupción.