Hallo,

ich hab mir jetzt mal den DCF-Empfängerbusatz von Conrad zugelegt und versuche nun, mit dessen Hilfe zunächst einmal nur die einzelnen Bits des DCF-Signals einzulesen und über die serielle Schnittstelle auszugeben. Ich glaube ich mache beim einlesen nur ein paar Fehler oder aber ich habe den Wikipedia Artikel zum DCF-Signal etwas falsch interpretiert.
Hier erstmal mein Code:

Code:
#include <avr/io.h>

#define BAUD 9600UL

#include "../classes/rs232/UART/UART.h"
#include "../classes/time/time.h"

int main(void)
{
uint8_t i=0;
uint8_t c=0;
char dcf[60];
dcf[0]='\0';

DDRC&=~(1<<PC0);		//EINGANG PC0
PORTC|=(1<<PC0);		//PULLUP aktivieren

uart_init();

while(1)
{
	if(i<=59)
	{

		while(!(PINC & (1<<PC0)))	//wenn Signal (LOW) kommt
		{
		 wait_msec(1);
		 c++;
		}

		if(c<=100)					//100msec == 0
		{
		dcf[i]='0';
		}
		
		if(c<=200 && c>100)					//200msec == 1
		{
		dcf[i]='1';
		}
		c=0;

	i++;
	}
	else
	{
	dcf[i]='\0';
	send(dcf);
	i=0;
	}
}

return 0;
}
Wikipedia habe ich so verstanden, dass wenn 100millisekunden ein LOW-Signal kommt, eine binärische 0 gesendet wird und ab 200millisekunden eine 1. Mein Problem ist nur, dass wenn ich das ganze laufen lasse fast immer die erste Stelle eine 1 ist und alle anderen Stellen eine 0. Was genau mache ich falsch? Kann mir bitte jemand sagen, wie man sowas am Besten machen könnte.

Gruß
cesupa