DCF77 Signal Testen per µC

OP #888093
Lesenswert?

Moin zusammen ich hab nun endlich mein DCF Modul bekommen und wollt 
jetzt einfach ma testen ob es funktioniert und da hab ich mir gedacht 
Das ich den DATA Out vom Funkmodul einfach an einen Eingang (bei mir 
PD2) meines Mega 32 hängeund mein Display soll jedes mal um 1 hochzählen 
wenn eis eine High sieht.


Nun Läuft die zahl aber rattenschnell hoch ca 100 ticks pro sekunde 
(geschätzt)

hier der c Code.

Kann ich das nicht so machen ?
1
int main(void)
2
{
3
  
4
  _delay_ms(200);      //3x 200ms Einschaltverzögerung
5
  _delay_ms(200);
6
  _delay_ms(200);
7

8
    lcd_init();        //Initalisierung des LCD
9

10
  stdtxt();        //Ausgabe des Standarttextes auf dem LCD
11

12
/*    
13
   TCCR0 = ( 1 << CS02 ) | ( 1 << CS00 );   // Vorteiler auf 1024
14
    TIMSK = ( 1 << TOIE0 );  // Interrupt bei Overflow vom  Timer 0
15
*/  
16
  
17
  PORTD = 0x00;
18
  
19
  while(1)
20
  {
21
    if(PD2>0)
22
    {  signal++;
23
    }
24
  
25
  set_cursor(0,2);
26
  char Out[80];
27
  sprintf( Out, "Count: %d ", signal );
28
  lcd_string( Out );
29

30
  }
Gast #888098
Lesenswert?

>soll jedes mal um 1 hochzählen wenn es eine High sieht.

Dein Programm macht genau das was Du geschrieben hast.
Aber das ist nicht was Du willst.
Du willst ja garnicht wissen wie oft Dein Programm sieht das das Signal 
High ist.
Mal abgesehen von den Polaritäten die solche Module mal so und mal so 
ausgeben, willst Du eigentlich wissen wie oft das Signal von Low nach 
High bzw. High nach Low wechselt.
1
  while(1)
2
  {
3
    while (PD2 == 0);
4
    signal ++;
5
   set_cursor(0,2);
6
   char Out[80];
7
   sprintf( Out, "Count: %d ", signal );
8
   lcd_string( Out );
9
   while (PD2 > 0);
10
  }

Oder so ähnlich.
#888119
Lesenswert?

Wasweisich wrote:

> Oder so ähnlich.

Vor allen Dingen 'so ähnlich' :-)

Seit wann wird denn ein Eingang so abgefragt
 while (PD2 == 0);

(Ich weiß schon: Du hast das vom Sebastian so übernommen. Trotzdem)
1
  while( ( PIND & PD2 ) == 0 )
2
    ;
3

4
  ....
5

6

7
  while( ( PIND & PD2 ) != 0 )
8
    ;


@Sebastian: Den Port auf Eingang schalten, ehe man ihn als Eingang
verwendet, wäre sicherlich auch nicht schlecht.

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