mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Kann jeder I/O einen Interrupt auslösen?


Autor: Klaus Mehrle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Im Tutorial steht das eine Signaländerung an einem Pin von high auf low
oder umgekehrt einen Interrupt auslösen kann.
Kann jeder I/O-Pin einen Interrupt auslösen?
(Beim Mega16)



mfg

Klaus Mehrle

Autor: mmerten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfache Antwort beim Mega16 nein. Die einzelnen Bedingungen unter der
einzelne I/O Port's Interupts auslösen können sind im Datenblatt
ausführlich beschrieben. Mit den Eingängen INT0 und INT1 geht's in
jedem Fall.

Autor: Rolf F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Prinzip geht es schon, denn man kann ja den betreffenden Pin
regelmäßig abfragen (z. B. per Timer-Interrupt) und ggf. ein
Interrupt-Flag setzen und so einen Interrupt auslösen. Das wäre dann
aber indirekt und schlechter als das Flag direkt von einem
interruptfähigen Eingang setzen zu lassen.

Autor: mmerten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also nen Int-Flag setzen intern per Software geht beim AVR definitiv
nicht, sondern nur löschen.

Autor: Rolf F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso; so genau kenn ich AVR nicht.
Dann bleibt noch ein Software-Interrupt (über Timer-ISR), aber auch den
sollte man vermeiden.
Einen Quasi-Interrupt kann man ja auch so hinbekommen, dass man per
Timer-Interrupt häufig überprüft und die Aktionen bei einer
Eingangsänderung dann in der Timer-ISR abgearbeitet.

Autor: Klaus Mehrle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich nun mehr als 2 Taster anschließe, bei denen der Controller bei
einem Tastendruck sofort auf eine Unterroutine umschalten soll wie kann
ich das dann lösen?

mfg

Klaus Mehrle

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Mensch braucht minimal etwa 300ms, um auf etwas zu reagieren und
z.B. eine Taste zu drücken. Wenn dann durch einen Timerinterrupt
nochmal 10ms dazukommen ist das ja immer noch "sofort".


Um Fehlschaltungen zu vermeiden, sollte man die Tasten eh noch
entprellen (debouncen). Dazu findest Du z.B. von mir in der
Codesammlung ein Beispiel für bis zu 8 Tasten gleichzeitig.



Peter

Autor: guenter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Beim MEGA162 gibt 'nen sog. PIN-CHANGE-Interrupt
f?r alle pins am port A und am Port C (vergl. Datenblatt S. 82)
also f?r insgesamt 16 pins (PCINT15..0)

Hab's im Rahmen eines BASCOM-Programms im Einsatz !

Gru?

Guenter

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
einfach alle Eingänge, die überwacht werden sollen, über ein OR - Glied
an INT0 legen. In der Interrupt-Routine dann als erstes den Port lesen
und feststellen, welcher Eingang sich geändert hat.
Die einfachste Variante ein OR-Gliedaufzubauen klappt schon mit einer
Diode/Eingang.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

eine etwas andere Variante waere mit einem I2C Bus I/O Expander.

Mfg

Dirk

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.