Forum: Mikrocontroller und Digitale Elektronik PIC16F818 und CCS-Compiler - OSCCON-Register


von Peter Werlitz (Gast)


Lesenswert?

Hallo und einen schönen guten Tag,

ich möchte den PIC16F818 mit einem internen RC-Oszilattor laufen lassen
und benutze den CCS C-Compiler. Wie kann ich das OSCCON- und
OSCTUNE-Register am besten einstellen?

Schöne Grüße
Peter

von Peter Werlitz (Gast)


Lesenswert?

Sorry! Nicht Oszilattor sondern Oszillator ;-)

von Fernando Heitor (Gast)


Lesenswert?

Hi Peter

mit dem Präprozessorbefehl #fuses kannst du die Config-Bits
einstellen:

#fuses INTRC,NOWDT,PUT,NOMCLR,BROWNOUT

Hier schaltest du den internen RC-Oszillator ein (INTRC), Watchdog aus,
Powerup Timer ein, NOMCLR (MCLR ist ein I/O) , Brownout ein.

INTRC ist für deine Einstellungen . Die anderen Einstellung musst du
nach deinen Konfiguration einstellen.

Fernando Heitor

von Peter Werlitz (Gast)


Lesenswert?

Hallo Fernando und andere Mitleser,

danke erst einmal, aber mit #fuses INTRC,... habe ich ja den internen
Oszillator eingeschaltet. Das ist klar! Beim PIC16F818 kann ich die
Frequenz über das OSCCON-Register einstellen z.B. den Wert 0x70 für
8MHz. Die Frage war eigentlich, wie ich genau dieses Register
einstellen kann. Gibt es da einen Befehl für oder wie kann ich das
Register einstellen. Dann kann man noch ein Feintuning mit OSCTUNE
vornehmen, was allerdings nicht unbedingt nötig ist, da ich den
Oszillator auch mit dem Setzen von BIT2 des OSCCON-Registers stabiler
machen kann.


Vielleicht habt ihr ja noch einen Tipp? :-)

Gruß
Peter

von Fernando Heitor (Gast)


Lesenswert?

Hi Peter,

jetzt habe ich verstanden, was du möchtest.
Es gibt im Moment keine Sonderfunktion für den CCS C-Compiler  um die
Frequenz über das OSCTUNE-Register einzustellen.
Aber es gibt bei einigen PIC-Headerdateien die Funktion
setup_oscillator(). Vielleicht ist in der Headerdatei des PIC16F818
diese Funktion auch integriert.
Habe leider in meinem Compiler Version diesen neuen PIC noch nicht
integriert.

Ansonsten konfigurierst du, wie du schon oben erwähnt hast, das
Register OSCTUNE direkt.

Fernando Heitor

von Peter Werlitz (Gast)


Lesenswert?

Hallo Fernando,

einen Befehl setup_oscillator() kennt der CCS-Compiler leider nicht.
Ich wußte auch schon mal, wie ich Register in C auch direkt
manipulieren kann. Es ist das Register 0x8F! Weißt du vielleicht, wie
das geht?

Gruß
Peter

PS: Ich habe deine Webseiten nun auch gefunden und in dem CCS-Forum
ebenfalls diese Frage gestellt! ;-)

von Roman (Gast)


Lesenswert?

#byte blabla 0x8F

blabla=...

von Roman (Gast)


Lesenswert?

#byte blabla=0x8F

blabla=...

so..

zumindest gehts mit

#bit asdf=x.y

so

wirf mal einen blick in die hilfe

von Peter Werlitz (Gast)


Lesenswert?

Vielen Dank euch allen für die Hilfe!
Ich habe es dann so gemacht

 #byte OSCCON = 0x8F
 OSCCON = 0x64;

und so funktioniert es dann auch.

Schöne Grüße
Peter

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.