Microchip Technology MA330026 Data Sheet

Page of 392
dsPIC33FJ16(GP/MC)101/102 AND dsPIC33FJ32(GP/MC)101/102/104
DS70000652F-page 184
 2011-2014 Microchip Technology Inc.
EXAMPLE 15-1:
ASSEMBLY CODE FOR WRITE-PROTECTED REGISTER UNLOCK AND FAULT 
CLEARING SEQUENCE
EXAMPLE 15-2:
C CODE FOR WRITE-PROTECTED REGISTER UNLOCK AND FAULT CLEARING 
SEQUENCE
; FLTA1 pin must be pulled high externally in order to clear and disable the Fault
; Writing to P1FLTBCON register requires unlock sequence
mov #0xabcd,w10
; Load first unlock key to w10 register
mov #0x4321,w11
; Load second unlock key to w11 register
mov #0x0000,w0
; Load desired value of P1FLTACON register in w0
mov w10, PWM1KEY
; Write first unlock key to PWM1KEY register
mov w11, PWM1KEY
; Write second unlock key to PWM1KEY register
mov w0,P1FLTACON
; Write desired value to P1FLTACON register
; FLTB1 pin must be pulled high externally in order to clear and disable the Fault
; Writing to P1FLTBCON register requires unlock sequence
mov #0xabcd,w10
; Load first unlock key to w10 register
mov #0x4321,w11
; Load second unlock key to w11 register
mov #0x0000,w0
; Load desired value of P1FLTBCON register in w0
mov w10, PWM1KEY
; Write first unlock key to PWM1KEY register
mov w11, PWM1KEY
; Write second unlock key to PWM1KEY register
mov w0,P1FLTBCON
; Write desired value to P1FLTBCON register
    
; Enable all PWMs using PWM1CON1 register
; Writing to PWM1CON1 register requires unlock sequence
mov #0xabcd,w10
; Load first unlock key to w10 register
mov #0x4321,w11
; Load second unlock key to w11 register
mov #0x0077,w0
; Load desired value of PWM1CON1 register in w0
mov w10, PWM1KEY
; Write first unlock key to PWM1KEY register
mov w11, PWM1KEY
; Write second unlock key to PWM1KEY register
mov w0,PWM1CON1
; Write desired value to PWM1CON1 register
// FLTA1 pin must be pulled high externally in order to clear and disable the Fault
// Writing to P1FLTACON register requires unlock sequence
// Use builtin function to write 0x0000 to P1FLTACON register
__builtin_write_PWMSFR(&P1FLTACON, 0x0000, &PWM1KEY);
// FLTB1 pin must be pulled high externally in order to clear and disable the Fault
// Writing to P1FLTBCON register requires unlock sequence
// Use builtin function to write 0x0000 to P1FLTBCON register
__builtin_write_PWMSFR(&P1FLTBCON, 0x0000, &PWM1KEY);
// Enable all PWMs using PWM1CON1 register
// Writing to PWM1CON1 register requires unlock sequence
// Use builtin function to write 0x0077 to PWM1CON1 register
__builtin_write_PWMSFR(&PWM1CON1, 0x0077, &PWM1KEY);