mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Externe Interrupts


Autor: Gerhard Humer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hab mal ne kurze Frage zu den externen Interrupts
INT0 u. INT1.
Hab mal ein bischen probiert und auch im Tutorial
nachgelesen.
Meine Tests :
Mcucr = &B00001010 'beide Interr. reagieren auf fallende Flanken
Mcucr = &B00001111 'beide Interr. reagieren auf steigende Flanken
Mcucr = &B00000101  Hier sollten laut Tutorial beide Interrupts auf jede 
Pegeländerung reagieren .
Machen Sie aber nicht.
Hat einer einen Rat für mich ????

Gruss Gerhard

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wenn Du jetzt noch verrätst, um welchen Chip es geht, könnte Dir 
sogar jemand helfen.

AVR ist nicht gleich AVR !


Peter

Autor: Gerhard Humer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Hab's auf AT90S8515 probiert.
Sollte später ev. mal auf einem AT90S2313 laufen.


Gruss Gerhard

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Option Änderung der Pegels gibt's beim 8515 nicht. Nur 
steigende/fallende Flanke und L-Pegel. Natürlich müssen die 
entsprechenden Flags für die Freigabe nicht nur im MCUCR sondern auch im 
GIMSK gesetzt werden und SEI nicht vergessen.

Autor: Gerhard Humer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Danke für die Antworten.
Kann mir einer verraten bei welchen AVR's diese Option
"Änderung des Pegels " funktioniert.


Gruss Gerhard

Autor: Zoltan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gerhard,

ich benutzte einen at90s4433. Der soll bei jeder Pegeländerung einen 
Interrupt auslösen. Das Komische ist, dass AVR-Studio beim Simulieren 
die INTF0 nicht setzt, sondern ich muss immer per Hand die Flagge 
anklicken. BUG??. Real läft es aber bestens!



so läfts in AVR-Studio nicht:

outp((1<<INT0), GIMSK);   // enable external int0 (PD2)
outp((0<<ISC01)|(1<<ISC00) , MCUCR);
            // any logical change creates interrupt0
...


wenn ich ISC01 setze (siehe unten), dann läft das ganze in AVR-Studio 
bestens.

outp((1<<INT0), GIMSK);   // enable external int0 (PD2)
outp((1<<ISC01)|(1<<ISC00) , MCUCR);
            // The rising edge of INT0 generates an interrupt request.
...

Bei Dir liegt es sicherlich am Chip, wenn der die Funktion garnicht 
kennt... Es würde mich interessiern, ob dieser Fehler von AVR-Studio 
schon mal jemandem aufgefallen ist?

Gruß
Zoltan

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist kein Bug. Bei Level Interrupt bzw. Level Change Interrupt wird der 
Interrupt zwar ausgelöst aber das entsprechende Flag nicht gesetzt. Ist 
allerdings im entsprechenden Datenblatt ausführlich dokumentiert.

Autor: Zoltan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, aber obwohl der Interrupt ausgelöst wird macht, Flagge hin oder her, 
AVR-Studio nichts der wirkliche MC aber schon.
???

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steht auch in der AVR Studio Doku, dass der Level Change INT nicht 
korrekt simuliert wird.

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.