DCF77 probleme bei decodierung

Gast #1193956
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
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
Die Variable "Signal" wird in der Funktion get_signal() verändert? 
(liefert 1 oder 0 zurück?)

Mein Vorredner hat recht mit >> schiebst du alles um eine Stelle nach 
rechts (also raus).

Alternative:
1
  minute |= (1 << i);

Kannst dir auch mal folgendes programm anschauen. Funktioniert bei mir 
recht gut.
Beitrag "AVR DCF-77 Codereview"

Grüße
Gast
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.