Actualmente estoy programando un pic16f18323. Estoy usando MPLAB X. Y XC8 como compilador. Solo quiero preguntar si las configuraciones de pragma se pueden mostrar 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 la hoja de datos 'PIC16 (L) F18313/18323'):
#pragma config RSTOSC = 0b110
en lugar de
#pragma config RSTOSC = HFINT1
Intenté usar la primera expresión en lugar de la normal (segunda). No me dio ningún error de compilación, pero tampoco funcionó correctamente. Cuando programo la imagen con un código de parpadeo simple, 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 trate de la sintaxis, pero aún no estoy completamente seguro. No afecta mi trabajo directamente, me encontré con este problema por coincidencia y me dio curiosidad. Si alguien sabe de esto me alegraría.
#pragma
es una directiva que envía información de texto al compilador, que luego la interpreta de acuerdo con las reglas del pragma particular. Este texto no es 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 dice al pragma de configuración que RSTOSC = HFINT1
significa 'establecer la memoria en la dirección 0x8007 a 0x60 a través de una máscara de 0x70', lo que coloca 0b110 en los bits 6-4 del registro de configuración 1.
Debe utilizar únicamente los nombres de configuración definidos . Sustituir los números binarios del orzuelo C simplemente confundirá el pragma.
#pragma config RSTOSC = 110
sin '0b' al principio funcionó para mí.
bitsmack