DCF77 Funksignal auslesen
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