Teensy 4.1 Interrupts mit Multi-MHz-Geschwindigkeit mit TeensyTimerTool
English
Deutsch
Wie in unserem Beispiel Teensy 4.1 PlatformIO 2MHz Timer-Interrupt GPIO-Ausgabe gezeigt, können Sie TeensyTimerTool verwenden, um Multi-MHz-Timer-Interrupts zu erzeugen. In unseren Experimenten konnten wir GPIO-Toggling-Interrupts bis zu 4 MHz erzeugen:

Der Trick hier ist die Verwendung von std::chrono-Zeitliteralen. Das TeensyTimerTools PeriodicTimer-Beispiel zeigt uns nur, wie man Mikrosekunden-Auflösung verwendet:
periodic_timer_example.cpp
t1.begin(callback, 250'000); // 250ms
aber wir können einfach 250ns verwenden, um Nanosekunden-Auflösung zu erhalten:
periodic_timer_example.cpp
t1.begin(callback, 250ns);Hier sind unsere Beobachtungen, was funktioniert und was nicht:
- Multi-MHz GPIO-Toggling-Interrupts wie in unserem Beispiel gezeigt funktionieren nur auf
GPT1undGPT2, sie funktionieren NICHT aufPITundTMRx. Wir haben die genauen Gründe dafür nicht untersucht, und es könnte auch Wege geben, dies zu umgehen - Wie üblich darf der Interrupt nur eine kleine Anzahl von Befehlen enthalten. Wir verwenden
digitalWriteFast(), aber die Verwendung von direktem Registerzugriff wäre noch schneller.
Check out similar posts by category:
Electronics, Embedded, PlatformIO, 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