Controllo degli interrupt
L'istruzione ICTL imposta tutti gli interrupt su abilitato o disabilitato. Ogni qualvolta viene eseguita l'istruzione ICTL, è possibile impostare parametri quali il tipo e la validità dei programmi di interrupt. Le impostazioni possono essere specificate tramite s1_Control e s2_Condition.
s1_ControlCostante equivalente a 16 bit o area a 16 bit per l'impostazione di controllo degli interrupt
s2_ConditionCostante equivalente a 16 bit o area a 16 bit per l'impostazione della condizione trigger degli interrupt
Ingresso
Impostazione del dato di controllo di interrupt
Impostazione della condizione di interrupt
Il numero di programmi di interrupt disponibili è:
programmi di interrupt avviati da moduli di interrupt (INT 0–INT 15)
programmi di interrupt avviati da moduli avanzati (moduli speciali, come posizionamento, ecc.) (INT 16–INT 23)
programma di interrupt periodico (INT 24) (Base tempo 0,5ms selezionabile per FP2/2SH, FP10SH)
Assicuratevi di utilizzare le istruzioni ICTL in maniera tale che vengano eseguite una volta sul fronte di salita del trigger ICTL utilizzando l'istruzione DF Differenziale fronte di salita.
Due o più istruzioni ICTL possono avere lo stesso trigger.
Bit |
15 .. 8 |
7 .. 0 |
---|---|---|
s1_Control 16# |
Selezione della funzione di controllo 00: Controllo interrupt "abilitato/disabilitato" 01: Controllo di reset trigger interrupt |
Selezione del tipo di interrupt 00: Modulo di interrupt (INT 0–15) 01: Modulo avanzato (INT 16–23) 02: Interrupt periodico (INT 24) |
s2_Condition 2# |
Bit 0: 0 Programma di interrupt 0 disabilitato Bit 0: 1 Programma di interrupt 0 abilitato Bit 1: 0 Programma di interrupt 1 disabilitato ... Bit 15: 1 Programma di interrupt 15 abilitato Esempio: s2 = 2#0000000000001010 |
Lo stato di abilitazione/disabilitazione attuale di ogni interrupt avviato da modulo di interrupt può essere controllato monitorando la variabile di sistema sys_wInterruptMask_0_15.
Lo stato di abilitazione/disabilitazione attuale di ogni interrupt non avviato da modulo di interrupt può essere controllato monitorando la variabile di sistema sys_wInterruptMask_16_31.
L'intervallo di interrupt attuale dell'interrupt periodico può essere controllato monitorando la variabile di sistema sys_iPeriodicInterruptInterval.
Se un programma viene scritto in un task di interrupt, l'interrupt interessato verrà abilitato automaticamente durante la routine di inizializzazione all'avvio del programma.
Con l'istruzione ICTL, un task di interrupt può essere abilitato o disabilitato dal programma.