mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DCF77 - Startbit erkennen - Hilfe


Autor: Rolf Krause (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte mit einem AVR 8515 das DCF Signal einlesen und auf einem LCD
ausgeben.

Das Einlesen der Daten ist kein großes Problem, da ich als
Signaleingang den T/C0 nutze. In einer Schleife wird der Zählerstand
abgefragt und erhöht dieser sich um eins (durch steigende Flanke) wird
0,15 sec. später der Status des Bits ausgelesen.

Leider habe ich noch kein richtige Lösung für die Startbiterkennung
gefunden.

Hat evtl. jemand einen Idee wie man die 59. fehlende Taktflanke
erkennen kann.

Vielen Dank
Rolf

PS: die schon veröffentlichten quelltexte, konnt ich leider nicht
wirklich verstehen

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn der Zähler grösser als 200ms (0,2s) ist, ist kein DatenBit
vorhanden. Ergo, Bit 59 ist aufgetreten.
Sonst mal in der Codesammlung suchen.
Gruß Rahul

Autor: Fiffi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Rolf,

ich habe das DCF Signal an einen Interrupt-Eingang angeschlossen,
welchen ich immer zwischen steigender und fallender Flanke umschalte.

Im Interrupt messe ich über einen Timer die Zeiten ...


Gruß

Fiffi

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Machs doch so wie ich, zähle einfach die Zeit mit einem Timerinterrupt
bis zum nächsten Impulswechsel.

Z.B. in einem Timerinterrupt von 50..100Hz kannst Du bequem in einem
Byte die Impulsdauer (100 oder 200ms) und in einem anderen Byte den
Impulsabstand (1s oder 2s) abzählen und auswerten.


Peter

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Boa, hab ich wieder unüberlegten Quatsch geschrieben...
Ich dachte an die gleiche Lösung wie Peter.
Timer bei Taktflanke starten, nach 150ms nachgucken, welches Signal
noch vorhanden ist.
Gleichzeitig zum ersten Timer einen weiteren starten, der erst beim
nächsten gültigen Impuls zurückgesetzt wird.
Der zweite Timer löst nach 1-2 Sekunden einen "Überlauf-Fehler" aus,
der anzeigt, dass Minute 59 angekommen ist...
Mit dem Wort "Timer" ist jetzt nicht direkt ein Hardware-Timer
gemeint, sondern eine Variable, die aufgrund eines Taktes (z.B. 100Hz)
herauf- oder heruntergezählt wird.
Gruß Rahul

Autor: Holger B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich helfe Dir mal:


// External Interrupt 1 service routine
// jede Flanke
interrupt [EXT_INT1] void ext_int1_isr(void)
{
 static unsigned int old_ms_count = 0;
 MeasureBit = MS_Count - old_ms_count;

 if(MeasureBit < 500) // also die Bitinformation (100 oder 200ms)
  {
     if(MeasureBit > 130) DCF77Bit = 1; else DCF77Bit = 0;
  }
  else
  {
   if(MeasureBit > 1500) sek_count = 0; // <--- Minute um, Startsekun
de
    }
  }
 old_ms_count = MS_Count;
}


// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
 TCNT0 = 256 - 125;  // 125kHz-Timer
 MS_Count++;  // jede Millisek
}

Gruss,
Holger

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.