Hallo Ihr Lieben, frohes Neues!!
Ich hab da ein kleines Problem. Und zwar möchte ich anstatt einen Multiplexer (4051) die Porterweitetrung MCP23X17 verwenden. Am Besten mit SPI BUS, also 23S17. Der MUX schaltet mir 4 analoge Signale und 3 Tasterzustände auf den Arduino. Ich will den MUX jz kicken und die Porterweiterungen benutzen. Der MCP23x17 hat 2x 8 Ports. Damit bräuchte ich für die 4 Signale, 4x 8Bit ADC? Sehe ich das richtig?
Also im Ganzen bräuchte ich 4x ADCs, 2x MCP23x17 für die Signale und eine weitere (digital Pins sind alle belegt), für die Tasterzustände, richtig?
Der MCP23S17 (SPI BUS) besitzt genau so wie der I2c typ auch Adresspins (A0 - A2). Wofür sind die da?
Ich hab im Datenblatt irgendwas mit IOCON.HAEN im Register aktivieren und deaktivieren gelesen.. Aber durchsteigen tu ich net.
Ich weiss wofür die Adresspins im I2C Betrieb verwendet werden.
Kann ich nun mir die Adresse hier ebenfalls einstellen, wenn ich nicht genügend Slave Select Leitungen (Chip select) habe? Sie müssen ja aufjeden Fall iregendwie angeschlossen und dürfen nicht in der Luft hängen.
Also gleiches Prinzip wie bei I2C, oder wie sehe ich das? Wie aktiviere oder deaktiviere ich diese Funktion?
Wie aktiviere oder deaktiviere ich diese Funktion?
In dem du das Bit setzt!
Ist doch ganz offensichtlich und recht klar in dem Datenblatt beschrieben.
Die dortigen Worte akzeptieren und dann öffnet sich die Logik vor dir.
Ok, da der Groschen von alleine nicht fällt....
Hast du nur einen MCP23S17 im System, kann dir IOCON.HAEN egal sein, lass es auf dem Defaultwert, 0 stehen.
Hast du viele MCP23S17 im System und IOCON.HAEN ist nicht gesetzt, sprichst du immer alle Bausteine gleichzeitig an.
Das tut dann sicherlich nicht das , was du dir im Endeffekt wünscht, z.B einzelne Pins bespielen.
Außer du setzt beim ERSTEN ZUGRIFF IOCON.HAEN auf 1. Dann kannst du ab dem Zeitpunkt alle MCP23S17 einzeln über ihre Adresse ansprechen.
Das gilt aber nur für den I2C-Mode. SPI kennt keine Adressen in dem Sinne.
Da SPI nicht standardisiert ist, darf jeder Hersteller sein eigenes Süppchen kochen.
Hier eben eine Addressierung über den SPI Bus.
z.B. um /CS Leitungen einzusparen.
Oder um Register, von 8 Chips, in einem Schlag zu initialisieren.
Hmm Da war ich auch schon. Nur für I2c. Die Pins sind aber vorhanden und haben definitiv eine Verwendung. Sonst stände im Datenblatt "NC". Ich dachte mir vlt werden die ebenfalls als Adresspins verwendet, falls nicht genügend Slave Select's verfügbar sind.
Hab von Wiki eine "Sternverbindung" gefunden mit mehreren SS Leitungen. Ich dachte mir, man schließe die Slaves exakt so an wie bei der Sternverbindung zu sehen ist, d.h alle Parallel und benutzt nur die eine vorhandene SS leitung (benutze den UNO so nebenbei). Die Adressierung nun eben über A0 - A2 wie bei I2c.
Wie vorhin schon genannt kann man das Adressieren irgendwie im Register aufheben..
joar ab da an nur noch "Bahnhof".
combie:
Da SPI nicht standardisiert ist, darf jeder Hersteller sein eigenes Süppchen kochen.
Hier eben eine Addressierung über den SPI Bus.
z.B. um /CS Leitungen einzusparen.
Oder um Register, von 8 Chips, in einem Schlag zu initialisieren.
@hardy: es sind Address Pins, nur musst du halt zusätzlich die Addressierung akivieren, wenn du das benötigst.
Standardmäßig ist das bit 0 daher haben die Address-Pins keine Wirkung.