Hallo, ich möchte grade den Timer0 eine PIC18F26K80 programmieren, aber dabei ist mir aufgefallen, dass der Takt dieses Timers immer der durch 4 geteilte Wert des eigentlichen Systemtaktes ist. Ich verwende den internen RC Oszillator (INTIO1 im CONFIG1H) Dabei kann ich den Takt am OSC2 Pin mit einem Oszilloskop messen. Im OSCCON Register habe ich die ICRF Bits auf 111 gesetzt, sodass laut Tabelle ein Takt von 16MHz anstehen sollte. Am OSC2 Pin kann ich allerdings immer nur einen durch 4 geteilten Takt messen. Auch der Timer läuft mit einem durch 4 geteilten Takt. Die CAN Einheit habe ich allerdings mit dieser Einstellung schon verwendet und die Berechnung der einzelnen Segment-Zeiten mit den 16MHz durchgeführt. Dieses hatte Erfolg, sodass dort die entsprechenden Zeiten richtig eingehalten wurden. Gibt es also noch einen Vorteiler, der immer den Takt durch 4 teilt und dann erst diesen zum OSC2 Pin und den Timern durchreicht? Ich habe leider im Datenblatt dazu nichts gefunden. Das Bild zeigt den schematischen Aufbau der Takteinheit des Prozessors. Vielen Dank. MfG
Bei den 8-bit PICs ist der Maschinenzyklus Takt immer Oszillatortakt / 4. Da steht aber auch deutlich bei dem Schaubild zu Timer 0 dran (siehe Anhang). Bei Timer 1 hast du die Möglichkeit den Oszillatortakt zu verwenden.
Bei den 8bitter PICs wird immer der Oszillator-Takt (Fosc) durch 4 geteilt und wird zum Fcyc. Und dieser Fcyc geht dann wahlweise an CLKOUT. Was du tun könntest: Wenn du den PLL anschaltest, hast du 16MHz * 4 / 4, also wieder Fcyc von 16MHz.
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.