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:
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.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; }
Gruß
cesupa
Lesezeichen