Forum: Mikrocontroller und Digitale Elektronik PIC16F627A: 8-Bit-Timer und 10-Bit-PWM, wie macht er das?


von Jens (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

ich arbeite öfter mit dem PIC16F627A, der wie viele Controller ein 
8-Bit-System ist. Seine PWM aber läuft mit 10 Bit. Klar, die 2 Bit extra 
muss er irgendwo auslagern. Aber wo? Aus dem Datenblatt stammt das Bild, 
was ich in den Anhang gepackt habe.

Meine Frage: "2 bits of the prescaler" ist klar, aber was bitte ist der 
"2-bit internal Q clock"? Ist das der ominöse Grund, warum PICs mit 
F_OSC/4 arbeiten?

Wo kann ich mich weiter informieren?

Gruß
Jens

von holger (Gast)


Lesenswert?

>Seine PWM aber läuft mit 10 Bit.

Timer1 hat ja auch mehr als 16Bit.

von holger (Gast)


Lesenswert?

>Timer1 hat ja auch mehr als 16Bit.

Autsch;) Mehr als 8Bit.

von gaast (Gast)


Lesenswert?

Wie bereits am Bild erwähnt werden für die PWM zusätzliche zwei Bit 
hergenommen und bei einem Timerüberlauf hochgezählt, womit der Timer 
effektiv 10 Bit hat.

von usuru (Gast)


Lesenswert?

> Klar, die 2 Bit extra muss er irgendwo auslagern. Aber wo?

Lesen bildet: Datenblatt Page 57 bzw. Page 61, Kap 9.3.2, CCP1CON Bit 5 
und 4

von Jens (Gast)


Lesenswert?

@holger: Ja, stimmt, aber mich interessiert explizit der Timer2 weil ich 
aus dem Kommentar "Note 1" nicht schlau werde.

gaast schrieb:
> Wie bereits am Bild erwähnt werden für die PWM zusätzliche zwei Bit
> hergenommen und bei einem Timerüberlauf hochgezählt, womit der Timer
> effektiv 10 Bit hat.

Neuer Informationsgehalt: 0,0%.

usuru schrieb:
> Lesen bildet: Datenblatt Page 57 bzw. Page 61, Kap 9.3.2, CCP1CON Bit 5
> und 4

Naja, ich habe das DB ja auszugsweise gelesen, daher ja der Screenie ;-)

Aber genauer lesen solltest du vielleicht auch, denn CCP1CON<5:4> haben 
nichts mit dem Zähler zu tun, darin stehen nur die Duty-Cycle LSBs.

Kap 9.3.2 sagt mir so nichts, da steht was vom internen Referenzsignal, 
was zufällig zwei Bit weit ist. Es geht da nur um Komparatoren. Willst 
du mich erleuchten?

Gruß
Jens

von holger (Gast)


Lesenswert?

>@holger: Ja, stimmt, aber mich interessiert explizit der Timer2 weil ich
>aus dem Kommentar "Note 1" nicht schlau werde.

Der stellt nur die PWM Frequenz zur Verfügung.
Das Tastverhältnis stellt er nicht ein.

von Jens (Gast)


Lesenswert?

Ich glaube nicht, dass das stimmt, ehrlich gesagt. Der Timer2 wird ja 
schon benötigt, um festzustellen, ob der Pin RB3 momentan an oder aus 
sein soll, basierend auf dem Duty-Cycle-Wert, der extern eingestellt 
wird in den CCPR1L und CCP1CON<5:4>-Registern.

Irgendwas muss im PIC von 0..1023 zählen können, und es sieht so aus, 
also ob dies de Timer2 tut mit seiner 2Bit-Erweiterung. Aber was ist 
diese Erweiterung?

Gruß
Jens

von holger (Gast)


Lesenswert?

>Ich glaube nicht, dass das stimmt, ehrlich gesagt. Der Timer2 wird ja
>schon benötigt, um festzustellen, ob der Pin RB3 momentan an oder aus
>sein soll, basierend auf dem Duty-Cycle-Wert, der extern eingestellt
>wird in den CCPR1L und CCP1CON<5:4>-Registern.

Timer2 is an 8-bit timer with a prescaler and a
postscaler. It can be used as the PWM time-base for
PWM mode of the CCP module.

Timer2 stellt nur die
PWM Frequenz zur Verfügung. Nichts anderes.
Kein Tastverhältnis, keine ominöse Abfrage von RB3 oder
sonst was.

von Jens (Gast)


Lesenswert?

holger schrieb:
> Kein Tastverhältnis, keine ominöse Abfrage von RB3 oder
> sonst was.

Das meinte ich auch gar nicht.

Eine PWM läuft doch im Prinzip so, dass ein Timer hochläuft bis 1023 in 
unserem Falle hier und einfach jedes Mal geguckt wird, ob der Timer-Wert 
> DC-Wert. Wenn ja, dann schalte RB3 aus, ansonsten, wenn Timer-Wert <= 
DC-Wert, dann schalte RB3 ein.

Der DC-Wert steht, wie ich oben schon schrieb, in den CCPR1L und 
CCP1CON<5:4>-Registern.

Du hast selbst zitiert

holger schrieb:
> It can be used as the PWM time-base for
> PWM mode of the CCP module.

Das beudetet, dass der Timer2 irgendwann mal sagen können muss: 1020 
oder 557 oder 678. Halt alles über 255. Denn die "timebase" ist genau 
der "Timer-Wert" den ich in meinem obigen Beispiel meinte.

Nimmt der PIC dann einfach den Postscaler dafür?

Gruß
Jens

von Frank S. (herrschrader)


Lesenswert?

Q-Clock ist schon richtig.
Intern laufen pro Befehlszyklus 4 einzelne Schritte ab (Opcode fetch, 
instruction decoding und so weiter). Q-Clock ist dann der 
Oszillator-Takt, der 4 mal so hoch ist wie der Befehls-Takt. Ein 
interner Zähler läuft bei PWM dann mit dem echten Oszillator-Takt um 2 
zusätzliche Bits an Auflösung zu erzielen

von Jens (Gast)


Lesenswert?

Ah, jetzt verstehe ich mehr, danke Frank! Aber was genau ist dieser 
"zusätzliche Zähler"?

Gruß
Jens

von Frank S. (herrschrader)


Lesenswert?

Nix Genaues weiß man nicht.
Dieser "Zähler" ist nur für PWM da und kann sonst nicht ausgelesen oder 
sonstwie per Software manipuliert werden.
Wahrscheinlich stecken irgendwo zwei schnelle Flip-Flops im PIC, die den 
Zähler realisieren, aber das weiß nur Microchip.
Ich würde mir da keine großen Gedanken mehr drüber machen. Wenn du die 
Auflösung bei PWM brauchst, nutze es, sonst einfach ignorieren.

von Jens (Gast)


Lesenswert?

Naja, das hatte ich befürchtet ;-) Ansonsten müsste ich das mal bei 
Microchip nachfragen, interessiert mich wirklich.

Gruß
Jens

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.