mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupt auf Pegeländerung mehrerer Leitungen


Autor: Felix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute

Ich stehe vor dem Problem, dass ich von 6 Datenleitungen die Pegel 
überwachen will. Alle Leitungen haben normale 5V Logikpegel. Ziel ist es 
einen externen Interrupt am Atmel zu generieren sobald sich an einem der 
Leitungen ein Pegel von Low auf High oder High auf Low ändert.
Sehr einfach wäre das ganze wenn ein normaler Atmel 6 externe 
Interrupt-Eingänge hätte, aber da kann ich wohl lange warten bis Atmel 
sowas rausbringt...
Zweite Möglichkeit ist die Signale an einen der Ports zu leiten und die 
Pins dauerhaft in einer Schleife zu pollen. Das ist aber für meine 
Zwecke nicht machbar.
Dritte Möglichkeit an der ich jetzt auch schon rumgerätselt habe ist, 
alle 6 Leitungen irgendwie über Flip-Flops, NAND-Gatter, Zähler oder 
sowas ähnliches in der Art miteinander zu verbinden um somit zum Schluss 
ein einziges Signal zu generieren, welches sich ändert (von high auf low 
oder anders rum) sobald sich an einer der Leitungen was ändert.
Weiß jemand von euch an dieser Stelle weiter wie man so eine Schaltung 
aufbaut? Oder gibt es vielleicht noch eine vierte Möglichkeit an die ich 
noch nicht gedacht habe.
Ich danke euch schon mal.

Felix

Autor: Der Dude (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...was soll das denn werden?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Felix wrote:
> Sehr einfach wäre das ganze wenn ein normaler Atmel 6 externe
> Interrupt-Eingänge hätte, aber da kann ich wohl lange warten bis Atmel
> sowas rausbringt...

Oder Datenblatt lesen, alle neueren AVRs haben nen Pin-Change-Interrupt.

Aber wenn die Eingänge mechanische Kontakte sind, nimmt man besser ne 
Entprellroutine, die entprellt und flankenerkennt 8 Eingänge 
gleichzeitig.


Peter

Autor: Felix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter

Dass man den externen Interrupt so konfigurieren kann, dass er auf 
Pegeländerung reagiert ist mir schon klar.
Das Problem ist aber, dass ich eben nicht nur ein Signal zum Überwachen 
habe, sondern gleich sechs, oder in Zukunft vielleicht noch mehr. Es 
reicht aber, einen Interrupt auszuführen wenn sich eins der sechs 
Signale ändert. Ich müsste also diese Sechs Signale irgendwie 
zusammenfassen können, vielleicht so wie ich es oben beschrieben habe.
Vielleicht fällt euch ja noch was ein.
Danke schon mal.

Gruß,
Felix

Autor: Frank B_. (frank_b) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lies die Antwort von Peter nochmal genau.

Es gibt AVRs so vielen Interrupt-Eingängen. Beispiel: Tiny2313

lg, Frank

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Pin-Change Interrupt fasst alle Änderungen an den entsprechend 
konfigurierten Leitungen in einem Interrupt zusammen, entspricht also 
exakt deinen Anforderungen.

Natürlich kann man sowas auch mit externer Schaltung machen, das ist 
aber deutlich aufwendiger.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch einmal zum Mitlesen: neuere AVRs haben Pin Change Interrupt 
Erkennung an vielen oder allen Pins. Beim Tiny2313 zum Beispiel 8 Stück, 
am Mega168 sind es sogar 24. Reicht das?

Autor: Kallius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Such dir nen Atmel raus, an dem es Pins gibt, die mit PCINT0 - PCINT7 
beschriftet sind; soweit ich weiß, lösen die alle zusammen einen 
Interrupt aus und der Auslöser muss aus einem weiteren Register 
ausgelesen werden

Autor: Nitram L. (nitram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Felix wrote:
> ... Oder gibt es vielleicht noch eine vierte Möglichkeit an die ich
> noch nicht gedacht habe.

4.) Deine Datenleitungen an den AVR und parallel an einen PCF8574.
Wenn du den als Eingang betreibst, löst der PCF bei jeder Änderung an 
den Eingängen einen Interupt aus, den du mit dem AVR auswerten kannst...
Du benötigst aber I²C...

nitraM

Autor: Felix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Die Möglichkeit des PCINT war mir nicht bekannt, aber das ist genau die 
Lösung die ich brauch. Bin ich wieder ein Stück schlauer :-)
Dank euch nochmal.

Felix

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.