I²C Portexpander - 52_I2C_MCP23017.pm

Begonnen von Pf@nne, 26 März 2015, 19:59:29

Vorheriges Thema - Nächstes Thema

Pf@nne

Moin,

ich habe vor 2 Monaten mit dem ersten Prototyp für meine Hausautomatisierung mit FHEM begonnen.
Unter Anderem nutze ich dein Modul für den I²C MCP23017 Portexpander.

Vielen Dank dafür, prima Umsetzung mit allen unterstützten Features!

Ich habe jedoch noch ein Problem, irgendwie steigt die Kommunikation mit dem gewissen MCP nach einer Zeit aus.

Momentan habe ich ein ,,leeres" FHEM auf meinem PI2 laufen.
Hier läuft nur ein ,,at" der alle 30 Minuten den Port A0 für 5 Minuten einschaltet.
Nach einer Zeit (>2 Stunden) wird der Port im FHEM noch weiterhin ohne Fehlermeldung gesetzt,
jedoch nicht der Hardwareport A0.

Der I²C-Bus reagiert in der Konsole noch.

root@Raspberry203:~# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 21 22 23 24 25 -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Ein Schalten des Ports klappt jedoch in der Konsole erst nach erneutem beschreiben des IO-Registers,
dies sollte doch aus FHEM heraus schon gesetzt sein.

root@Raspberry203:~# i2cset -y 1 0x20 0x00 0x00
root@Raspberry203:~# i2cset -y 1 0x20 0x14 0xff
root@Raspberry203:~# i2cset -y 1 0x20 0x14 0x00


Ich habe nach einem "Ausfall" mal das IODIRA 0x00 (IO-direction) Register neu gesetzt.
Jetzt geht auch die Steuerung aus FHEM heraus wieder.

D.h. der MCP "verliert" sein IODIRA oder es wird umgeschrieben.
Ggf. könnte ein Spannungseinbruch der Versorgung das Löschen bewirken, halte ich aber für unwahrscheinlich.

Hat jemand vielleicht eine Idee was ich zur Eingrenzung des Problems noch testen könnte?

Gruß
Pf@nne
FHEM auf: DS415+ (Master), Raspberry Pi 2

Pf@nne

Gibt es eine Möglichkeit das IODIRA zu lesen und zu loggen, dann könnte ich sehen wann oder wer das Register ändert.
FHEM auf: DS415+ (Master), Raspberry Pi 2

klausw

Zitat von: Pf@nne am 27 März 2015, 05:57:15
Gibt es eine Möglichkeit das IODIRA zu lesen und zu loggen, dann könnte ich sehen wann oder wer das Register ändert.
naja, du könntest einen cron job anlegen, der über i2cget regelmäßig das IODIRA liest und mitloggt.
Oder das ganze über ein at im fhem machen.
du kannst auch im definierten Modul selbst (und zusätzlich im rpii2c modul) verbose auf 5 Stellen und schauen, ob es Unfug macht


Aber das Register sollte nicht verloren gehen.
Ich nutze das Modul MCP23008 (welches auf dem 23017 basiert seit einigen Monaten ohne Probleme)
Die Konfigurationsregister werden nur bei Attributsänderung oder beim Neustart geschrieben.

mit fallen spontan 2 Möglichkeiten ein:
1. ein weiterer Prozess, sei es etwas in FHEM oder ein anderes script, greift auch auf den MCP zu
2. die Versorgungsspannung ist nicht stabil

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

Pf@nne

Moin Klaus,

danke für deine Unterstützung!

Zitat2. die Versorgungsspannung ist nicht stabil
Ich habe mitlerweile herrausgefunden, dass auch nicht in FHEM definierte MCP´s ihre Register "verlieren"
Mit anderen Worten, die MCP´s haben sich aufgrund von Problemen mit der 3V3-Schiene resetet.....  :( ::)

Ich habe das Versorgungsproblem mitlerweile behoben, jetzt laufen die MCP´s (wie nicht anders zu erwarten!) problemlos.

Nochmal vielen Dank für das tolle Modul!


Gruß
Pf@nne
FHEM auf: DS415+ (Master), Raspberry Pi 2

Punkt

Hallo Pfanne,

ich  habe auch das Problem daß meine MCP23017 nach einiger Zeit nicht mehr korrekt reagieren.

Bei mir hab ich folgende Kombination:

- Schalter an einem Input am MCP
- Relais an einem Output am MCP
- Interrupt-Ausgang des MCP an einen Interrupt-GPIO meines Cubieboard gelegt

Wie hast du die Versorgungsspannung des MCP denn verbessert?
Hast du dazu evtl. einen Schaltplan?


Vielen Dank schonmal und
viele Grüße

Michael
FHEM auf LXD-Container (Ubuntu 24.04) mit 1wire-Bus und I2C-Extensions
Datenbank: influxdb
verschiedene "Satellitensysteme" mit ESP-8266

Pf@nne

Moin Michael,

Zitat von: Punkt am 18 Februar 2016, 12:22:01
- Relais an einem Output am MCP

ein Relais direkt am MCP ist vielleicht nicht so optimal, wie ist das entstört?
Nimm mal eine LED, hast du dann immer noch Resets?

Ich hatte meine Versorgung über einen FET geschaltet, der war nicht optimal angesteuert.
Mit einer "normalen" 3V3 über ein kleines Netzteil lief es dann problemlos.

FHEM auf: DS415+ (Master), Raspberry Pi 2

Punkt

Hallo Pf@nne,

ich habs in der Zwischenzeit hinbekommen.

Das Problem lag daran daß der Interrupt-GPIO nicht mehr korrekt funktionierte wenn man per shutdown restart FHEM neu gestartet hatte.

Mehr Details sind hier zu finden:
https://forum.fhem.de/index.php/topic,23164.msg426224.html#msg426224


Zitat von: Pf@nne am 18 Februar 2016, 17:04:11
ein Relais direkt am MCP ist vielleicht nicht so optimal, wie ist das entstört?
Nimm mal eine LED, hast du dann immer noch Resets?

...ich hatte mich da evtl. etwas missverständlich ausgedrückt:
Bei den Relais handelt es sich um Relaisboards welche mit 3,3V geschaltet werden können und mittels Optokopplern galvanisch vom Relais getrennt sind...


Viele Grüße

Michael
FHEM auf LXD-Container (Ubuntu 24.04) mit 1wire-Bus und I2C-Extensions
Datenbank: influxdb
verschiedene "Satellitensysteme" mit ESP-8266