Priority Lock

The system arbiter grants memory access to the peripheral selections (DMAx, Scanner) as long as the PRLOCKED bit is set. Priority selections are locked by setting the PRLOCKED bit. Setting and clearing this bit requires a special sequence as an extra precaution against inadvertent changes. The following code examples demonstrate the Priority Lock and Priority Unlock sequences.

Priority Lock Sequence

INTCON0bits.GIE = 0; 		// Disable Interrupts;
PRLOCK = 0x55;
PRLOCK = 0xAA;
PRLOCKbits.PRLOCKED = 1; 	// Grant memory access to peripherals;
INTCON0bits.GIE = 1; 		// Enable Interrupts;

Priority Unlock Sequence

INTCON0bits.GIE = 0; 		// Disable Interrupts;
PRLOCK = 0x55;
PRLOCK = 0xAA;
PRLOCKbits.PRLOCKED = 0; 	// Allow changing priority settings;
INTCON0bits.GIE = 1; 		// Enable Interrupts;