PIC Frequenz

Gast #2587473
Lesenswert?

Hallo zusammen,
ich habe einen PIC16F84A-04P und einen 32,768kHz Oszillator. Wenn ich 
nun den TMR0 im 8-bit Modus betreiben will, müsste er ja genau 128 
Interrupts pro Sekunde machen. Allerdings macht er bei mir lediglich 32 
Interrupts pro Sekunde, also genau ein Viertel... Den Prescaler habe ich 
ausgeschaltet (bzw. dann dem ungenutzten WDT zugewiesen). Wie kann das 
sein, was habe ich nicht beachtet?

Danke und Gruß
Peter
Gast #2587513
Lesenswert?

Mit FOSC wird doch nur der entsprechende Oszillator ausgewählt??
Und das mache ich in den Projekt Optionen, nicht aber im Code selber?

Laut Datenblatt:
"6.2.1 OSCILLATOR TYPES
The PIC16F84A can be operated in four different
oscillator modes. The user can program two
configuration bits (FOSC1 and FOSC0) to select one of
these four modes:
• LP Low Power Crystal
• XT Crystal/Resonator
• HS High Speed Crystal/Resonator
• RC Resistor/Capacitor"
Gast #2587535
Lesenswert?

> Hätte besser geschrieben FOSC/4 dann stimmt es.
> Der Timer läuft immer mit 1/4 des FOSC.
> Also bei 8MHz bleibt für den Timer 2 MHz.

Kann ich also mit jedem beliebigen, externen Oszillator immer nur ein 
Viertel der Frequenz nutzen? Was ist da der Hintergrund?
Danke schonmal :-)
#2587733
Lesenswert?

ICh glaub hier wird ein bisschen was durcheinander gebracht. Also bei 
den PIC16 ist ein Maschinenzyklus zwar immer 4 Takte des Oszillators, 
aber dies sollte doch keinen Einfluss darauf haben, wenn ein externen 
Oszillator an einen Timer direkt angeschlossen ist.

Sicher, dass der Prescaler aus ist? Verstell ihn doch mal und schau was 
passiert. Du könntest ihn ja auch auf 128 stellen, dann gibt es nur ein 
Interrupt pro Sekunde. Oder benötigst du es schneller?

Die Datenblätter der alten PICs sind irgendwie nicht so der Bringer...
#2587787
Lesenswert?

fetter_Homer schrieb:
> Kann ich also mit jedem beliebigen, externen Oszillator immer nur ein
> Viertel der Frequenz nutzen? Was ist da der Hintergrund?

JA,
dabei spielt es keine Rolle wie der Oszillatortakt (RC, Quarz, extern) 
erzeugt wird. Dieser Takt wird dann intern durch 4 geteilt und nennt 
sich von nun an Arbeitstakt.

Der Prescaler liegt stets zwischen Arbeitstakt und TMR0 und ist wenn 
nicht verwendet auf 1:1 gesetzt.

Ist der Prescaler dem Watchdogtimer zugeordnet,(dieser ist ein interner 
freilaufender RC.Oszillator und nicht vom Oszillatortakt abhängig) 
verlängert sich die Periode in welcher der WDT den PIC aus dem Schlaf 
weckt.

Näheres dazu erfährt man im Datenblatt und bei 
[www.sprut.de/electronic/pic/osc/index.htm]

mfg Ottmar
Gast #2588581
Lesenswert?

> ICh glaub hier wird ein bisschen was durcheinander gebracht. Also bei
> den PIC16 ist ein Maschinenzyklus zwar immer 4 Takte des Oszillators,
> aber dies sollte doch keinen Einfluss darauf haben, wenn ein externen
> Oszillator an einen Timer direkt angeschlossen ist.

Der Timer0 hat keinen eigenen Oszillator wie der Timer1

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren