Hallo Leutle, ich habe ein kleines Problem. Ich habe vor, in meinem nächsten Projekt mehrere Anzeigemodule, bestehend aus je 8 7-Segment-Anzeigen und 4 PCA9532D, anzusteuern. Als Hauptcontroller kommt erstmal ein Atmega8 zum Einsatz, was sich aber in Zukunft ändern kann, wenn das Projekt größer wird. Das ganze soll auch einfach um weitere Module erweitert werden können, daher I2C zwischen Hauptcontroller und Anzeigemodulen. Jetzt ist es so, das ich mindestens 3 aber auch mehr von diesen Modulen verbauen möchte, und so auf mindestens 12 I2C-Slaves kommen würde. Leider ist beim PCA9532D nur bis zu 8 gleiche Bausteine möglich. Um das zu lösen würde ich jetzt auf jedes Modul einen µC setzen wollen, der seinerseits I2C vom Hautpcontroller empfängt, die Daten umsetzt und dann wieder über ein "Unternetzwerk" die Daten entsprechend aufbereitet an die 4 LED-Treiber auf dem Anzeigemodul selber weiter sendet. Ich dachte hierfür an einen Attiny im SO8-Gehäuse. Hier müsste ich ja zwei I2C-Schnitstellen herstellen. Einmal Slave vom Hauptcontroller, was ich über USI machen würde und einmal I2C als Master für die 4 PCA9532D auf dem Anzeigemodul. Der Tiny soll dann über I2C 4 byte empfangen (signed long) und diese dann über die LED-Treiber per I2C auf den 7-Segmentern anzeigen. Die Anzeige soll ca. 5-10 mal pro Sekunde aktualisiert werden. Hierzu meine Fragen: - gibt es hierfür vielleicht eine einfachere Idee/Alternative oder - lieber ein anderes Bussystem zwischen Hauptcontroller und Anzeigemodul - hat jemand ein Beispiel zur Hand, wie man I2C in Software auf einem Tiny implementiert ? (Links, AppNotes ?) - wird dafür ein Tiny13A ausreichend sein ? Bin für eure Meinungen dankbar ! Grüße, Marcel
Marcel P. schrieb: > - gibt es hierfür vielleicht eine einfachere Idee/Alternative Mehrere I2C Busse auf dem Master. Ein I2C Master per Bitbanging ist kein Hexenwerk. Oder du nimmst einem Controller, der mehrere Busse hat. Beitrag "Re: Soft I2C Master"
:
Bearbeitet durch User
A. K. schrieb: > Mehrere I2C Busse auf dem Master. Ein I2C Master per Bitbanging ist kein > Hexenwerk. Oder du nimmst einem Controller, der mehrere Busse hat. das fällt leider raus, da der "Hauptcontroller" nicht immer der gleiche ist und an einigen nur ein Bus zur Verfügung steht. Die Anzeigemodule sollen sozusagen "universell" sein.
Marcel P. schrieb: > - lieber ein anderes Bussystem zwischen Hauptcontroller und Anzeigemodul Wie soll denn die Kabelei aussehen? Entfernung, wieviele Nodes, ... Der Klassiker für einen Master wär ja RS485. Deine Displaynodes brauchen dann nur 1xUART (Hardware) und 1xI2C (Hard/Software). Da wären z.B. 2313 und 861 im Rennen.
:
Bearbeitet durch User
Das Kabel wird ein 6 poliges Flachbandkabel mit RM 2.54 und Micromatch-SMD-Verbindern. Die Anzeigemodule werden untereinander im Abstand von etwa 30mm angeordnet. Über das 6-polige Kabel gehen I2C (SDA, SCL), 5V, GND, und eventuell zwei Interrupt-Leitungen für weitere Module mit anderen Aufgaben. Maximale Buslänge sind in etwa 30 cm vom Hauptcontroller bis zum letzten Modul. Insgesamt etwa 5 bis 8 Nodes, je nach Ausstattung. Das ganze sizt zunächst in einem 3D-gedruckten Gehäuse und später dann in einem Alu-Profilgehäuse. EDIT: Bei RS485 wäre ich doch aber schon bei 4 Adern, da andere Module auf Anfrage auch Daten zurück senden sollen. Ausserdem brauche ich den UART des Hauptcontroller für Kommunikation mit anderen Devices...
Marcel P. schrieb: > EDIT: Bei RS485 wäre ich doch aber schon bei 4 Adern, da andere Module > auf Anfrage auch Daten zurück senden sollen. RS485 geht mit 2 Adern in beide Richtungen. Half-Duplex. Wobei es bei den paar Zentimetern auch ohne Transceiver geht (open drain per Diode).
:
Bearbeitet durch User
LIN wäre natürlich auch ein Leckerli, habe ich aber noch nie benutzt... Muss ich mir mal ansehen, vorallem weil ich hier einige LIN-Slaves (Sensoren, Schalter, etc) in greifbarer nähe habe... Aber dein Link zu den I2C-Soft-Master hat mir auch schon sehr geholfen !!! Wieso hab ich den vorhin beim Suchen übersehen ??
Marcel P. schrieb: > Ausserdem brauche ich den UART des Hauptcontroller für Kommunikation mit > anderen Devices... Die Diskussion läuft grad in eine unangenehme Richtung, weil du zwar nach Alternativen suchst, dann aber alle Alternativen auszuschliessen scheinst und nur I2C in Frage kommt.
Marcel P. schrieb: > Jetzt ist es so, das ich mindestens 3 aber auch mehr von diesen Modulen > verbauen möchte, und so auf mindestens 12 I2C-Slaves kommen würde. > Leider ist beim PCA9532D nur bis zu 8 gleiche Bausteine möglich. Dafür gibt es I2C-Multiplexer, z.B. den PCA9554. Bei Einsatz eines davon könntest du schon mal 64 von den PCA9532 ansteuern.
Marcel P. schrieb: > LIN wäre natürlich auch ein Leckerli, habe ich aber noch nie benutzt... > Muss ich mir mal ansehen, vorallem weil ich hier einige LIN-Slaves > (Sensoren, Schalter, etc) in greifbarer nähe habe... Ist aber auch UART-basiert und du schriebst doch, dass keine UART frei ist?!
@prx Das ist nicht meine Absicht ! Und das der Master kein nativen LIN hat und somit den UART (+ eventuell Tranceiver) dafür braucht - garnicht dran gedacht... SORRY... Und leider ist aktuell der UART belegt und SPI wird mir zu vieldrähtig bei mehreren Slaves. Der Rest geht wohl alles über den UART. Ich dachte, es fällt vielleicht jemandem eine andere alternative ein, aber scheinbar bleibt da nicht mehr viel. RS485, RS232, LIN, alle UART.. blöd... und außer I2C und SPI gibt es wohl keine anderen Busse am AVR, es sein denn man strickt sich selber was über Software... @Wolfgang Das wäre zwar auch eine Idee, aber dann wird die Verdrahtung wieder mehr, da jedes modul einen eigenen I2C bekommt... Dann könnte ich wohl auch SPI nehmen. Hmm.. so wie ich das sehe bleibt mir nur folgendes: - mehr Drähte akzeptieren - I2C-I2C-Bridge mit Tiny über Software - UARTm irgendwie frei bekomm
Marcel P. schrieb: > Ich dachte, es fällt vielleicht > jemandem eine andere alternative ein, Ulrich F. schrieb: > PCA9548A ;-)
Wie wäre es mit eine Atmega8 als Slave und Multiplexing, dann kannst du die Portextender sparen. Oder ein Tiny13A und Schiberegister.
@combie Mit dem PCA9548A hab ich aber das selbe Problem wie bei WOlfgangs Vorschlag. Viel mehr Kabel... @Karl das ist ja prinzipiell das was ich auch gedacht hatte. Tiny13 und aber statt Schieberegister die Portextender, die sind eben vorhanden ;-) Ich werde mich wohl an der Software-Implementierung von I2C auf dem Tiny bemühen... Danke für eure Meinungen !
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.