Heyho,
ich bin gerade dabei, an einen uController ein DCF77 Empfänger-Modul
anzuschließen. Das klappt auch alles wunderbar. Über UART(meine
Debug-Schnittstelle) sehe ich auch, dass ich die Daten richtig empfangen
habe. Nur der entsprechende C-Code dazu schaut "schrecklich" aus. Gibt
es irgendwelche Tipps, wie man den vereinfach könnte?
DCF77 sendet in 1min 59Bits, die ich in ein Array(dcf77_rx[59)]
speichere.
Um jetzt z.B. die Parity-Bits bzw. feste Bitwerte zu überprüfen, ob ich
alles Richtig empfangen habe, schaut mein Code so aus:
1 | if((dcf77_rx[0] == 0) && (((dcf77_rx[29]+dcf77_rx[30]+dcf77_rx[31]+dcf77_rx[32]+dcf77_rx[33]+dcf77_rx[34]+dcf77_rx[35]) % 2) == 0) && (((dcf77_rx[21]+dcf77_rx[22]+dcf77_rx[23]+dcf77_rx[24]+dcf77_rx[25]+dcf77_rx[26]+dcf77_rx[27]+dcf77_rx[28]) % 2) == 0) && (dcf77_rx[20] == 1))
|
2 | {
|
Oder um das Datum(BCD-Codiert) in Dezimalzahl umzuwandeln
1 | date_day = dcf77_rx[36] + 2*dcf77_rx[37] + 4*dcf77_rx[38]+ 8*dcf77_rx[39] + 10*dcf77_rx[40] + 20*dcf77_rx[41];
|
Kann man das irgendwie vereinfacht/leserlicher schreiben/darstellen?