-
-
Erfahrener Benutzer
Fleißiges Mitglied
Der interne RC-Oszillator hat einen Temparaturkoeffizient im Pronzentbereich (s. Grafik "CALIBRATED 8MHz RC OSCILLATOR FREQUENCY vs. TEMPERATURE" im Datenblatt). Deine Messungenauigkeit von 1/1200 (ca. 1 Promille )liegt deutlich darunter. Der Unterschied beruht also wahrscheinlich auf Ungenauigkeiten des Oszillators. Dazu muss man wissen, das der Timer-Takt im Regelfall vom Prozessor-Takt abgeleitet wird.
Erste Maßnahme wäre es, den Prozessortakt über einen Quarz zu generieren (z.B. 1 MHz oder 8 oder 16 oder ...). Standardquarze haben eine Fehlertolaranz von 20 ppm, der Temperatur-Koeffizient liegt ebenfalls bei 20 ppm, ist also rd. 500 mal genauer als der interne RC-Oszillator.
Uhrenquarze von 32 kHz sind noch präziser (0,04 ppm Temperatur-Koeffizient). Sind aber häufig zu langsam für den Prozessortakt. Hier müsste man einen separaten Oszillator aufbauen (z.B. mit zwei NAND-Gattern) und den Timer über diesen externen Takt versorgen. Für den Prozessor-Takt reicht dann der interne RC-Oszillator.
Bei beiden Quarzlösungen ist zu beachten, das der Grundfehler in der Größenordnung von 20 ppm liegt. Wenn man hier genauer sein will, muss man dies über entsprechende Ziehkondensatoren oder durch Anpassung der Vorladewerts justieren.
Bei den höheren Taktfrequenzen muss man aber entweder den Prescaler einsetzen oder kleinere Zeiten (z.B. 1 mSec) messen und diese aufaddieren.
VG Red Baron
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen