Hallo, ich habe eine Uhr mit Hilfe eines Atmega328p und einem DS3231 (RTC) Modules gebaut. Die Kommunikation der beiden wird durch das I2C-Interface bewerkstelligt. Seit dem ist ein wenig Zeit vergangen und die Anforderungen haben sich geändert sodass die Uhr Internet fähig sein muss. Dafür habe ich mir den ESP-12N ausgesucht. Leider ist sämtliche Hardware die zur Anzeige der Zeit verwendet wird auf 5V ausgelegt und ich kann den Atmega nicht einfach durch den ESP ersetzten sondern müsste die ganze "Treiber" stufe neu dimensionieren. Die Internet-Schnittstelle wird eigentlich nur gebraucht um Steuersignale an die Uhr zu übermitteln. Deshalb dachte ich mir, dass ich den ESP als Master verwende und den Atmega als Slave. Das RX-TX Interface der beiden kann ich nicht verwenden, da dieses bereits verwendet wird ebenso wie das SPI. Deshalb kam ich zu dem Schluss, dass ich die Kommunikation auch hier über I2C machen möchte nur habe ich jetzt ein Problem. Der Atmega ist der Master von dem RTC-Slave und der ESP ist der Master vom Atmega Slave. Mir bekannt sind nur I2C Verwendungen mit einem Master und mehren Slaves. Jetzt habe ich das Problem, dass ich eine Hierarchie habe und ich weiß nicht wie ich diese abbilden kann. Hat jemand damit schon Erfahrungen gemacht ? Ist es überhaupt Möglich ? Oder kann ich einfach Munter alle Miteinander verbinden und die Kommunikation funktioniert weiter, da jedes Module schließlich über eine Adresse verfügt. Falls das Klappt wie sieht das mit Kollisionen aus ? Wenn der Atmega grade eine Request an das RTC-Module schickt während der ESP ein Steuersignal schickt ? Leider habe ich nicht die Resourcen hier um eine kleine Testumgebung zu bauen. Deshalb wäre ich wie gesagt froh über eure Erfahrungen. Viele Grüße
I2C kann man theoretisch mit mehreren Mastern betreiben. Die Master müssen den Multi Master Betrieb unterstützen und sowohl „Bus busy detection“ als auch Arbitrierung unterstützen. Da findet sich recht viel online ich meine da auch mal was für Arduino gesehen zu haben.
Die AVR Arduino Wire.h ist Multimaster fähig. Von Hause aus. Kann sowohl Slave, als auch Master Rolle spielen. Über die ESP Variante kann ich nichts sagen, außer, dass sie nur den MasterMode kennt, und eine Software Implementierung ist. Über einen Levelshifter, solltest du die Drei zusammenklemmen können.
Das einfachste ist, die RTC an separate Pins zu hängen. I2C lässt sich auch rein per Software machen, SPI auch. Man braucht also nicht unbedingt die Hardwareperipherie. SPI in Software ist einfacher als I2C in Software. VOM DS3231 gibts auch eine SPI-Version, nämlich DS3234. Die hängst Du an freie Pins, und dann ist der Hardware-I2C frei für die Kommunikation zum ESP. Wenn Du keine Pins mehr frei hast, nimm halt einen größeren AVR. Atmega644p und 1284 haben zwei UARTs, d.h. das wäre auch eine Möglichkeit. Zum Umsetzen von 5V I2C auf 3.3V I2C nimmst Du z.B. einen PCA9306 oder einen PCA9517. fchk
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.