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 !
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.
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.
Die Lösung war die 3.3V Leitung nicht mit zu führen.
Ich habe quasi in meiner I2C Bus Daisychain immer GND, SCL, SDA und 3.3V mitgeführt.
Das entfernen der 3.3V Leitung hat das Problem gelöst.
Keine Ahnung warum aber ich denke mal das es an den unterschiedelichen Potentioalen lag da jeder IO Expander eine eigene Spannungsquelle hat.
Und jetzt funktioniert es bei dir ohne Spannung an den Expandern ?
Wie soll man das verstehen, ohne ein Schaltbild von dir zu sehen ?
Mit welcher Magie gehst du da vor ?
Ja so ist es verständlich. Und ich frage mich, wieso überhaupt 3,3Volt, wenn die Expander mit 5Volt gespeist werden.
Aber ok, so ist es def. richtig. Keine zusätzliche 3,3Volt Versorgungsspannung an die Expander.
Nur ist mir nicht klar, warum du das mit dem Aufwand der zahlreichen Stepdown-Regler treibst.