Interupt INT0 geht bei Tiny25 nicht?

Gast #1347170
Lesenswert?

Hallo,

ich versuche den INT0 des Tiny25 in Betrieb zu nehmen, aber leider 
klappt es nicht. Mit dem INT0 will ich einen Puls ausmessen

Port vorbereiten..

DDRB  &= ~(1<<DDB0);  /* Pin PB0 als Eingang */
PORTB |= (1<<PB0);    /* internen Pull-Up an PB0 aktivieren */

/* Int0 steigende Flanke / INT0 enable PB0 */
MCUCR = 0x03;
GIMSK = (1 << INT0);
sei();

in der Routine sollte der Einsprung erfolgen wenn ein Flankenwechsel 
kommt...

SIGNAL(SIG_INTERRUPT0)
{
  if( MCUCR == 0x03) // Testen auf steigende Flanke
  {
  TCNT1 = 0; // Timer1 Reset
  TCCR1 = ( 1 << CS10 | 1 << CS12 );
  MCUCR = 0x02; // INT0 fallende Flanke
  return;
  }

  if( MCUCR == 0x02 ) // Testen auf fallende Flanke
  {
  TCCR1 = 0x00; // Timer1 Stoppen
  Pulsdauer = TCNT1; // Timer1 Wert = Pulsdauer
  MCUCR = 0x03; // INT0 auf steigende Flanke
  return;
  }
}

das gleiche hatte ich schon mit einem Tiny13 gemacht und da geht es ohne 
Problem, beim Tiny25 reagiert aber der Int nicht auf einen 
Flankenwechsel am Pin (mit Oszi nachgemessen..)

was mach ich falsch???

Gruss Patrick
Gast #1347192
Lesenswert?

Fehler über Fehler....

Patrick schrieb:
> ich versuche den INT0 des Tiny25 in Betrieb zu nehmen, aber leider
> klappt es nicht. Mit dem INT0 will ich einen Puls ausmessen

Feststellung: INT0 liegt auf PB2

> Port vorbereiten..
>
> DDRB  &= ~(1<<DDB0);  /* Pin PB0 als Eingang */
> PORTB |= (1<<PB0);    /* internen Pull-Up an PB0 aktivieren */

Feststellung: Auf PB0 liegt nicht INT0 sondern PCINT0

> /* Int0 steigende Flanke / INT0 enable PB0 */
> MCUCR = 0x03;
> GIMSK = (1 << INT0);
> sei();
>
> in der Routine sollte der Einsprung erfolgen wenn ein Flankenwechsel
> kommt...
>
> SIGNAL(SIG_INTERRUPT0)

In "meinem" Datenblatt nennt sich das "INT0". Und wenn ich mich nicht 
irre, ist SIGNAL veraltet.
Gast #1347224
Lesenswert?

Patrick schrieb:
> und wie bekomme ich mit ob es eine steigende Flanke oder fallende war?

Prüfe in der ISR den Zustand des Pins. Wen der Pin high ist, war es eine 
positive Flanke. Ist der Pin LOW, war es eine negative.

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