www.mikrocontroller.net

Forum: Compiler & IDEs Interupt INT0 geht bei Tiny25 nicht?


Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Magnus Müller schrieb:
>> SIGNAL(SIG_INTERRUPT0)
>
> In "meinem" Datenblatt nennt sich das "INT0". Und wenn ich mich nicht
> irre, ist SIGNAL veraltet.

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#ISR

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aua.. schande über mein Haupt... stimmt ich hab den PCINT0 mit dem INT0 
verwechselt. Kann ich mit dem PCINT0 überhaupt einen Puls ausmessen?

Gruss Patrick

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Natürlich kannst du das. PCINT0 reagiert auf jeden Flankenwechsel .
D.h. der Interrupt wird sowohl bei 0->1 als auch bei 1->0 Wechseln 
ausgelöst.

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wie bekomme ich mit ob es eine steigende Flanke oder fallende war? 
geht nur mit dem INT0 oder?

Gruss Patrick

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gute Idee werde ich so machen... danke

Gruss Patrick

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.