28.02.2021, 16:19
Binse, Du kannst doch der Einfachheit halber mal Deinem uC das Signal von einem Signalgenerator zuführen.
Damit mal sicherstellen ob das Problem aus Deiner SW oder aus der Signalqualität rührt.
Ohne den Arduino zu kennen, aber so'n paar kHz sollten da eigentlich problemlos zu verarbeiten sein - so langsam wird der ja vermutlich auch nicht getaktet.
Ich sehe nicht mit welchen Typen Du in der ISR arbeitest. Am schnellsten sind uC's ja mit nativen Datentypen entsprechend der internen Bitbreite. Evtl. kannst Du die Ausführungszeit der ISR damit noch beschleunigen.
Ist die Hauptschleife zu langsam, dann solltest Du evtl ein Mini OS einbauen, bei dem in einem festen Zeitraster Tasks laufen können um damit sicherzustellen, daß die Ergebnisse aus der ISR bearbeitet sind, bevor der nächste Interrupt kommt.
DU kannst damit zeitkritisches von zeitlich unkritischem entkoppeln.
Damit mal sicherstellen ob das Problem aus Deiner SW oder aus der Signalqualität rührt.
Ohne den Arduino zu kennen, aber so'n paar kHz sollten da eigentlich problemlos zu verarbeiten sein - so langsam wird der ja vermutlich auch nicht getaktet.
Ich sehe nicht mit welchen Typen Du in der ISR arbeitest. Am schnellsten sind uC's ja mit nativen Datentypen entsprechend der internen Bitbreite. Evtl. kannst Du die Ausführungszeit der ISR damit noch beschleunigen.
Ist die Hauptschleife zu langsam, dann solltest Du evtl ein Mini OS einbauen, bei dem in einem festen Zeitraster Tasks laufen können um damit sicherzustellen, daß die Ergebnisse aus der ISR bearbeitet sind, bevor der nächste Interrupt kommt.
DU kannst damit zeitkritisches von zeitlich unkritischem entkoppeln.