¿Cómo configuro el módulo del oscilador en un DSPIC33E?

1

He recibido un PIC DSPIC33EP128GM604 y estoy intentando configurar el oscilador RC rápido interno como la fuente del reloj. He leído la hoja de datos y la nota de la aplicación que me dicen que use la macro:   _FOSCSEL( OPT1_ON & OPT2_OFF & OPT3_PLL )

Sin embargo, siempre que establezco los bits relevantes, recibo el siguiente error durante el tiempo de compilación:

  

la dirección calculada para la sección __FOSCSEL se extiende más allá de la región de MEMORIA FOSCSEL

He buscado en Google este problema y busqué en los formularios de Microchip, pero curiosamente no puedo encontrar problemas y soluciones similares. He seleccionado el PIC mencionado en el proyecto y he configurado todos los archivos de encabezado relevantes (utilicé la plantilla DSPIC33E proporcionada por MPLABX).

    
pregunta Adil Malik

1 respuesta

1

A veces hay un problema con un archivo enlazador o un archivo de inclusión. En cualquier caso, la sintaxis que está tratando de usar no permite hacer buenos comentarios sobre lo que significa exactamente cada una de las configuraciones, y no da ninguna indicación de qué otras opciones podrían haber sido que no eligió.

Siempre configuro los bits de configuración en la fuente del ensamblador y documento cada bit. A continuación se muestra una sección de uno de mis proyectos actuales que utiliza el 33EP512GM604, que es casi el mismo chip. Esta sección siempre se vuelve a escribir para cada proyecto, y tendría que ser inspeccionada cuidadosamente si el proyecto fue movido a una parte diferente. Por lo tanto, no estoy tan preocupado por la ubicación de inicio fija, aunque esa no fue mi primera opción. Recuerdo vagamente que me encontré con un problema de vinculador usando las directivas predefinidas, así que establezca la dirección y comencé a escribir las palabras de la memoria del programa. De cualquier manera, el punto es cómo cada bit se documenta cuidadosamente, qué se eligió y alguna idea de qué otras opciones podrían haber sido.

;*******************************************************************************
;
;   Static processor configuration settings.
;
.section .configbits, code, address(0x557EC)

         .pword  0xFFFFFF    ;reserved
         .pword  0xFFFFFF    ;reserved

         .pword  0b111111111111111111001111 ;FICD
                 ; 1111111111111111-------- unused, all 1s makes NOP instruction
                 ; ----------------1------- reserved, must be set to 1
                 ; -----------------1------ unused
                 ; ------------------0----- disable JTAG
                 ; -------------------0---- reserved, must be set to 0
                 ; --------------------1--- reserved, must be set to 1
                 ; ---------------------1-- unused
                 ; ----------------------11 ICD interface uses PGEC1/PGED1

         .pword  0b111111111111111100111111 ;FPOR
                 ; 1111111111111111-------- unused, all 1s makes NOP instruction
                 ; ----------------00------ WDT window is 75% of period
                 ; ------------------1----- IIC2 uses SDA2/SCL2 pins
                 ; -------------------1---- IIC1 users SDA1/SCL1 pins
                 ; --------------------1--- enable brownout reset
                 ; ---------------------111 unused

         .pword  0b111111111111111101111111 ;FWDT
                 ; 1111111111111111-------- unused, all 1s makes NOP instruction
                 ; ----------------0------- WDT not always enabled
                 ; -----------------1------ WDT in non-window mode
                 ; ------------------1----- enable PLL lock
                 ; -------------------1---- WDT prescalser 128, not 32
                 ; --------------------1111 WDT postscaler to max of 32768

         .pword  0b111111111111111101011110 ;FOSC
                 ; 1111111111111111-------- unused, all 1s makes NOP instruction
                 ; ----------------01------ clock switching enabled, failsafe clk disabled
                 ; ------------------0----- allow multiple PPS changes
                 ; -------------------11--- unused
                 ; ---------------------1-- not used with external crystal oscillator
                 ; ----------------------10 primary oscillator mode is HS

         .pword  0b111111111111111100111010 ;FOSCSEL
                 ; 1111111111111111-------- unused, all 1s makes NOP instruction
                 ; ----------------0------- start with selected osc mode, not FRC
                 ; -----------------0------ don't require key sequence for PWM registers
                 ; ------------------111--- unused
                 ; ---------------------010 start with primary osc, not PLL

         .pword  0b111111111111111111111111 ;FGS
                 ; 1111111111111111-------- unused, all 1s makes NOP instruction
                 ; ----------------111111-- unused
                 ; ----------------------1- disable user memory code protection
                 ; -----------------------1 disable user memory write protection

         .pword  0xFFFFFF    ;reserved
         .pword  0xFFFFFF    ;reserved
    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas