Confusión sobre #pragma en XC8

2

Actualmente estoy programando un pic16f18323. Estoy usando MPLAB X. Y XC8 como el compilador. Solo quiero preguntar si se pueden mostrar las configuraciones de pragma como ('110' es la representación binaria de la configuración RSTOSC de 3 bits en el registro de configuración del oscilador. Página 50 en 'PIC16 (L) F18313 / 18323' hoja de datos):

#pragma config RSTOSC = 0b110

en lugar de

#pragma config RSTOSC = HFINT1

Intenté usar la primera expresión en lugar de la regular (segunda). No me dio ningún error de compilación, pero tampoco funcionó correctamente. Cuando programo la imagen con un simple código de parpadeo, con la configuración 'HFINT1' funciona bien. Pero cuando uso el número binario, la frecuencia del parpadeo aumenta en gran medida.

Me hace pensar que probablemente se trata de la sintaxis, pero aún no estoy del todo seguro. No afecta directamente a mi trabajo, encontré este problema por coincidencia y simplemente sentí curiosidad. Si alguien sabe sobre esto me alegraría.

    
pregunta packt

1 respuesta

1

#pragma es una directiva que envía información de texto al compilador, que luego la interpreta de acuerdo con las reglas del pragma en particular. Este texto no es un código C y no tiene que ser compatible con él.

Las definiciones relevantes para HFINT1 (que se encuentran en el archivo '16f18323.cfgdata') son: -

CWORD:8007:2977:FFFF:CONFIG1
CSETTING:70:RSTOSC:Power-up default value for COSC bits
CVALUE:60:HFINT1:HFINTOSC (1MHz) 

Esto le indica al pragma de configuración que RSTOSC = HFINT1 significa 'establecer memoria en la dirección 0x8007 a 0x60 a través de una máscara de 0x70', que coloca a 0b110 en los bits 6-4 del registro de configuración 1.

Debería usar los nombres de configuración definidos solo . Sustituir los números binarios de stye C simplemente confundirá el pragma.

    
respondido por el Bruce Abbott

Lea otras preguntas en las etiquetas