I2C EEPROM von zwei ATmega's ansteuern

riesen

Mitglied
10. Sep. 2010
108
1
16
Hallo Bascom-Freunde

Für meine Heizungs-Datenerfassung möchte ich gerne die Daten in einem I2C-EEPROM 24LC512
speicher. Das klappt auch ganz gut. Die Daten werden von einem System geliefert, welches die
Temperaturen und das Grafik-LCD bedient. Für die Erfassung des Stromverbrauchs möchte ich
einen zweiten ATmega einsetzen, der aber die Daten in das gleiche 24LC512-EEPROM schreibt.

Wie kann ich die SDA/SCL-Signale von zwei Controllern bedienen? Welches IC dient mir hier als
Schalter, welcher Controller Zugriff hat?

Dankende Grüsse
Thomas
 
Hi Thomas,

Für meine Heizungs-Datenerfassung möchte ich gerne die Daten in einem I2C-EEPROM 24LC512
speicher. Das klappt auch ganz gut. Die Daten werden von einem System geliefert, welches die
Temperaturen und das Grafik-LCD bedient. Für die Erfassung des Stromverbrauchs möchte ich
einen zweiten ATmega einsetzen, der aber die Daten in das gleiche 24LC512-EEPROM schreibt.

Wie kann ich die SDA/SCL-Signale von zwei Controllern bedienen? Welches IC dient mir hier als
Schalter, welcher Controller Zugriff hat?

das nennt sich Multi-Master-Betrieb. Du benötigst keinen Schalter.

Sie mal in ...
THE I2C-BUS SPECIFICATION
VERSION 2.1
JANUARY 2000

Philips Semiconductors
Here are some of the features of the I2C-bus:

...

• It’s a true multi-master bus including collision detection
and arbitration to prevent data corruption if two or more
masters simultaneously initiate data transfer

...

The I2C-bus is a multi-master bus. This means that more
than one device capable of controlling the bus can be
connected to it. As masters are usually micro-controllers,
let’s consider the case of a data transfer between two
microcontrollers connected to the I2C-bus (see Fig.2).

This highlights the master-slave and receiver-transmitter
relationships to be found on the I2C-bus. It should be noted
that these relationships are not permanent, but only
depend on the direction of data transfer at that time. The
transfer of data would proceed as follows:

1) Suppose microcontroller A wants to send information to microcontroller B:
• microcontroller A (master), addresses microcontroller B (slave)
• microcontroller A (master-transmitter), sends data to microcontroller B (slave- receiver)
• microcontroller A terminates the transfer

2) If microcontroller A wants to receive information from microcontroller B:
• microcontroller A (master) addresses microcontroller B (slave)
• microcontroller A (master- receiver) receives data from microcontroller B (slave- transmitter)
• microcontroller A terminates the transfer.

Even in this case, the master (microcontroller A) generates
the timing and terminates the transfer.
The possibility of connecting more than one
microcontroller to the I2
C-bus means that more than one
master could try to initiate a data transfer at the same time.
To avoid the chaos that might ensue from such an event -
an arbitration procedure has been developed. This
procedure relies on the wired-AND connection of all I2C
interfaces to the I2C-bus.

If two or more masters try to put information onto the bus,
the first to produce a ‘one’ when the other produces a
‘zero’ will lose the arbitration. The clock signals during
arbitration are a synchronized combination of the clocks
generated by the masters using the wired-AND connection
to the SCL line (for more detailed information concerning
arbitration see Section 8).

Du kannst also zwischen den beiden Controllern Daten hin und hersenden und auch von beiden Controllern auf alle Pheripheriebausteine zugreifen.

Gruß
Dino
 
Hallo Dino
Ja nun, ob und wie die beiden Foren "intern" verlinkt sind, entzieht sich leider meinem Wissen. Ich finde es nicht
zwingend anrüchig, die Anfragen in beiden Foren zu platzieren. Wie ich so gesehen habe, hatt es da
einige Redundanzen. Eine böse, spamartige Absicht hatte ich ja nicht ....

Danke aber für deine Belehrung auch in Sachen I2C. Ich habe nicht zuletzt das Thema in beiden Foren platziert,
weil ich mit Bascom arbeite. Ob da Bascom die Arbitration macht konnte ich nicht finden, darum auch meine
idee, den Switch selber zu programmieren.

Nachtrag: Werde die Querverlinkung in Zukunft gerne so anwenden!!

Danke für deine Hilfe und Grüsse
Thomas
 
Hi Thomas,

Ja nun, ob und wie die beiden Foren "intern" verlinkt sind, entzieht sich leider meinem Wissen.
da ist nichts verlinkt. Ich bin lediglich in beiden (und noch ein paar anderen) Foren aktiv und klicker die ab und zu mal so nacheinander durch. Da fällt sowas natürlich auf.

Ich finde es nicht zwingend anrüchig, die Anfragen in beiden Foren zu platzieren. Wie ich so gesehen habe, hatt es da einige Redundanzen. Eine böse, spamartige Absicht hatte ich ja nicht ....
warum das verwerflich ist kannst du in meinem verlinkten Beitrag lesen. Dort sind auch zwei Links auf opensuse.org und ein excel-forum drin wo das super erklärt ist warum da bei anderen Leuten die Nackenhaare hoch gehen.

Wenn du das im richtigen Forum machst, dann kannst du mit etwas Pech gekickt werden.

Nachtrag: Werde die Querverlinkung in Zukunft gerne so anwenden!!
Mach es um Ärger zu vermeiden. Wenn du das Querverlinkst, dann wird da keiner rummosern. Du kannst auch in einem Forum fragen und wenn nichts kommt auf ein anderes Forum verlinken wo du die Frage nochmal gestellt hast. So lange du die Beiträge verlinkst ist alles gut. Dann weiß man woran man ist.

Aber nun zurück zum Thema ;)

Den Multi-Master-Betrieb hab ich noch nie eingesetzt. Da es in den Spezifikationen der I2C-Mutter (Philips) drinsteht sollte es auch gehen.

Gruß
Dino
 
Hallo zusammen!

Auf Grund des Crosspostings wollte ich zwar nichts dazu schreiben.....
aber mir kam da eine Idee.

Kann man die PCA9517 dafür nicht zweckentfremden? :hmmmm:
OK, es sind zwar eigentlich Leveltranslater, aber sie besitzten auch einen ENable-Pin. :wink:


Gruß,
Cassio
 
Hallo Dino

Viiiiielen Dank!! Habe auch was in der Art gefunden... aber eben, ob da Bascom auch mitspielt?

Ich bleibe dran und berichte hier....

Dankende Grüsse
Thomas
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)