Forum: Mikrocontroller und Digitale Elektronik PIC Frequenz


von fetter_Homer (Gast)


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

von Stefan (Gast)


Lesenswert?

FOSC nicht beachtet. Der Timer läuft mit
einem viertel des Systemtaktes.

von fetter_Homer (Gast)


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"

von Stefan (Gast)


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.

von fetter_Homer (Gast)


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 :-)

von Patrick B. (p51d)


Lesenswert?

Das ist von der Bauart her bedingt: So können fast alle Operationen in 
einem Takt gemacht werden.

Weitere Infos weiss ich leider nicht mehr, aber eventuell kann hier 
jemand etwas ausführlicher helfen.

MFG

von Martin S. (drunkenmunky)


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...

von fetter_Homer (Gast)


Lesenswert?

> Sicher, dass der Prescaler aus ist? Verstell ihn doch mal und schau was
> passiert.
Ja, der Prescaler ist sicher aus. Habe es eben nochmal ausprobiert...

von Ottmar K. (wil1)


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

von Helmut S. (helmuts)


Lesenswert?

Einfach so merken: Alles was an den Anschlüssen OSC1 und OSC2 hängt wird 
frequenzmäßig durch 4 geteilt.

von B. L. (b8limer)


Lesenswert?

Helmut S. schrieb:
> Einfach so merken: Alles was an den Anschlüssen OSC1 und OSC2 hängt wird
> frequenzmäßig durch 4 geteilt.

Absolut richtig. ~ Hintergrund
http://de.wikipedia.org/wiki/Befehlszyklus

von Frank K. (fchk)


Lesenswert?

Helmut S. schrieb:
> Einfach so merken: Alles was an den Anschlüssen OSC1 und OSC2 hängt wird
> frequenzmäßig durch 4 geteilt.

Das gilt hinauf bis zum dsPIC30F. Bei dsPIC33F/PIC24F/PIC24H ist es nur 
noch Faktor 2:1, bei dsPIC33E/PIC24E und PIC32MX 1:1.

fchk

von Michael H. (morph1)


Lesenswert?

Frank K. schrieb:
> dsPIC33E/PIC24E

leider nicht...

Zitat http://ww1.microchip.com/downloads/en/DeviceDoc/70616F.pdf Seite 
178:
FCY = Fosc/2

das 1:2 gilt, soweit ich die Prozessoren kenne, bis excl. PIC32, der ist 
als einziger 1:1

von usuru (Gast)


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

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.