Kann jeder I/O einen Interrupt auslösen?

Gast
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.
Gast
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.
Gast
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.
Gast
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
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
Gast
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
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.