DCF77 Interrupt Problem

Gast #3170353
Hallo,

ich versuche gerade das DCF77 Signal auszulesen und zu verarbeiten.

Meine Idee ist es zwischen steigende und fallender Flanke zu 
unterscheiden um eine Impulsdauermessung hunzubekommen.
Also wenn eine steigende Flanke erkannt wird, soll die Zeit gestoppt 
werden und wenn sie fällt wird die Zeit wieder angehalten, und je nach 
Impulslänge kann man dann ja sagen ob es eine 0 oder eine 1 ist. bzw. ob 
die Minute vorbei ist und eine neue beginnt.

Also ich will quasi auf steigende Flanke abfragen, falls erkannt: im 
interrupt umstellen das fallende flanken erkannt werden und das selbe 
umgedreht.

Letztendlich soll für den Zeitraum in der eine steigende Flanke erkannt 
wurde bis eine fallende Flanke erkannt wurde eine LED (an PORTC) 
leuchten.


Mein Code dazu:
1
#include <avr/interrupt.h>
2

3

4
int main()
5
{
6

7
  DDRC = 0xFF;
8

9
  DDRD &= ~(1<<2);  //PD2 als Eingang DCF77 Signal
10
  PORTD|= (1<<2);   //Pullup aktivieren
11

12

13
  GICR = 1<<INT0;                       // Enable INT0
14
  MCUCR = (1<<ISC00) | (1<<ISC01);      // steigende flanke
15

16
  sei();
17

18
    while(1){}
19
}
20

21
ISR(INT0_vect)
22
{
23
  cli();
24

25
  if((MCUCR & (1<<ISC00)) && (MCUCR & (1<<ISC01)))  // steigende Flanke erkannt
26
  {
27
    MCUCR = (1<<ISC01);
28
    PORTC = 0x00;
29
  }
30
  if((MCUCR & ~(1<<ISC00)) && (MCUCR & (1<<ISC01)))  // fallende Flanke erkannt
31
  {
32
    MCUCR = (1<<ISC00) | (1<<ISC01);
33
    PORTC = 0xFF;
34
  }
35
  
36

37
  sei();
38
}


leider klappt das ganz so nicht, die LED leuchtet durchgängig.

Was mache ich falsch?


Gruß Marcel

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 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.