Atmel/AVR-Timer
Berechne Prescaler, Preload und Timerzeit für klassische Atmel/AVR-Controller. Den passenden Code kannst du anschließend für BASCOM oder AVR-GCC übernehmen.
Deine Timer-Einstellung
Automatisch optimiert- Prescaler
- —
- Preload
- —
- Erreichbare Zeit
- —
- Abweichung
- — —
- Zählschritte
- —
- Zeit je Zählschritt
- —
Timerzeit aus Takt und Zählschritten
b = Bitbreite, P = Preload, N = Prescaler, fCPU = CPU-Takt in Hz. Die Formel ergibt die Zeit in Sekunden.
Dein BASCOM-Code
Übernehmen, Interruptcode ergänzen, loslegen.
So funktioniert die Berechnung
Der Rechner verwendet den normalen Timer-Überlauf: Von seinem Preload zählt der Timer bis 2 hoch Bitbreite. Ein Prescaler teilt dabei den CPU-Takt. Timer 0 und 2 haben 8 Bit, Timer 1 hat 16 Bit.
Timer 0 und 1 verwenden die Prescaler 1, 8, 64, 256 und 1024. Bei Timer 2 kommen 32 und 128 hinzu. Gewählt wird die kleinste Zeitabweichung; bei gleicher Genauigkeit der kleinere Prescaler. Grundlage sind klassische AVR-Timer wie beim ATmega328P. Andere AVR-Familien können abweichende Timer besitzen.
Die berechnete Zeit ist die reine Zählzeit. Taktabweichungen und die Verzögerung bis zum Nachladen in der Interrupt-Routine sind nicht enthalten. Das ist eine Überlaufberechnung, kein CTC- oder PWM-Rechner.
Ohne „Regelmäßig ausführen“ stoppt der Timer im Interrupt. Ohne „Timer sofort starten“ bleibt er zunächst angehalten; der Code zeigt, wie du ihn später startest. Die Beispiele konfigurieren den gewählten Timer neu. Verwende ihn nicht gleichzeitig für andere Aufgaben.
Register und Interrupts: ATmega328P-Dokumentation und avr-libc.
Idee und Umsetzung: Michael Helmert, RMC Sachsen e. V.