11.3.4 Access Control for IVTBASE Registers
The interrupt controller has an IVTLOCKED bit, which can be set to avoid inadvertent changes to the contents of
IVTBASE. Setting and
clearing this bit requires a special sequence as an extra precaution against inadvertent
changes.
To allow writes to IVTBASE, the interrupts must be disabled (GIEH = 0) and the
IVTLOCKED bit must be cleared. The user must follow the sequence shown below to clear the
IVTLOCKED bit.
IVT Unlock Sequence
; Disable Interrupts:
BCF INTCON0, GIE;
; Bank to IVTLOCK register
BANKSEL IVTLOCK;
MOVLW 55h;
; Required sequence, next 4 instructions
MOVWF IVTLOCK;
MOVLW AAh;
MOVWF IVTLOCK;
; Clear IVTLOCKED bit to enable writes
BCF IVTLOCK, IVTLOCKED;
; Enable Interrupts
BSF INTCON0, GIE;
The user must follow the following sequence to set the IVTLOCKED bit.
IVT Lock Sequence
; Disable Interrupts:
BCF INTCON0, GIE;
; Bank to IVTLOCK register
BANKSEL IVTLOCK;
MOVLW 55h;
; Required sequence, next 4 instructions
MOVWF IVTLOCK;
MOVLW AAh;
MOVWF IVTLOCK;
; Set IVTLOCKED bit to enable writes
BSF IVTLOCK, IVTLOCKED;
; Enable Interrupts
BSF INTCON0, GIE;
When the IVT1WAY Configuration bit is set, the IVTLOCKED bit can be cleared and set only once after a device Reset. The unlock operation will have no effect after the lock sequence is used to set the IVTLOCKED bit. Unlocking is inhibited until a system Reset occurs.
