Teensy 4.1 interrupts на multi-MHz speed з використанням TeensyTimerTool

Як показано в нашому прикладі Teensy 4.1 PlatformIO 2MHz Timer interrupt GPIO output, ви можете use TeensyTimerTool, щоб generate multi-MHz timer interrupts. У наших experiments ми могли generate GPIO-toggling interrupts до 4 MHz:

Oscilloscope trace of Teensy 4.1 generating 2 MHz GPIO output via timer interrupts

Trick тут полягає в тому, щоб use std::chrono time literals. TeensyTimerTools PeriodicTimer example лише показує нам, як use microsecond resolution:

periodic_timer_example.cpp
t1.begin(callback, 250'000); // 250ms

але ми можемо просто use 250ns, щоб obtain nanosecond resolution:

periodic_timer_example.cpp
t1.begin(callback, 250ns);

Ось наше спостереження, що працює, а що ні:

  • Multi-MHz GPIO-toggling interrupts, як показано в нашому прикладі, працюють лише на GPT1 та GPT2, вони НЕ працюють на PIT та TMRx. Ми не investigate precise reasoning за цим, і також можуть бути ways to
  • Як звичайно, interrupt має містити лише small number of instructions. Ми using digitalWriteFast(), але using direct register access було б ще швидше.

Дивіться схожі статті за категоріями: Electronics Embedded PlatformIO Teensy