Hi an alle. Ich kann ja einen MCU z.B.: atmega168 eine I/O Expansion anschließen um weitere 16 Ports zur Verfügung zu haben. Kann ich auch mehrere I/O Expansions an einen MCU hängen, oder an eine I/O Expansion noch eine I/O Expansion. Mir gehen bei meinem Projekt nämlich langsam die Ports aus und das trotz I/O Expansion. :-) Vielen Dank.
Bei I2C kannst Du normalerweise mindestens 7 und bei SPI "beliebig" viele I/O-Expander dranhängen. Die gibts auch für LEDs u.ä. wo teilweise Tastverhältnisse usw. eingestellt werden kann. Schau mal bei Reichelt, RS oder ähnlichem... Grüße Mani
Mußst du die Datenrichtung umschalten können oder brauchst du feste Eingänge bzw. fest Ausgänge? Wie schnell sollen die steuerbar sein, wieviele brauchst du insgesamt etwa?
irgendwann wird es einfacher, gleich ganze Slave-µCs anzuhängen ;c)
El Nino schrieb: > Kann ich auch mehrere I/O Expansions an einen MCU hängen, oder an eine > I/O Expansion noch eine I/O Expansion. Die sind einfach kaskadierbar. Hier mal ein Layout mit 21 Stück 74HC595: Beitrag "Re: Programmer mkII gibt auf" Ne schöne GND-Plane und jedem IC seine 100nf-Pille. Peter
Peter Dannegger schrieb: > Die sind einfach kaskadierbar. > Hier mal ein Layout mit 21 Stück 74HC595: Da muß sich El Niño mal äußern, ob es im nun an Eingängen oder an Ausgängen mangelt und wie schnell er drauf zugreifen muß.
Danke für die Antworten. Ich brauche zu 90% Ausgänge. Eingänge nur ein paar. 3 LEDs und 1 Servo. Ich habe über Reichelt mir folgenden I/O Expander bestellt. Mit dem sollte es gehen, oder? http://www.reichelt.de/ICs-M-MN-/MCP-23016-I-SP/index.html?;ACTION=3;LA=5000;GROUP=A217;GROUPID=2914;ARTICLE=89338;START=0;SORT=artnr;OFFSET=16;SID=10TaM8qH8AAAIAABsUkGE60198dd367ec9d35847442490d2bdd51 Und wo schließe ich den an dem MCU an? Und wenn ich mehrere Expander anschließen möchte? Wo schließe ich dann einen 2ten und 3ten Expander an? Am MCU oder Expander hinter Expander? Schnelle Reaktionszeiten sind für mein Vorhaben keine notwendig. Mit den Slaves kenne ich mich leider noch weniger aus. :-)
Alle MCP23016 an SCL und SDA (TWI/I2C). 74HC595 würde man z.B. alle hintereinander kaskadiert an SCK und MOSI (SPI) anschließen.
Tip schrieb: > Alle MCP23016 an SCL und SDA (TWI/I2C). 74HC595 würde man z.B. alle > > hintereinander kaskadiert an SCK und MOSI (SPI) anschließen. Bedeutet das, dass ich einen MCP23016 mit einem Pin auf SCL und dem anderen auf SDA hänge? Wenn ich dann mehrere MCP23016 habe, dann muss ich diese ebenso auf SCL und SDA hängen? Oder meintest du, dass man nur 2 MCP23016 anschließen kann und damit jeweils einen an SCL und einen an SDA? Und wo muss ich am MCP23016 anschließen? Auch an SCL und SDA?
El Nino schrieb: > Ich habe über Reichelt mir folgenden I/O Expander bestellt. > Mit dem sollte es gehen, oder? > > http://www.reichelt.de/ICs-M-MN-/MCP-23016-I-SP/in... > > Und wo schließe ich den an dem MCU an? Man kauft nicht einfach irgendwelche ICs, wenn man keinen blassen Dunst hat, wie sie zu verwenden sind. Man schaut zumindest erstmal ins Datenblatt. Peter
Das würde zu lange dauern dir das alles zu erklären.Wieso muss das unbedingt diese IC sein?
Programist schrieb: > Wieso muss das unbedingt diese IC sein? Es war die einzige IC die ich bei Reichelt gefunden habe, deswegen habe ich mir diese mal bestellt. Sind andere besser und leichter handzuhaben?
Hallo, nimm doch einen PCF8574. Der hängt am i2c interface und ich glaube du kannst bis zu 7 Stück anschließen, dabei kannst du jeden Pin als I oder als O setzen. Er hat nur einen Nachteil: er ist relativ teuer, ca. 1€ ABER: Die Ansteuerung ist extrem simpel
schau dir das mal an, einfach mehrere parallel anschließen und einen einzelnen aktivieren.
der mcp23s017 hat 3 ID Pins die du auf high oder low setzt und damit eine HW ID festlegst. dann kannst du sogar spi ohne slave slect fahren sondern musst einfach nur das richtige device addressieren, das ist ganz praktisch! Damit kannst du halt max 2^3 = 8 mcp anhängen
El Nino schrieb: > Es war die einzige IC die ich bei Reichelt gefunden habe, deswegen habe > ich mir diese mal bestellt. Sind andere besser und leichter handzuhaben? Die ist gut, aber braucht spezielle software.Da muss man sich schon damit auskennen.
Programist schrieb: > Die ist gut, aber braucht spezielle software. die lib die ich hier aus dem forum geklaut hab ist urrr simpel und das teil extrem einfach anzusteuern. Wenn man sich die funktionen noch ein wenig umschreibt gehts auch mit der addressierung vermutlich ur simpel. musst dann halt 3 bit für den chip und 4 bit (16 IO Ports pro device) für den port verwenden, dH du kannst 128 IO Ports über einen 8bit int ansteuern :) theoretisch könntest du mit dem slave select dann auch noch eine kaskadierung von noch mehr mcp's vornehmen und die nochmal gleich addressieren und somit mit dem 8. bit die nächsten 128 ports ansteuern, wenns denn sein muss...
El Nino schrieb: > Es war die einzige IC die ich bei Reichelt gefunden habe, deswegen habe > ich mir diese mal bestellt. Keine Ausrede, bei Reichelt gibt es für 0,30 € den 74HC 595 für acht zusätzliche Ausgänge. -> Beitrag "Re: Mehrere I/O Expansions an einer MCU"
Hier ist noch was zu diesem Thema: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en022179
Arne Sachtler schrieb: > Hallo, nimm doch einen PCF8574. > Der hängt am i2c interface und ich glaube du kannst bis zu 7 Stück > anschließen, dabei kannst du jeden Pin als I oder als O setzen. > Er hat nur einen Nachteil: er ist relativ teuer, ca. 1€ > ABER: Die Ansteuerung ist extrem simpel Vielen Dank für deine Antwort. Kannst du mir sagen wie ich den dann genau ansteuer? Wenn ich z.B.: einen Taster an den Expander anschließen möchte. Eventuell ein Beispiel, damit ich dem ganzen besser folgen kann. Brauche ich dann auch für den PCF8574 eine Software so wie es mir für meinen zuvor ausgewählten MCP 23016-I/SP prophezeit wurde? Preislich wäre mir zwar 74HC 595 lieber, aber der kann nur Output soweit ich das mitbekommen habe. Oder? Hatte mich bei meinem vorherigen Post vertan. Ich brauche mehr Inputs als Outpus, da ich sehr viele Taster anschließen möchte. Somit ist mir deine Wahl des PCF8574 lieber. Und kann ich dann Expansion hinter Expansion hängen, oder hängen dann am MCU mehrere Expansions direkt dran? Danke für die Hilfe.
El Nino schrieb: > Preislich wäre mir zwar 74HC 595 lieber, aber der kann nur Output soweit > ich das mitbekommen habe. http://www.mikrocontroller.net/articles/Porterweiterung_mit_SPI Peter
du brauchst für alles was du an spi, i2c oder one wire hängst eine software... wie komplex die ist, ist immer die frage und die für den mcp ist eigentlich wirklich einfach! es ist ja net so das der avr das gerät erkennt und sagt "yay more ports!"
El Nino schrieb: > Preislich wäre mir zwar 74HC 595 lieber, aber der kann nur Output soweit > ich das mitbekommen habe. Oder? Ja und da du nur wenige Input brauchst nimmst du dafür deinen µC. Alle restlichen Ausgänge die nicht mehr dran passen kommen dann zu den Schieberegistern: Atmega168: 22 nutzbare Pins - 3 fürs Schieberegister. Dann hast du noch 19 Pins für Eingänge, Quarz und was du sonst noch dranhängen willst.
Sebastian B. schrieb: > du brauchst für alles was du an spi, i2c oder one wire hängst eine > software... wie komplex die ist, ist immer die frage und die für den mcp > ist eigentlich wirklich einfach! es ist ja net so das der avr das gerät > erkennt und sagt "yay more ports!" Und wo finde ich diese Software, mit welcher ich das ansteuern kann?
El Nino schrieb: > Und wo finde ich diese Software, mit welcher ich das ansteuern kann? Selber schreiben? Woher kommt denn die Software, die sich jetzt schon in Deinem µC befindet? Ansonsten, Beispiele hier im Forum und anderswo im Inet suchen und adapdieren. Oder halt jemanden für den Job bezahlen.
El Nino schrieb: > Und wo finde ich diese Software, mit welcher ich das ansteuern kann? meistens sind basis implementierungen der wichtigsten sachen im datenblatt des jeweiligen µC angegeben. wenn du nur mcp an deinen atmega hängen willst reichen die 3 SPI Ports aus um bis zu 8 anzusteuern, weil die ja ihre adresse hw-mäßig bekommen. dH wie schon oben erwähnt kannst du dir dann insgesamt 128+19 IO Ports basteln
Sebastian B. schrieb: > wenn du nur mcp an deinen atmega hängen willst reichen die 3 SPI Ports > aus um bis zu 8 anzusteuern, weil die ja ihre adresse hw-mäßig bekommen. > dH wie schon oben erwähnt kannst du dir dann insgesamt 128+19 IO Ports > basteln Hallo Sebastian, was rechnest du da? Wie kommst du ausgerechnet auf 128 Ports bei SPI? Meinst du I2C/TWI? Wenn man Bausteine einzeln über SPI dranhängst, braucht man pro Baustein eine Slave Select Leitung (direkte uC Pins oder aus einem Adressdekoder). Bei SPI lassen sich die Bausteine (z.B. 74xx595) aber kaskadieren, so dass man für "beliebig" viele nur insgesamt eine Ansteuerung braucht.
wie gesagt der mcp hat 3 pins auf denen ich eine adresse definieren kann. nacher kann ich per SPI sagen das ich genau diese adresse ansprechen will ohne einen slave select zu brauchen... bsp zum lesen:
1 | SPDR = SPI_SLAVE_ID | ((SPI_SLAVE_ADDR << 1) & 0x0E)| SPI_SLAVE_READ; |
mmn (ich kann mich aber auch irren) kann man dann jeweils 8 mcp's auf einen SS Pin hängen und so weiter. Die mcp's werden dann von 0x0 bis 0x8 addressiert und los geht der spaß! <Anz IO Register>*<Anz IO Pins>*<Anz MCP>=2*8*8 = 128 und das ohne SS! wir haben ur viele von den mcp's da, in i2c und spi aber das jetzt aufzubauen is ein bissi zach :D
Da der MCP23016 ja schon bestellt und mittlerweile angekommen ist, habe ich versucht mich etwas einzulesen um das Ganze zum laufen zu bringen. Aber leider versteh ich da nur Bahnhof. Hat schon jemand einen MCP23016 oder ähnliches angeschlossen und kann mir sagen welche Schritte notwendig sind? Oder eventuell ein Beispielcode? Hier ein paar Links, welche ich schon gefunden habe: http://www.bristolwatch.com/arduino/arduino_mcp23016.htm http://arduino-related.livejournal.com/1591.html http://www.instructables.com/id/Make-an-Amazing-MIDI-Controller/step6/I2C-IO-Expander/ http://www.gammon.com.au/forum/?id=10945 Vielen Dank.
Warum machst du es dir so kompliziert? Das reicht doch völlig aus: Samuel K. schrieb: > Atmega168: 22 nutzbare Pins - 3 fürs Schieberegister. Dann hast du noch > 19 Pins für Eingänge, Quarz und was du sonst noch dranhängen willst.
Leider nein. Mir stehen nur 18 Ports zur Verfügung, da ich die seriellen Ports brauche und abzüglich des Crystal, Reset, etc... Habe ein Display (6 Ports), 12 Buttons (12 Ports), 3 LEDs (3 Ports), 1 Servo (1 Port) und neu dazugekommen sind 4 Kodierschalter (16 Ports). Vorher waren es 22 Ports und nun brauche ich 38 Ports.
El Nino schrieb: > Hat schon jemand einen MCP23016 oder ähnliches angeschlossen und kann > mir sagen welche Schritte notwendig sind? Oder eventuell ein > Beispielcode? http://git.42.lefant.net/gitweb/reox/rf12.git/commit/84bdaacd9d1fb10aef7f9ab85d0c381c1f2ce4d6 schau dir mal den commit an, ansonsten auch das ganze projekt!
El Nino schrieb: > Habe ein Display (6 Ports), 12 Buttons (12 Ports), 3 LEDs (3 Ports), 1 > Servo (1 Port) und neu dazugekommen sind 4 Kodierschalter (16 Ports). > Vorher waren es 22 Ports und nun brauche ich 38 Ports. Sag bloß du nimmst für jeden Button einen Pin. Nimm wenigsten eine Matrix! Dann brauchst du nur 7 Pins. - 74HC595 -3 - Tastenmatrix mit 4x3 (12 Buttons) +5 - Kodierschalter über Matrix 4x4 -4 Zum Matrix bilden nimmst du das Schieberegister. 4Pins davon nutzt du für die Tastenmatrix und die Matrix der Kodierschalter. Am Avr brauchst du dann 3 (für die Buttons) und 4 (für die Kodierschalter) Pins + 3 für das Schieberegister = 10 Pins. Die Leds dann noch an das 595 und es passt. Was mit noch geschickterem Layout möglich ist zeig ich dir hier mal: Mikrocontroller Pin: Ausgänge: 1 KODIER_A, TASTER_1, LCD_1, LED_1 2 KODIER_B, TASTER_2, LCD_2, LED_2 3 KODIER_C, TASTER_3, LCD_3, LED_3 4 KODIER_D, TASTER_4, LCD_4 5 LCD_RS 6 LCD_EN 7 LED_GND 8 SERVO Eingänge: 9 KODIER_A, TASTER_1 10 KODIER_B, TASTER_2 11 KODIER_C, TASTER_3 12 KODIER_D 12Pins. Wenn du jetzt noch Tristate von µC nutzt, kannst du z.b. LCD_RS und LED_GND auf einen Pin legen. Damit könntest du für dein Projekt einen Tiny24/44/84 nutzen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.