PIC 16F1503 - Ändern Sie die Frequenz des internen Oszillators

Meine Konfigurationsbits sind wie folgt:

#include <P16F1503.inc> 
__CONFIG _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _BOREN_OFF & _CLKOUTEN_OFF
__CONFIG _CONFIG2, _WRT_OFF & _STVREN_OFF & _LVP_OFF

Der relevante Teil des Codes, den ich zum Ändern der Frequenz verwende, ist dieser:

banksel OSCCON
movlw   b'01101000'     ; Int. osc. 4 MHz
movwf   OSCCON
btfss   OSCSTAT, HFIOFR ; Is internal oscillator running?
goto    $-1             ; No, loop one line back...
btfss   OSCSTAT, HFIOFS ; Is internal oscillator stable?
goto    $-1             ; No, loop one line back...

Mein Debug-Tool ist leider nur ein Simulator. Das Problem ist, dass die Ausführung den Haltepunkt in Zeile 192 nie erreicht:

Geben Sie hier die Bildbeschreibung ein

Das bedeutet also, dass der interne Oszillator niemals stabil wird?

Ich benutze:

  • IDE: MPLAB X IDE v1.20
  • Compiler: MPASM v5.45

Was mache ich falsch?

Möglicherweise simuliert der Simulator das HFIOFS-Bit nicht. Es gibt ein paar Dinge, die es nicht tut.
Großartig.. Das macht Sinn!

Antworten (1)

Wenn Sie den Simulator verwenden, müssen Sie diese beiden Tests auskommentieren, damit der Oszillator läuft oder stabil ist. Da keine Hardware ausgeführt wird, schlagen die Tests immer fehl. Sie sollten in Ordnung sein, wenn Sie einen Debugger wie PICkit 2/3 oder ICD 3 verwenden.

Also scheinen die Konfigurationsbits und der Code, die ich gepostet habe, in Ordnung zu sein?
Es sieht OK aus, ich habe so etwas mit dem 16F1503 verwendet.