[gelöst:]MCP23008 Interrupt

Begonnen von JensS, 31 Dezember 2017, 13:45:35

Vorheriges Thema - Nächstes Thema

JensS

Hallo,

neuerdings teste ich einen MCP23008 in Kombination mit einem LTV814 zur Spannungsüberwachung.
Gibt es die Möglichkeit, sofort eine Meldung zu erhalten, wenn ein Eingang geschalten wurde?
Mit Interrupt PortA1 habe ich bislang keinen Erfolg. Das Reading wird erst aktualisiert, wenn ich get ... aufrufe oder jede Minute polle.

Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

klausw

Hallo Jens,

an welcher Hardware läuft der MCP?
I2C ist nicht interruptfähig.
Das geht nur über einen zusätzlichen GPIO der interruptfähig ist.
Ohne diesen macht es keinen Sinn, polling ist keine gute Lösung.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

JensS

Hallo Klaus,

Danke für deine Antwort. Der /dev/i2c-0 läuft an einem NanoPi Neo2 mit Armbian Stretch.

Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

klausw

und wie has du das mit dem Interrupt gelöst?
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

JensS

B
Zitat von: klausw am 01 Januar 2018, 18:17:36
und wie has du das mit dem Interrupt gelöst?
Bisher noch gar nicht. Mir fehlt der Lösungsansatz, wie ich die Pins des I2C interruptfähig mache und Google konnte mir dabei nicht helfen. Künftig soll der/die MCP23008 am Arduino mit ConfigurableFirmata laufen. Ist der interruptfähig?

Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

JensS

#5
Nun hab ich's begriffen. Pin 8 des MCP23008 ist in der Lage, über eine zusätzliche Verdrahtung an einen Eingang (z.B. FRM_IN) eine Spannung zu senden, falls sich an einem definierten Interrupt-Eingang des MCP der Status ändert. Dazu habe ich folgendes definiert:define I2CExpander I2C_MCP23008 0x20
attr I2CExpander IODev I2CBus
attr I2CExpander Interrupt A1
attr I2CExpander InterruptOut separate_active-high
attr I2CExpander OutputPorts A0,A2,A3,A4,A5,A6,A7
attr I2CExpander Pullup A0,A1

Mit einem Notify auf den FRM_IN fange ich die Statusänderung ab und frage den MCP ab.
define Interrupt notify in1 get I2CExpander

Danke dir Klaus!

Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

klausw

wofür, du bist selbst drauf gekommen 8)
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280