Das bedeutet die Messung erfolgt in main() nebenher, ebenso das Speichern auf der SD-Karte, und bei jedem Interrupt werden die aktuellen Daten in einen Puffer geschrieben (das geht sehr schnell, kann also auch direkt in der ISR erfolgen)

Ich wage jetzt mal eine Prophezeiung wie das Ergebnis aussehen könnte:
(falls der Puffer in der ISR gefüllt wird)
- Du wirst keine Interrupts verpassen
- Du wirst am Ende genau so viele Daten auf der SD-Karte haben wie du möchtest
- Die Daten werden "ruckeln"

Das Problem ist nämlich, daß während dem Speichern keine Messungen durchgeführt werden können, da main() "blockiert" ist (durch die Speicherfunktion). Lösen kann man dieses Problem auf mehrere Arten:

- Messen und im Puffer ablegen erfolgt direkt in der ISR, das Speichern auf der SD-Karte asynchron in main(). Problem: lange Interrupts, und selbst wenn keiner verpasst wird, bleibt in main() kaum noch Rechenzeit übrig um die Daten zu speichern

- Interruptbasierte Messung (möglich, falls es nur eine PWM ist, oder die steigenden Flanken aller PWMs synchron sind). In diesem Fall braucht man die PWM an einem Interrupt-fähigen Pin. Bei einer steigenden Flanke wird ein Timer gestartet, bei einer fallenden Flanke wird der Timer wieder ausgelesen. Das ganze erfolgt komplett unabhängig von main(). Dann könnte man in der 25Hz ISR den jeweils aktuellen Messwert im Puffer ablegen, und den ganzen Kram asynchron aus main() heraus abspeichern.