Im Thema duty cycle messen eines PWM-Signals bei 20kHz habe ich eingebettet in ein Arduino-Programm FreeRTOS verwendet.
Kannst ja mal schauen, ob Dir das irgendwie hilft.
Programme mit main() und for (;;) habe ich in setup()´ und loop()´ geändert und mit ein paar kleinen weiteren Anpassungen in der Arduino-IDE zur Funktion gebracht.