Ich programmiere gerade einen pic16f18323. Ich verwende MPLAB X. Und XC8 als Compiler. Ich möchte nur fragen, ob Pragma-Konfigurationen als angezeigt werden können ('110' ist die binäre Darstellung der 3-Bit-RSTOSC-Konfiguration im Oszillator-Konfigurationsregister. Seite 50 im Datenblatt 'PIC16 (L) F18313/18323'):
#pragma config RSTOSC = 0b110
anstatt
#pragma config RSTOSC = HFINT1
Ich habe versucht, den ersten Ausdruck anstelle des regulären (zweiten) zu verwenden. Es gab mir keinen Compilerfehler, aber es funktionierte auch nicht richtig. Wenn ich das Bild mit einem einfachen Blinkcode programmiere, funktioniert es mit der Konfiguration 'HFINT1' gut. Aber wenn ich die Binärzahl verwende, erhöht sich die Häufigkeit des Blinzelns stark.
Es lässt mich denken, dass es wahrscheinlich um die Syntax geht, aber ich bin mir immer noch nicht ganz sicher. Es wirkt sich nicht direkt auf meine Arbeit aus, ich bin zufällig auf dieses Problem gestoßen und wurde einfach neugierig. Wenn das jemand weiß, würde ich mich freuen.
#pragma
ist eine Direktive, die Textinformationen an den Compiler sendet, der sie dann gemäß den Regeln des jeweiligen Pragmas interpretiert. Dieser Text ist kein C-Code und muss nicht mit diesem kompatibel sein.
Die relevanten Definitionen für HFINT1 (gefunden in der Datei '16f18323.cfgdata') sind:-
CWORD:8007:2977:FFFF:CONFIG1
CSETTING:70:RSTOSC:Power-up default value for COSC bits
CVALUE:60:HFINT1:HFINTOSC (1MHz)
Dies teilt dem Konfigurations-Pragma mit, dass RSTOSC = HFINT1
„Speicher an Adresse 0x8007 durch eine Maske von 0x70 auf 0x60 setzen“ bedeutet, wodurch 0b110 in die Bits 6-4 des Konfigurationsregisters 1 gesetzt wird.
Sie sollten nur die definierten Konfigurationsnamen verwenden . Das Ersetzen von C-Stye-Binärzahlen wird das Pragma nur verwirren.
#pragma config RSTOSC = 110
ohne '0b' am Anfang für mich funktioniert.
bitsmack