Mitch64 schrieb:
Ich kann den Code nicht testen, muss erst mal ein Signal zum dekodieren haben.
Aber vielleicht kannst du mir sagen, ob du es etwa so gemacht hast.
Aus dem aktuellen und dem letzten Timerwert das Zeitintervall zu berechnen, und aus dem aktuellen und dem letzten Zeitintervall deren Differenz zu berechnen, habe ich genau so gemacht.
Allerdings mache ich das bei jeder Flanke, und nicht nur dann, wenn das letzte gemessene Intervall im Bereich von 1000 - 2500 µS liegt. D.h. die Abfrage Select Case TimerDelta würde ich weglassen.
Warum?
Stell Dir mal vor, nach dem Ende des Nutzsignal kommen erstmal Rausch-Wellen, die so hoch- oder niederfrequent sind, dass die Impulslängen außerhalb dieses Bereiches liegen - dann findet gar keine Auswertung statt, und der Controller merkt nicht, dass der Ton schon längst vorbei ist.
Da Rauschen (fast) jede Impulslänge produzieren kann, werden in meiner Anwendung alle Impulse ausgewertet, um nach dem Ende des Signals dieses Ende möglichst schnell zu erkennen.