Interrupt für 8 Eingänge

OP #736540
Hallo,
mir stehen 8 digitale Eingänge. Nun möchte ich, dass bei einer Änderung 
eines einganges ein Interrupt ausgeköst wird. Wie lässt sich sowas 
realisieren. Wenn möglich sollte es auch noch platzsparend sein. Ich 
habe schon daran gedacht alle Eingänge miteinander zu vergleichen und 
falls ein Unterschied da ist soll das Ganze dann am Interrupts Port des 
Mikrocontrollers einen Interrupt auslösen.
Gast
Immer dieser Glaskugelverschleiß...
Welcher Controller?
Beim AVR haben neuere Typen einen PinChange-Interrupt. Egal, welcher Pin 
seinen Zustand ändert, es wird ein Interrupt ausgelöst. Es läßt sich 
auch einstellen, welche Pins den Interrupt auslösen dürfen.
( Siehe Datenblätter z.B. zum ATMega 48/88 )

Gruß
Jadeclaw.
Hallo,

wenn ein zusätzlicher Baustein nicht stört, könntest du einen 
I2C-I/O-Expander PCF8574 nehmen.
Dieser gibt ein Signal, wenn sich der Zustand seiner I/O-Pins ändert. 
Wenn ein Interrupt ausgelöst wurde, kann der µC die Eingänge seriell 
auslesen und auf eine Änderung vergleichen.

Gruß,
Alexander
Geoffrey M. wrote:
> Das ist ein Atmega8. Der hat keinen Pin-Change Interrupt. Habe schon
> dran gedacht eine Attiny dafür zu nehmen aber das nimmt dann schon ganz
> schön viel Platz weg. Gibts noch eine kleinere Lösung?

Ja, der ATmega88.


Peter
OP
Wie gesagt. Es handelt sich bei meinem Controller um einen ATmega8. Es 
sind 8 Eingänge an einem Port angeschlossen(Ob Taster oder nicht spilt 
keine Rolle). Wenn sich nun der Zustand von nur einem Eingang ändert, 
soll ein Interrupt ausgelöst werden.
Gast
Mit einem Oder IC, alle Eingänge zusammen schließen und dann auf den 
INT-Port des Controllers...

Warum musst du Taster als Interrupt abfragen? Reicht es nicht im 
Pollingverfahren?
Gast
Was man Dir zu sagen versucht ist, dass Du den Mega8 8 durch einen 
pinkompatiblen Mega88 ersetzen kannst. Alternativ kannst Du Deinen 
Eingängen ein paar Logicgatter vorschalten und die Veränderung der 
Eingänge an die 2 ext. Interrupteingänge des Mega 8 weiterreichen.
Geoffrey M. wrote:
> (Ob Taster oder nicht spilt
> keine Rolle).

Das ist ein Irrtum, das spielt nämlich eine verdammt große Rolle. Taster 
prellen nämlich und müssen daher ganz anders abgefragt werden als 
elektronisch (digital) generierte Impulse.

...
Geoffrey M. wrote:
> Ich werde den Controller jetzt durch einen Amega88 ersetzen. Damit hat
> sich dann zusätzliche Beschaltung auf der Platine auch erspart.

Na dann viel Spaß. Taster prellen nämlich auch am Mega88. Dagegen hilft 
der Pin-Change-Interrupt auch nicht.

Viel Erfolg...

...
wenn hier schon so fröhlich über Interrupts philosophiert wird hätte ich 
auch mal ne frage!
ich arbeite mit dem LPC936, habe 5 Tasten und einen Schalter.
 der Port 0 am LPC 936 ist für den Kyboardinterrupt vorgesehen. Jetzt 
möchte ich meine Menüsteuerung mit den fünf Tasten bedienen. Der 
Inerrupt 7 wird ausgelöst wenn ich eine Taste betätige.
Das Problem das ich habe ist das ich nicht bestimmen kann welche Taste 
nun betätigt wurde um dies entsprechend auszuwerten.
Ich habe das Buch vom Michael Baldischweiler doch daraus kann ich dies 
nicht entnemen. Wenn nu einer sich mit dem Kyboardinterrupt auskennt, 
möge er mir doch bitte einen Tipp geben damit die erfolglose 
rumprobiererei einende nimmt.
@ Markus Spitznagel (e-moler)

>ich arbeite mit dem LPC936, habe 5 Tasten und einen Schalter.
> der Port 0 am LPC 936 ist für den Kyboardinterrupt vorgesehen. Jetzt
>möchte ich meine Menüsteuerung mit den fünf Tasten bedienen. Der
>Inerrupt 7 wird ausgelöst wenn ich eine Taste betätige.

Das ist nur sinnvoll, wenn der Prozessor im Sleep Mode ist um Strom 
zu sparen. Normalerweise werden Tasten zyklisch im Timerinterrupt 
gepollt.

Entprellung

>Das Problem das ich habe ist das ich nicht bestimmen kann welche Taste
>nun betätigt wurde um dies entsprechend auszuwerten.

Nein? Wie wäre es damit, einfach den Port auszulesen?

>möge er mir doch bitte einen Tipp geben damit die erfolglose
>rumprobiererei einende nimmt.

Mal in Ruhe denken.

MfG
Falk

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 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.