Summary:
Sie müssen OSCF
(Bit 3) im PCON
-Register in Ihrem Code (dh zur Laufzeit) auf 0
setzen, wenn Sie möchten Der PIC INTOSC (Interner Oszillator) soll mit einer nominalen Frequenz von 48 kHz (tatsächlich irgendwo zwischen 31,4 kHz und 78,62 kHz) anstelle der INTOSC-Standardfrequenz beim Einschalten von 4 MHz betrieben werden.
Details:
Ich habe mich dafür entschieden, den internen Oszillator auf die minimal mögliche Frequenz (48 kHz) einzustellen, um den Stromverbrauch zu senken, und im Assistenten angegeben, dass die .h-Datei die Zeilenverwendungsverzögerung (intern = 48 kHz) aufweist.
Das Problem ist, dass keines der von Ihnen aufgelisteten Dinge die INTOSC -Hardware auf 48 kHz eingestellt hat. Basierend auf Ihren Aussagen geht Ihre Software davon aus, dass die CPU mit 48 kHz betrieben wird, Ihre Hardware jedoch weiterhin mit der Standard-INTOSC-Frequenz von 4 MHz.
Das Programm lief wie beabsichtigt in Proteus, aber es lief ungefähr 85 Mal schneller als das, als ich es auf dem Board ausprobiert habe.
Ja, das erwarte ich.
85 schneller x 48 kHz = 4 MHz (ungefähr)
Dieses Ergebnis deutet darauf hin, dass Ihre MCU tatsächlich noch mit der Standard-INTOSC-Frequenz von 4 MHz ausgeführt wurde.
Der wichtige Punkt ist, dass you diesen PIC nicht so konfigurieren kann, dass er mit 48 kHz von Power-on ausgeführt wird. Wenn Sie die CONFIG BITS (a.k.a. Fuses) auf eine der beiden Varianten der INTOSC-Einstellung einstellen, verwendet die MCU beim Einschalten die interne 4-MHz-Frequenz.
Wenn Sie es dann auf 48 kHz umschalten möchten (möglicherweise zu Beginn Ihres main ()
, aber möglicherweise an anderer Stelle in Ihrem Code - es liegt an Ihnen zu wählen), setzen Sie OSCF
(Bit 3) auf 0
im Register PCON
- that bit schaltet die INTOSC-Frequenz von 4 MHz auf 48 kHz (nach einer kurzen Umschaltung) Übergang).
Weitere Informationen finden Sie in Abschnitt 14.2.8 "BESONDERE FUNKTIONEN: DOPPELGESCHWINDIGKEITS-OSZILLATORMODI" auf Seite 101 des PIC16F628A-Datenblattes.
Beachten Sie auch, dass im Datenblatt nicht die Genauigkeit des 48-kHz-Takts angegeben ist (dort wird nur die 4-MHz-Taktgenauigkeit angegeben).Die PIC16F628A-Errata zeigen jedoch, dass der 48-kHz-Takt tatsächlich zwischen 31,4 kHz und 78,62 kHz variieren kann.