I2C IO Port Expander Reagiert auf andere Adresse

Hi,
ich hab ein kleines Projekt bei dem ich 48 Pins schalten will. Aber auf Gund von Platzgründen n kleinern Chip verwenden muss. Daher einen Nano mit EasyC IO Port Expander MCP23017. (IO Expander MCP23017)
Wenn ich die Adresse 0x27 anspreche reagiert die Adresse 0x26 mit obwohl sie nicht angesprochen wurde.

#include "Wire.h"

void setup() {
  // put your setup code here, to run once:
  Wire.begin();
  SetUpIOPorts(0x27);
  SetUpIOPorts(0x26);
  SetUpIOPorts(0x25);
  SetUpIOPorts(0x24);
  SetUpIOPorts(0x23);


}

void SetUpIOPorts(int Adress)
{

  Wire.beginTransmission(Adress);
  Wire.write(0x00);
  Wire.write(0x00);
  Wire.endTransmission();
  Wire.beginTransmission(Adress);
  Wire.write(0x01);
  Wire.write(0x00);
  Wire.endTransmission();
}

void SetOIPort(int Adress, int A, int B)
{
  Wire.beginTransmission(Adress);
  Wire.write(0x12); // address port A
  Wire.write(A);  // value to send
  Wire.endTransmission();
  Wire.beginTransmission(Adress);
  Wire.write(0x13); // address port B
  Wire.write(B);  // value to send
  Wire.endTransmission();
}

void loop() {
  delay(1000);
  SetOIPort(0x27, 0xFF, 0xFF);
  delay(1000);
  SetOIPort(0x25, 0xFF, 0xFF);
  delay(1000);
  SetOIPort(0x26, 0xFF, 0xFF);  
  delay(1000);
  SetOIPort(0x27, 0x00, 0x00);
  delay(1000);
  SetOIPort(0x25, 0x00, 0x00);
  delay(1000);
  SetOIPort(0x26, 0x00, 0x00);
}

Die MCP23017 sind über den 4 Pin Stecker am I2C Bus angeschlossen. Und werden mit 5V direkt versorgt.
Wenn ich ein I2C Scanner sketch hochlade werden mir alle Adressen angeziegt:
15:50:14.111 -> I2C device found at address 0x23 !
15:50:14.111 -> I2C device found at address 0x24 !
15:50:14.111 -> I2C device found at address 0x25 !
15:50:14.111 -> I2C device found at address 0x26 !
15:50:14.111 -> I2C device found at address 0x27 !

Bin gerade etwas ratlos.

Wie stellst Du die Adresse der verschiedenen MCP23017 ein?

Jumper mit Lötpunkt auf der Platine setzen.
Sollte ja Theoretisch funktioniert haben sonst würde mir der I2C Scanner Sketch nicht 5 verschiedene anzeigen wenn ich 5 MCP23017 angeschlossen habe.

Ein Pullup Problem?
2K sind etwas "strong" an 5V

Du kannst es auch mit einer Library probieren.

Habe ich mit der Adafruite und der Soldered.
selbes Ergebniss. Bin dann auf manuell umgestiegen.
Um Fehler in der Lib aus zu schließen

Wie meinst ? Auf der MCP23017 Platine der Widerstand ?

Weißt du, was I2C-Pullup Widerstände sind ?
Die könnten dir Probleme machen, weil der Wert zu klein wird.
Teste es mal mit nur 2 Platinen.

Gute Idee. Ich Probier mal mit der Reihenfolge und Anzahl der Teilnehmer rum.

Seltsame Idee.

Hab mir gerade mal die Adress-Pins angesehen.

Lt diesen Link : https://edistechlab.com/mcp23017-io-erweiterung/?v=5f02f0889301

Sind bei dir ALLE Pins gesetzt. Das ist sehr unüblich da i.d.R. der Auslieferungszustand KEIN Adress-Pin setzt.

Schau mal auf deine Schaltung/Platine was bei den Adresspins los ist. Wo du die Findest zeigt dir der Link. Ich meine die grünen im Bild. !!!

Alternativ schau mal hier. : MCP23017 I/O-Expander mit dem Arduino
Gruß

Pucki

Wenn du nicht jeden Chip richtig adressiert hast, spinnt der i2c_scanner.

Gruß

Pucki

Wenn du schon versuchst Hilfe anzubieten, dann mach es doch auch mit den von @Vladislaw verwendeten Platinen. Nur dann macht das Sinn.

Wieso.

Die Aussage ändert das nix. Der einzige Unterschied ist, das er bei einen Modul halt die Jumper kontrollieren muss.

Allerdings würde ich bei so einen Modul dazu ein Messgerät benutzen um Lötverunreinigungen auszuschließen.

Gruß

Pucki

Ok, kein Problem, wenn du es nicht verstehst.

da hilft nur schrittweises vorgehen.

mach 5 saubere Bilder von deinen 5 Boards damit wir sehen wie deine Adressierungen aussehen.

ergänze ein Board nach dem anderen.
Sobald durch die Hinzunahme von einem Board es zu Schwierigkeiten kommt stoppst du,
du postest den den Sketch hier
zeigst deine Verkabelung ,
und beschreibst durch welches Board das Problem aufgetreten ist.