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
>Seine PWM aber läuft mit 10 Bit.
Timer1 hat ja auch mehr als 16Bit.
>Timer1 hat ja auch mehr als 16Bit.
Autsch;) Mehr als 8Bit.
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.
> 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
@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
>@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.
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
>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.
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
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
Ah, jetzt verstehe ich mehr, danke Frank! Aber was genau ist dieser "zusätzliche Zähler"? Gruß Jens
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.