Hi,

hab mir deine Libs jetzt mal angeschaut und teilweise versteh ichs auch.
Nur zum Verständniss: Du kannst dir da die einzelnen Werte aus der Union wieder rausziehen weil bei einer Union ja die einzelnen Werte übereinander auf dem selben Speicherplatz liegen. Somit ist dcf77_t.bits und die geschachtelte Struktur übereinander. Stimmt das so?

Aber leider ist mir nicht ganz klar, wie du die empfangenen Informationen in dcf77_t.bits reinschiebst.

Das hier müsste ja eine Pausenerkennung sein:
Code:
if ((duration > (PAUSE_900MS - PAUSE_DEVIATION))
		 && (duration < (PAUSE_900MS + PAUSE_DEVIATION))) {
			dcfbit = BIT_0;
			dcfstream.bits &= ~bitstream_mask;
			bitstream_mask <<= 1;
Wird eine 0 erkannt weist du dcfbit = 0b00000000 zu. (Warum? dcfbit hat doch nichts mit dcf77_t.bits zu tun)
Die nächsten zwei Zeilen mit dcfstream.bits und bitstream_mask sind mir vollkommen unklar. Woher kommen die 2 Variablen?
Was die zwei Zeilen ausführen hoff ich verstanden zu haben:

dcfstream.bits &= ~bitstream_mask;
UND - Verknüpfung von dcfstream.bits und invertiertem bitstream_mask

bitstream_mask <<= 1;
bitstream_mask um 1 nach links schieben und in bitstream_mask speichern


Danke schonmal für die Hilfe