Error extraño en MPLAB X IDE

1

Al usar el módulo RTCC en el PIC24F, necesitamos usar el oscilador secundario (configurando el bit # 2 del registro OSCCONL) y deshabilitar el bloqueo de escritura en los registros RTCC. Ahora el bloqueo de escritura se puede hacer usando el siguiente patrón de acuerdo con la nota de aplicación:

MOV #NVMKEY, W1 ;move the address of NVMKEY into W1
MOV.b #0x55, W2
MOV.b #0xAA, W3
MOV.b W2, [W1] ;start 55/AA sequence
MOV.b W3, [W1]
BSET RCFGCAL, #13 ;set the RTCWREN bit

Ahora este patrón no funciona. Y la causa se puede encontrar en la disconformidad de estas instrucciones utilizadas en el código C (asm volatile):

!void enable_RTCWREN()
!{
0x33A: LNK #0x0
!    asm volatile ("MOV   #NVMKEY, W1");
0x33C: MOV #0x766, W1
!    asm volatile ("MOV.b #0x55, W2");
0x33E: MOV.B #0x55, W2
!    asm volatile ("MOV.b #0xAA, W3");
0x340: MOV.B #0xAA, W3
!    asm volatile ("MOV.b W2, [W1]");
0x342: MOV.B W2, [W1]
!    asm volatile ("MOV.b W3, [W1]");
0x344: MOV.B W3, [W1]
!    asm volatile ("BSET RCFGCAL, #13");
0x346: BSET 0x627, #5
!}
0x348: ULNK
0x34A: RETURN

¿POR QUÉ EL ID DE MPLAB X COMPILA EL CONSTANTE # 13 COMO EL # 5? ¡Por lo tanto, el bloqueo de escritura RTCC no se desactiva y el módulo no se inicia en absoluto!

    
pregunta 3bdalla

0 respuestas

Lea otras preguntas en las etiquetas