Forum: Mikrocontroller und Digitale Elektronik Interrupt-Probleme beim I/O-Expander MAX7318


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Peder (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe Probleme, beim MAX7318 (I/O-Expander mit Interrupt) den 
Interrupt-Pin (acitve low) richtig zu benutzen. Das Datenblatt spricht 
von einem Open-Drain-Ausgang, allerdings ohne nähere Infos. Im Internet 
habe ich gefunden, dass ein Open-Drain-Ausgang normalerweise einen 
Pull-Up benötigt, auf der MAXIM-Seite zum MAX7316 (nicht 7318) hingegen 
ist der Interrupt-Pin direkt am Mikrocontroller angeschlossen. Was 
davon ist der richtige Weg? Im Datenblatt zum MAX7318 steht nichts 
darüber.

Kurz etwas zu meinem Setup: Besagter Interrupt-Ausgang geht zu einem 
ATxmega128A1U-Pin, dessen interner Pull-Up aktiviert ist und der auf 
fallende Flanken reagiert. Ich habe sowohl mit als auch ohne 
zusätzlichen, externen Pull-Up-Widerstand (4k7) getestet.

Nun ist es so, dass die Spannung auf der Interrupt-Leitung zwar bei 3,3V 
startet, aber nach dem ersten Interrupt auf 0V bleibt und nicht mehr 
hochgeht. Hat dieses Verhalten schon mal jemand erlebt oder kann mich 
bei der Fehlersuche in die richtige Richtung lenken?


Danke und Grüße

Peter

von Karl M. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Du musst auch mit deiner Software den Datenblatt genau folgen:

"The open-drain interrupt output, INT, activates when one of the port 
pins changes states and only when the pin is configured as an input. The 
interrupt deactivates when the input returns to its previous state or 
the input register is read (Figure 9).

A pin configured as an output does not cause an interrupt.
Each 8-bit port register is read independently; therefore, an interrupt 
caused by port 1 is not cleared by a read of port 2’s register.
Changing an I/O from an output to an input may cause a false interrupt 
to occur if the state of that I/O does not match the content of the 
input port register."

https://www.maximintegrated.com/en/products/interface/controllers-expanders/MAX7318.html

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Peder schrieb:
> auf der MAXIM-Seite zum MAX7316 (nicht 7318) hingegen ist der
> Interrupt-Pin direkt am Mikrocontroller angeschlossen.

Es gibt µCs, die über integrierte Pullup-Widerstände verfügen.

von Peder (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich hatte zum Testen die Software reduziert und dabei auch das Auslesen 
der Input-Register auskommentiert. Das war es. Dadurch hat sich der 
Interrupt nicht mehr zurückgesetzt.

Danke!

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]
  • [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.