So ganz viel kann ich aus dem Codefragment nicht erkennen, da fehlt noch viel. Es wird wohl versucht die Zeit der flanken auszuwerten - im Prinzip kann das gut werden, aber so etwa wie ein ignorieren von Überschwingern kann ich da noch nicht erkennen.
Im Prinzip hat man bei der Auswertung viele Möglichkeiten. Wie man es anstellt hat auch einen Einfluss darauf wie leicht man Fehler erhält bzw. wie gut auch ein leicht gestörtes Signal noch erkannt werden kann.
Das klassische, eher einfache Verfahren ist es jeden Puls einzeln auszuwerten, und dann halt auf 0, 1 oder überlange Pause (= 59.Sekunde) zu entscheiden. Ggf. lohnt es sich die Grenzwerte an die Hardware und ggf. Empfangssituation anzupassen.
Etwas besser kann es werden, wenn man ausnutzt, das die Pulse alle im 1 Sekundentakt beginnen. Also erst einmal den Sekundentakt zu synchronisieren durch so etwas wie einen PLL in Software, und dann nur jeweils das Ende der Pulse bzw. das Signal in der Zeit am Anfang jeder Sekunde auszuwerten. Wenn es sein muss könnte man auch Daten von mehr als 1 Minute zusammenfassen und so ggf. einmal schlecht empfangene "Bits" in der 2./3. Minute besser bestimmen zu können.
Lesezeichen