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

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
Якщо ця стаття допомогла вам, будь ласка, подумайте про те, щоб купити мені каву або зробити пожертву через PayPal на підтримку досліджень та публікації нових статей на TechOverflow