Teensy 4.x GPT-Timer im Free-Running-Modus aktivieren
English
Deutsch
In diesem Beispiel verwenden wir direkten Registerzugriff, um das GPT1-Timer-Modul bei 8 MHz-Zählfrequenz im Free-Running-Modus zu aktivieren. Free-Running-Modus bedeutet, dass der Timer einfach überläuft, sobald er 0xFFFFFFFF (maximaler 32-Bit-Wert) erreicht hat.
Timer konfigurieren
gpt1_config.cpp
CCM_CCGR1 |= CCM_CCGR1_GPT1_BUS(CCM_CCGR_ON); // Clock für GPT1-Modul aktivieren
GPT1_CR = 0; // Für Konfiguration deaktivieren
GPT1_PR = 3 - 1; // 24-MHz-Takt durch 3 teilen => 8 MHz
GPT1_CR = GPT_CR_EN /* Timer aktivieren */
| GPT_CR_CLKSRC(1) /* 24-MHz-Peripherie-Takt als Taktquelle */
| GPT_CR_FRR /* Free-Run, nicht zurücksetzen */;Vollständiges Beispiel
Dieses Beispiel funktioniert in PlatformIO ohne externe Bibliotheken, aber Sie müssen monitor_speed = 115200 in platformio.ini setzen, damit die serielle Schnittstelle mit der korrekten Geschwindigkeit gelesen wird.
teensy_gpt1_example.ino
#include <Arduino.h>
void setup()
{
// USB-Serielle Schnittstelle einrichten, damit wir den Timer-Wert ausgeben können
Serial.begin(115200);
// Timer aktivieren
CCM_CCGR1 |= CCM_CCGR1_GPT1_BUS(CCM_CCGR_ON); // Clock für GPT1-Modul aktivieren
GPT1_CR = 0; // Für Konfiguration deaktivieren
GPT1_PR = 3 - 1; // 24-MHz-Takt durch 3 teilen => 8 MHz
GPT1_CR = GPT_CR_EN /* Timer aktivieren */
| GPT_CR_CLKSRC(1) /* 24-MHz-Peripherie-Takt als Taktquelle */
| GPT_CR_FRR /* Free-Run, nicht zurücksetzen */;
}
void loop()
{
// Timer-Zähler alle ~100 ms ausgeben
Serial.println(GPT1_CNT);
delay(100);
}Check out similar posts by category:
Electronics, Embedded, Teensy
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow