DCF77 Interrupt Problem

Gast #3170353
Lesenswert?
• ▲
▼
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

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.

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.