Forum: Mikrocontroller und Digitale Elektronik PIC18F Externer Quarz nötig?


von Klaus B. (nuccleon)


Lesenswert?

Hallo PIC Profis,

ich bin ziemlich (gänzlich) unerfahren was die PIC's betrifft, möchte 
dies aber ändern und mir ein kleines Board mit dem PIC18F2321 aufbauen.

Jetzt stellt sich bei mir voarab die Frage ob ein Quarz an OSC1/OSC2 
nötig ist, schließlich verfügt der PIC auch über einen internen RC 
Oscillator, (Internal oscillator block) welcher 31kHz - 8MHz zur 
Verfügung stellt.

So weit so gut dachte ich mir, da kann man sich den Quarz sparen. Beim 
näheren studieren des Datenblattes ist mir dann aufgefallen, dass die 
System Clock Select bits (SCS1:SCS0) per Default auf 00 und somit auf 
Primary oscillator (OSC1/OSC2) gestellt sind.

Verstehe ich das falsch, oder kommt man ohne einen Quarz an OSC1/OSC2 
nicht aus?

Ich hoffe es kann mir jemand bei meinem Problem helfen. Vielen Dank 
schonmal vorab.

von Dirk W. (Gast)


Lesenswert?

Die Taktquelle kannst Du über die Configuration-Bits einstellen, die 
beim Brennen gesetzt werden. Dort kannst Du auch den internen Taktgeber 
als Taktquelle einschalten. Du brauchst also keinen externen Quarz.

von Klaus B. (nuccleon)


Lesenswert?

Super Danke für die schnelle Info. Ist das vergleichbar mit den Fuse 
Bits bei Atmel?

von Andreas K. (a-k)


Lesenswert?

Ist grob vergleichbar. Die Kernfrage ist aber, wie genau der Takt sein 
muss. Der intern erzeugte Takt ist für manche Anwendungen nicht genau 
genug.

von Severino R. (severino)


Lesenswert?

Also, etwas detaillierter:
Mit SCS1:SCS0 wählst Du zur Laufzeit (also in Deinem Programm), ob der 
Takt vom primären Oszillator, von Timer1 oder vom internen Oszillator 
kommt.
Per Default vom primären Oszillator.

Aber: Welches der primäre Oszillator ist, wird mit den Configuration 
Bits (auch Fuses genannt) FOSC3:FOSC0 bestimmt.
Dort kann mit 1000 der interne Oszillator gewählt werden, der per 
Default mit 8MHz läuft.

Mit IRCF2:IRCF0 kann (zur Laufzeit) die Frequenz gewählt werden.

Also: Beim Flashen des PIC muss der primäre Oszillator gewählt werden 
(Configuration bits FOSC3:FOSC0). Dies kann im Sourcecode eingebettet 
oder im Programmer gewählt werden.

Anschliessend wird im Programm (Initialisierung) das Register OSCCON 
gesetzt mit den gewünschten Werten für SCS1:SCS0 sowie IRCF2:IRCF0.

Alles klar? Wichtig bei Rückfragen: wie programmierst Du (Assembler, C, 
...)?

von Klaus B. (Gast)


Lesenswert?

Alles klar erstmal ;-) Danke für die ausführliche Antwort.
Ich denke Rückfragen kommen erst dann wenn es ums programmieren geht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.