www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DCF77 Signal Testen per µC


Autor: Sebastian B. (sebastian86)
Datum:

Bewertung
0 lesenswert
nicht 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 ?
int main(void)
{
  
  _delay_ms(200);      //3x 200ms Einschaltverzögerung
  _delay_ms(200);
  _delay_ms(200);

    lcd_init();        //Initalisierung des LCD

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

/*    
   TCCR0 = ( 1 << CS02 ) | ( 1 << CS00 );   // Vorteiler auf 1024
    TIMSK = ( 1 << TOIE0 );  // Interrupt bei Overflow vom  Timer 0
*/  
  
  PORTD = 0x00;
  
  while(1)
  {
    if(PD2>0)
    {  signal++;
    }
  
  set_cursor(0,2);
  char Out[80];
  sprintf( Out, "Count: %d ", signal );
  lcd_string( Out );

  }

Autor: Wasweisich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
  while(1)
  {
    while (PD2 == 0);
    signal ++;
   set_cursor(0,2);
   char Out[80];
   sprintf( Out, "Count: %d ", signal );
   lcd_string( Out );
   while (PD2 > 0);
  }

Oder so ähnlich.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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)
  while( ( PIND & PD2 ) == 0 )
    ;

  ....


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


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

Autor: Wasweissich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>(Ich weiß schon: Du hast das vom Sebastian so übernommen. Trotzdem)
;-)

Autor: Sebastian B. (sebastian86)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger wrote:
>
> @Sebastian: Den Port auf Eingang schalten, ehe man ihn als Eingang
> verwendet, wäre sicherlich auch nicht schlecht.


Hab ich doch das PORTD = 0x00;

kommt vor der while schleife. Ist doch richtig so oder ?



Gutes nächtle

gruss

Sebastian

Autor: Wasweissich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hab ich doch das PORTD = 0x00;
Nee, hast Du leider nicht.
PORTD ist das Datenregister, nicht das Datenrichtungsregister
Das heisst DDRB.

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.