DCF77 probleme bei decodierung

Gast #1193956
Lesenswert?

Hallo, ich bin gerade dabei mir eine DCF77-Uhr mit LCD zu bauen. Leider 
bekomme ich das Bit-Signal nicht decodiert. Die Auswertung des Signals, 
das Finden der Startposition usw. funktioniert. Bei dem unten stehenden 
Quelltext-Auszug sollen die Signale von Sekunde 21-27 erfassen und 
anschließend auf das LCD ausgeben. Aber irgendwie funktioniert das 
nicht. Kann mir jemand einen Tip geben? Muss mir die funktion 
get_signal() etwas anderes liefern?
Die Funktion get_signal() liefert mir jede Sekunde eine 1 oder 0 als 
int.
1
char buffer;
2
unsigned char minute=0x00;
3

4
for (int i=1; i<=7; i++)
5
{
6
get_signal();       // sendet 1 oder 0         
7

8
minute |= signal;   // Signal in minute schreiben
9
minute >>= 1;       // Inhalt um eine Stelle verschieben
10
}
11

12
stunde >>= 1;       // 1x verschieben um auf 8bit zu kommen
13

14
utoa( minute, buffer, 10 );   // in ascii umwandeln
15
lcd_string(buffer);           // auf dem LCD ausgeben
#1193975
Lesenswert?

Kann das sein, dass >>= die Daten aus dem Byte schiebt? Ich würde es mal 
mit << probieren! Ausserdem kommen zuerst die niederwertigen Bits, 
sodass du am Schluss das Ganze noch umdrehen musst.
Andere Möglichkeit wäre, ins MSB zu schreiben und dann nach unten (>>) 
zu verschieben.

Helmut.
Gast #1196550
Lesenswert?

Ich habe jetzt eine Lösung: Warum nicht gleich so:

Die Funktion „get_signal() gab mir bei einem 1-Signal des DCF eine 1 
raus, bei einem 0-Signal eine 0. Die Funktion habe ich nun so 
umgeschrieben, dass sie mir bei einem 1-Signal des DCF eine 0x80 
ausgibt.

0x80 => 0b1000 000

Dieses Bit-Muster kann ich nun problemlos nach recht verschieben, sodass 
am Ende die Bits automatisch in der richtigen Reihenfolge in der 
Variablen stehen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren