-
        

Ergebnis 1 bis 7 von 7

Thema: 2 I2C Buße an einen µC

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.04.2007
    Beiträge
    114

    2 I2C Buße an einen µC

    Anzeige

    Hallo zusammen,
    kann ich 2 I2C Buße über einen µC an 2 verschiedenen Ports laufen lassen?
    Und zwar will ich mehrere (9 oder 10) DS1631 Temperatursonoren über I2C auslesen, allerdings sind aufgrund der 3 Adressbits nur 8 Sensoren möglich.

    Vorweg, ich nutze die I2C Libary von Peter Fleury.
    Ich hab mir folgendes überlegt:
    Der SDL & SCL sollen Beispielweise an PB0 & PB1 und die 2. SDL & SCL Leitungen an PD0 & PD1 angeschlossen werden.
    Die Deklaration der Ports & Pins steht in der "i2cmasterPB.h" und in der "i2cmasterPD.h"

    Oder muss ich dafür auch noch alle anderen Variablen wie z.B. „i2c_start“ in „i2c_startPB“ und „i2c_startPD“ usw. ändern?

    Danke schon mal

    Gruß Hannes

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.09.2006
    Ort
    Hamburg
    Alter
    35
    Beiträge
    987
    Hi du könntest entweder einmal I²C ins Sw realisieren.

    oder du baust ne Umschaltung das die einfach 2 Stränge machst die du dann dementsprechend auf die schnitstelle schaltest
    Legastheniker on Bord !

    http://www.Grautier.com - Projektseite
    http://www.grautier.com/wiki/doku.php?id=bt-index - BT-BUS

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.08.2004
    Ort
    Graz
    Beiträge
    342
    die Software-Lösung hat einen geringen Hardware-Aufwand, allerdings ist der MC während der Kommunikation beschäftigt. Macht aber bei nicht-zeitkritischen Aufgaben (wie zb. Temperaturen auslesen) nichts aus solange der MC nichts anderes noch tun muss.

    Hardwaremäßig umschalten könnte man zb. mit einem Bus-Switch wie dem 74125 oder einem bidirektionalen Analogschalter wie dem 4066. Oder auch einfach Transistoren bzw. FETS... noch ein klein wenig Logikschaltung und man kann mit einem MC-Pin zwischen 2 I²C-Subnetzen hin- und herschalten.

    mfg

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.04.2007
    Beiträge
    114
    Ist nicht Zeitkritisch. Ein Messwert pro Sekunde reicht locker. Kann ich das Softwaremäßig den so realisieren wie ich mir das vorbestelle? Oder muss dafür noch mehr geändert werden?

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    31.05.2006
    Alter
    57
    Beiträge
    5

    Eine weitere Lösung

    Hallo,

    ich könnte mir auch eine andere Lösung und schneller umzusetzende Lösung an Stelle der 2 Busse vorstellen.

    Zum Beispiel folgende:

    1. Sensorengruppe
    Bei 4 Sensoren werden die Adresspins für A2 hardwaremäßig auf low gelegt

    2. Sensorengruppe
    Bei 4 Sensoren werden die Adresspins für A2 an einen Output-PortX gelegt (je nach Abfrage auf low oder high)

    3. Sensorengruppe
    Bei 4 Sensoren werden die Adresspins für A2 an einen Output-PortY gelegt (je nach Abfrage auf low oder high).



    Wenn die 1. Sensorengruppe angesprochen werden soll, müssen PortX und PortY auf high sein.

    Wenn die 2. Sensorengruppe angesprochen werden soll, müssen PortX auf high und PortY auf low sein.

    Wenn die 3. Sensorengruppe angesprochen werden soll, müssen PortX auf low und PortY auf high sein.

    Die jeweiligen Adressen innerhalb der Sensorengruppe lassen sich ja einfach berechnen.

    Pro Sensorengruppe können bei entsprechender Adressierung 4 Sensoren abgefragt werden. Die Lösung sollte einfach umsetzbar sein. Ob sie funktioniert, weiss ich nicht, doch die Gefahr des Scheiterns scheint mir gering zu sein, wenn vor der Umschaltung der Adresspins jeweils ein TWISTOP erfolgt.
    Per Breadboard sollte das zügig zum Testen umsetzbar sein.

    Ob vor dem Ansprechen der Chips ein TWIINIT gesendet werden muss, wäre auszuprobieren.

    Bis 16 Sensoren bei 3 Port-Pins wäre das sicher ein interessanter Ansatz. Danach sind Schieberegister sicher die bessere Wahl.

    Mit freundlichen Grüssen,


    Bernd Apitz


  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.04.2007
    Beiträge
    114
    Danke für die Antwort, aber denke nicht das es klappen würde, da die Adressierung immer 2 mal vergeben werden würde.
    Wäre Z.b. Port Y auf high, wäre Port X auf low und der Hardware auf low gesetzte Gruppe auf low und somit hätten beide die selben Adresse.
    Mit deiner Variante setze ich ja nur bestimmte Adressierungen, aber kann ja nicht sagen welche Gruppe ausgelesen werden soll.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    31.05.2006
    Alter
    57
    Beiträge
    5

    Denke doch!

    Hallo,

    ich denke, man kann die Gruppe eindeutig ansprechen, bei der die Adressen nicht doppelt vergeben wurden. Bei dieser Gruppe sind für die 4 zugehörigen Chips die Adressen ja eindeutig.

    Die Chips mit den doppelt angegebenen Adressen dürften nicht angesprochen werden, da die Adresse ja nicht eindeutig ist.

    Durch entsprechende Einstellungen der Port-PinX und Port-PinY ist eine Gruppe immer eindeutig definiert. Und nur die eindeutig definierte Gruppe darf ausgelesen werden! Durch die verschiedenen Kombinationen der Einstellmöglichkeiten für Port-PinX und Port-PinY kann jede der oben genannten 3 Sensorengruppen eindeutig definiert und damit eindeutig angesprochen werden.

    Einen Versuch wäre es sicherlich Wert, das mal auszuprobieren.

    Mfg,

    Bernd Apitz

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •