PIC18F67J90 Taktauswahl [geschlossen]

Ich habe zwei Möglichkeiten, die Systemuhr auszuwählen:

  1. INTOSC
  2. FOSC

Ich möchte die interne Uhr mit 8/16 Mhz verwenden.

Welche soll ich wählen und was ist der Unterschied zwischen FOSC und INTOSC?

Ab Seite 35 des Datenblatts werden die Oszillatoroptionen beschrieben.
Dies ist eine dumme [und faule] Frage, da sie im Datenblatt direkt und klar beantwortet wird.
@Olin Ich stimme zu, aber für einen Anfänger kann das Datenblatt eines Mikrocontrollers einschüchternd sein.
@m.Alin: Ja, aber dann sollten sie nach bestimmten Dingen fragen, die sie nicht verstehen. Gimme da anser Fragen, wenn die Antwort im Datenblatt steht, sind hier nicht angebracht.

Antworten (1)

Tatsächlich haben Sie mehr als zwei Oszillatoroptionen.

Welche soll man wählen und was ist der Unterschied zwischen FOSC und INTOSC?

Als erstes müssen Sie auswählen, welchen Oszillatortyp Sie als Oszillator Ihres Hauptgeräts ("primärer Oszillator") verwenden möchten. Sie sagten, Sie möchten den internen Oszillator verwenden.

Dazu müssen wir zur Flashzeit einige Konfigurationsbits setzen. Die Bits, an denen wir interessiert sind, sind die FOSC<2:0> -Bits aus dem CONFIG2L-Konfigurationsregister :

FOSC<2:0>: Oszillatorauswahlbits

  • 111 = ECPLL OSC1/OSC2 als primär; ECPLL-Oszillator mit aktiviertem PLL; CLKO auf RA6
  • 110 = EC OSC1/OSC2 als primär; externe Uhr mit FOSC/4-Ausgang
  • 101 = HSPLL OSC1/OSC2 als primär; Hochgeschwindigkeits-Quarz/Resonator mit Software-PLL-Steuerung
  • 100 = HS OSC1/OSC2 als primär; Hochgeschwindigkeitskristall/Resonator
  • 011 = Interner Oszillatorblock INTPLL1 mit Software-PLL-Steuerung; FOSC/4-Ausgabe
  • 010 = Interner Oszillatorblock INTIO1 mit FOSC/4-Ausgang auf RA6 und I/O auf RA7
  • 001 = Interner Oszillatorblock INTPLL2 mit Software-PLL-Steuerung und E/A auf RA6 und RA7
  • 000 = INTIO2 interner Oszillatorblock mit I/O auf RA6 und RA7

Sie müssen also die FOSC<2:0>-Konfigurationsbits auf „000“ setzen, um den internen Oszillator auszuwählen, ohne PLL und ohne Ausgabe des Takts an externe Pins.


PIC18F67J90 hat jedoch zwei interne Oszillatoren:

  • ein interner Oszillatorblock, der einen 8-MHz-Takt (±2 % Genauigkeit) liefert: INTOSC
  • eine INTRC-Quelle (ca. 31 kHz, stabil über Temperatur und VDD)

Offensichtlich wollen wir den schnelleren Oszillator (INTOSC) auswählen. Dazu müssen wir das INTSRC- Bit aus dem OSCTUNE (Oscillator Tuning Register) setzen:

INTSRC: Niederfrequenzquellen-Auswahlbit des internen Oszillators

  • 1 = 31,25-kHz-Gerätetakt, abgeleitet von 8-MHz-INTOSC-Quelle (Teilen durch 256 aktiviert)
  • 0 = 31-kHz-Gerätetakt, abgeleitet vom INTRC-31-kHz-Oszillator

Also INTSRC = 1.


Als nächstes müssen Sie die Geschwindigkeit des internen Oszillators einstellen. Für den internen Oszillator Fast RC (INTOSC) beträgt die Standardtaktrate 4 MHz, aber Sie können sie zur Laufzeit ändern, indem Sie die IRCF<2:0> -Bits aus dem OSCCON (Oscillator Control Register) ändern :

IRCF<2:0>: INTOSC-Quellfrequenz-Auswahlbits*

  • 111 = 8 MHz (INTOSC treibt den Takt direkt an)
  • 110 = 4 MHz (Standard)
  • 101 = 2MHz
  • 100 = 1MHz
  • 011 = 500kHz
  • 010 = 250kHz
  • 001 = 125kHz
  • 000 = 31 kHz (entweder von INTOSC/256 oder INTRC)

*Das Ändern dieser Bits bewirkt eine sofortige Umschaltung der Taktfrequenz, wenn der interne Oszillator die Gerätetakte liefert.

Sie müssen also die IRCF<2:0>-Bits auf '111' setzen, wenn Sie möchten, dass Ihr interner Oszillator mit 8 MHz läuft.

Das sollte es tun..

Hinweis 1 : Fosc kann auch die Frequenz des Oszillators bedeuten. Beachten Sie, dass die Systemuhr 4-mal langsamer ist als die bereitgestellte Fosc (Systemuhr = Fosc / 4). Das heißt, wenn Sie einen Oszillator mit einer Frequenz von 8 MHz auswählen, arbeitet der PIC mit 2 MIPS. Das liegt daran, dass für einen 8-Bit-PIC 4 Taktzyklen benötigt werden, um einen Befehl auszuführen.

Hinweis2 : Ausführliche Informationen zu diesem Thema finden Sie wie immer im Datenblatt des Gerätes .