Forum: Mikrocontroller und Digitale Elektronik DFC77 ISR-Problem


von Andy (Gast)


Lesenswert?

Hallo,
ich versuche gerade eine Funkuhr zu bauen und experimentiere ein 
bisschen mit dem DCF77-Modul von Conrad rum.

Wenn ich den benutzten ATMega8 mit folgendem Programm einsetzte, blinkt 
die Diode an PB0 im Sekundenrhythmus so wie sie soll (Empfangsmodul ist 
an PB1):

#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdint.h>


int main()
{

  DDRB   = (1<<PB0);
  PORTB = (1<<PB1);
  int8_t i=1;
  uint8_t t=0;

while(1)
{
  /*if(bit_is_set (PINB, PINB1)) PORTB |= (1<<PB0);
  else PORTB &=~ (1<<PB0);*/


  if(bit_is_set (PINB, PINB1) && i)
  {
    if(t) {PORTB |= (1<<PB0); t=0;}
    else  {PORTB &=~ (1<<PB0); t=1;}

    i = 0;
  }

  if(bit_is_clear (PINB, PINB1)) i=1;
}

  return 0;
}

Wenn ich jedoch möchte, dass Empfangsmodul eine ISR auslöst, 
funktioniert das nicht, wenn ich jedoch einen Finger an den PIN PD2 
halte fängt die Diode an zu leuchten, wie sie soll (Empfangsmodul an 
PD2, Diode an PC4):

#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
#include <avr/interrupt.h>
#include <avr/io.h>

volatile uint8_t t=0;

ISR(INT0_vect) {

    t=1;
    }

int main(void)
{

  //externer Interrupt
  MCUCR = (1<<ISC01) | (1<<ISC00);
  GICR |= (1<<INT0);

  sei();
  DDRC = (1<<PC4);

  while(1)
  {
    if(t==1)
    {
      PORTC |= (1<<PC4);
    }
  }
  return(0);
}

Und in beiden Fällen habe ich direkt den Ausgang des Empfangsmoduls am 
µC angeschlossen ohne zusätzlichen Widerstände oder so.
Ich verstehe nicht warum das Signal im oberen Code erkannt wird und im 
unteren nicht.
Ich hoffe mir kann jemand helfen.

Gruß
Andy

von Krapao (Gast)


Lesenswert?

Im ersten Fall hast du den internen Pull-up (PORTB = (1<<PB1);) an der 
Signalleitung (PB1) aktiviert. Wenn das DCF77 Modul z.B. einen Open 
Collector Ausgang (Ausgangsstufen Logik-ICs) hat, ist der auch 
notwendig. Im zweiten Fall fehlt der Pull-up.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.