Hallo,
ich wollte Adresspins von MSP23S17 benutzen und Verhalten von Chip ist
komisch: nur A2 wirkt, A1 und A0 scheinen egal zu sein. Ich habe zwei IC
ausprobiert, alles gleich.
Sind die beide defekt oder weiß ich etwas nicht?
Bei Init setze ich HAEN in IOCON auf 1. Seitdem sollte IC Adresse auf
A0-A2 unterscheiden. Aber: wenn ich A2 auf 0 halte, antwortet IC auf
Adressen 0 bis 3, wenn A2 = 1, dann von 4 bis 7. Dabei völlig egal, ob
A1 und A0 auf 0 sind oder auf 1.
Wo liegt Fehler? Hier ist gekürztes Testprogramm.
Schade!
Ich wollte mehrere mcp23S17 mit einem ~SS betreiben, mit verschiedenen
Adressen A0-A2. Aber solange nur A2 wirkt, kann ich höchstens zwei IC
auf einem ~SS hängen lassen. Dabei ist Fehler recht komisch, so bleibt
gewisse Risiko, daß irgendwann auch A2 nicht mehr wirkt... IC stammen
von Reichelt.
Ich weiß nicht, was hier besser zu machen ist: ein paar mcp23S17 bei
Conrad bestellen und genauso testen? Oder einfach für alle IC separate
~SS verwenden? Dann allerdings scheint in manchen Fällen 74HC595 besser
zu sein: nur 1 byte zu übertragen statt 3.
Ich habe mit verschiedenen Geschwindigkeiten ausprobiert. IOCON lässt
sich lesen lassen. HAEN steht auf 1. Für Sicherheit habe ich auch andere
Register abgelesen: alles stimmt.
Hallo,
hast Du die obligatorischen 100nF-Abblockkondensatoren am IC angebracht?
Sind A0...A2 direkt oder über Widerstände immer an GND oder +
angeschlossen?
Was machst Du mit dem Reset-Anschluß?
Kannst Du mal Exemplare eines anderen Herstellers testen? Vielleicht
sind die bisherigen Ausschuß?
Bei mir haben sie vor Jahren korrekt funktioniert, als ich die Adressen
eingestellt habe...
MfG
Christian S. schrieb:> hast Du die obligatorischen 100nF-Abblockkondensatoren am IC angebracht?
Ja.
> Sind A0...A2 direkt oder über Widerstände immer an GND oder +> angeschlossen?
Entweder an GND oder an Vcc.
> Was machst Du mit dem Reset-Anschluß?
Vcc.
Da IC ansonsten alles macht, die Ports arbeiten für IN und OUT, glaube
ich nicht, daß Reset an Power-on nicht funktioniert.
> Kannst Du mal Exemplare eines anderen Herstellers testen? Vielleicht> sind die bisherigen Ausschuß?
Ich dachte, die sind alle von Microchip. Macht sie noch jemand?
Ich dachte, bei Reichelt trifft man keine defekten IC wie bei Chinesen
per Amazon? Sollte ich ein paar von Conrad kaufen?
S. Landolt schrieb:> Vermutlich geschieht eben dies nicht - lässt sich aber nicht überprüfen,> da die Definitionen fehlen.
Ich habe auch IOCON gelesen und auf LCD angezeigt. Dafür dienen Funktion
mcp23s17_regzeigen und Macros MCP23S17_REGLCD. Ich habe auch alle andere
Register abgelesen, um sicher zu bleiben, daß IOCON gelesen wird und
nicht etwas anderes. Ergebnis bei IOCON ist nach Init immer "00001000"
Definitionen:
Hallo,
es gab mal ein Errata dazu:
ww1.microchip.com/downloads/en/DeviceDoc/80311a.pdf
Keine Ahnung, ob das auf Deine Chip-Revision zutrifft.
Ich habe nur 2 Stück am SPI-Bus auf Adresse 0 und 1, da ist A2 auf Low
und es läuft.
ICON hat 2 Adressen für das gleiche Register, 0x0A und 0x0B, es ist
egal, womit man es adressiert.
Gruß aus Berlin
Michael
S. Landolt schrieb:> Was passiert, wenn Sie in mcp23s17_init ldi temp3, MCP23S17_IOCON_1> schreiben statt ldi temp3, MCP23S17_IOCON> ?
Genial!!!!
Nun arbeiten alle Adressenpins!!!!
Ich habe falsche Definition gemacht, Bank verwechselt...
Nun aber spinnt etwas mit anderen Register. Obwohl ich IOCON_BANK auf 0
lasse, antworten die Register nur auf OLATA_1 und OLATB_1 und nicht auf
OLATA und OLATB. Ich muß noch irgendwo Fehler haben...
Aber vielen Dank! Wenigstens A0-A2 Pins arbeiten.
Hallo,
S. Landolt schrieb:> Derzeit wird mit> .equ MCP23S17_IOCON = 0x05> adressiert, mir scheint, es wurde bei IOCON Bank 0 und 1 verwechselt.
IOCON ist nach PowerOn/Reset auf 0x0a/0x0b weil Bank 0 aktiv ist,
richtig.
Gruß aus Berlin
Michael
Guten Abend!
Ich bin immer noch an Basteln mit MCP23S17.
Verhalten von IC ist trotzdem komisch...
Testprogramm:
1. HAEN = 1. MCP23S17 wird für diese Operation mit 0b01000000
angesprochen.
danach alle Operationen mit Rücksicht auf Einstellung von Pins A0-A2.
2. IODIR wo notwendig auf 0 (Ausgang).
3. unendliche Schleife: IODIR, IOCON, GPIO und OLATA werden gelesen und
auf dem LCD gezeigt. Dazwischen blinken zwei LEDs.
Wenn A2=0, alles einwandfrei.
Wenn A2=1:
Trotz Einsetzen wird HAEN als 0 gelesen. Auch IC antwortet auf alle
Adressen mit A2=1 (aber mit A2=0 antwortet IC nicht! ).
Wenn ich beim Starten A2=0 eine Weile halte und schalte A2=1 erst
während der Schleife, dann wird HAEN=1 gezeigt und Verhalten von IC wird
wie erwartet, d.h. nur eine Adresse wird erkannt. Dann natürlich blinken
LEDs nicht, da IODIR nicht eingestellt wird. Aber auf LCD wird alles
korrekt angezeigt...
Hantieren mit SPI-Geschwindigkeit hat nichts gebracht.
Korrektes Verhalten wurde erreicht, indem ich einfaches Schreiben in
Register durch Lesen - Modifizieren - Schreiben ersetzt hatte. D.h.
statt
Nun überlege ich, was war das eigentlich? :)
Warum so?
Kann das daran liegen, daß IC auf einem Kontaktfeld ohne Löten aufgebaut
wurde (aber mit Kondensator 100 n )?
Ich glaube, das innere Leben von MCP23S17 sollte kompliziert sein, da
Zustand von Pin A2, zum Unterschied von A1 und A0, irgendwo getriggert
sein sollte.