Hallo cesupa,

dein Proggi funktioniert noch nicht sauber:

Die Logik sollte z.B. so sein:

Alle 10ms wird der Eingang in der ISR abgefragt.
Ist der Pegel am Eingang gleich wie bei der letzten Abfrage geblieben, wird die Zählvariable inkrementiert und dann passiert nix mehr (Ende der ISR).
Hat sich der Pegel am Eingang geändert, dann ist eine Pause oder ein Impuls beendet und die Zählvariable wird dann mit den 4 Bezugswerten 800/900/1800/1900ms verglichen. Danach wird die Zählvariable auf Null gesetzt.

Die Auswertung der Bits passiert also NUR bei einer Pegeländerung! Bleibt der Pegel gleich, wir nur der Zähler erhöht.
Das heisst natürlich auch, dass du dir immer den letzten Pegel in einer Variable speichern must (wenn er anders als der vorherige war), um ihn beim nächsten Mal vergleichen zu können.

Wenn du das so machst, ist es auch egal, welchen Ausgang (invertiert/ nicht invertiert) des DCF-Empfängers du nimmst, weil jede Impuls-/Pausenlänge gemessen wird, also AUCH die Impulse 100/200ms. Die beachtest du aber einfach nicht.

Gruß Dirk