www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik i2C Bus Adresse herausfinden


Autor: Alex Kunkel (bratkartoffel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich bin blutiger Anfänger wenn es um die Programmierung von Pic´s geht.
Kann mir bitte einer erklären wie man die Adresse für die I2C 
Kommunikation zischen einem Pic 18FXXX und einem Pic 16Fxxx 
herausfindet?
Es soll wohl einen festen Bereich geben der schon vom Hersteller 
festgelegt wurde - wo kann ich das nachlesen bzw. wie lautet diese feste 
Teil -Adresse.
Die Pic sind von Microchip.
P.S. Ich hab schon seit, mittlerweile, 4 Stunden gegoogelt!!
Vielen Dank schon mal im voraus.
Mfg Alex

Autor: Mike R. (thesealion)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit PICs kenne ich mich gerade nicht aus, aber ich würde im Datenblatt 
von Microchip nachsehen. Dort ist die I2C Hardware auf jeden Fall 
beschrieben und auch jedes einzelnen Register.

Ich möchte fast wetten, das eins der Register für die Adresse da ist.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei einem I2C-Slave auf einem µC wird die Adresse vom Programm 
festgelegt, d.h. Du entscheidest selbst, welche Du verwenden willst.

Wenn am I2C-Bus mehrere I2C-Devices angeschlossen sind, sollten 
natürlich keine Adressen mehrfach verwendet werden.

Autor: Alex Kunkel (bratkartoffel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, dachte ich auch.
Wenn das Datenblättchen nur nicht ganz so gross wäre...
Aber danke für deine rasche Antwort.

Autor: Alex Kunkel (bratkartoffel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus t. Firefly schrieb:
> Bei einem I2C-Slave auf einem µC wird die Adresse vom Programm
> festgelegt, d.h. Du entscheidest selbst, welche Du verwenden willst.
>
> Wenn am I2C-Bus mehrere I2C-Devices angeschlossen sind, sollten
> natürlich keine Adressen mehrfach verwendet werden.

Und was ist dem festgelegten Adressbereich? Wie finde ich den heraus- 
ich meine ich sollte ja wissen wohin die Post gehen soll.Oder versteh 
ich da was nicht?

So wie ich die Sache verstanden habe ist es so das ein PIC16Fxxx eine 
Adresse wie ein PIC18Fxxx hat.Oder?

Autor: Mike R. (thesealion)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du du zwei Controller hast, dürftest du bei beiden die Adresse selber 
festlegen können.
Solange nur die beiden PICs kommunizieren sollen, müßtest du die Adresse 
völlig frei wählen können, bzw. das einfachste ist, einer ist Master, 
der hat keine Adresse und der andere wird Slave dem gibtst du dann eine 
Adresse, die dir gefällt :-)

Autor: Alex Kunkel (bratkartoffel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mike S. schrieb:
> Du du zwei Controller hast, dürftest du bei beiden die Adresse selber
> festlegen können.
> Solange nur die beiden PICs kommunizieren sollen, müßtest du die Adresse
> völlig frei wählen können, bzw. das einfachste ist, einer ist Master,
> der hat keine Adresse und der andere wird Slave dem gibtst du dann eine
> Adresse, die dir gefällt :-)

Wie komme ich an den festgelegten Bereich, ich meine den ersten Teil der 
Adresse?

Autor: Mike R. (thesealion)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei den AVR und den Cortex-M3 µCs die ich bisher programmiert habe, 
konnte man immer alle 7 Bits der Adresse selber festlegen.

Autor: Alex Kunkel (bratkartoffel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mike S. schrieb:
> Bei den AVR und den Cortex-M3 µCs die ich bisher programmiert habe,
> konnte man immer alle 7 Bits der Adresse selber festlegen.

Ich glaube das ist (der) ein  Unterschied zu den Pic´s von Microchip.

Autor: Jan R. (janra)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Alex,
da Du zwei programmierbare Einheiten an Deinen Bus hängen willst, kannst 
Du die i2C-Adressen selbst festlegen. Sie müssen nur eindeutig sein und 
innerhalb der im Protokoll def. 7 Bit Breite.

Anders sähe es aus, wenn Du einen Sensor an den Bus kleben wolltest. Den 
kann man i.d.R. ja nicht frei programmieren, so daß der Hersteller hier 
Adressen werksseitig vergibt bzw. vergab und die ins Datenblatt 
geschrieben hat.

Das Du aber 2 programmierbare PICs nutzen willst, diese wahrscheinlich 
auch mit einer für die PICs implementierten I2C-Bibliothek nutzen 
willst, gibt es darin so Befehle wie
i2c.begin(address) o.ä., mit denen Du Adressen festlegen kannst. Zuvor 
solltest Du Dir aber überlegen, welcher Deiner beiden PICs den Master 
und welcher den Slave machen soll. Ausschließlich Master und bzw. Slaves 
an einem Bus bringen auch nichts Vernünftiges zustande.

Grüße, Jan.

Autor: stephan_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Such im Datenblatt mal nach dem SSPADD-Register ...

Autor: Alex Kunkel (bratkartoffel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
stephan_ schrieb:
> Such im Datenblatt mal nach dem SSPADD-Register ...

Ich glaube das war DER entscheidende Hinweis....Besten Dank

Autor: Besserwisser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
die Adresse kannst Du im PIC selbst vergeben.
Denn nur Du weisst, was Dein Pic für ein Slave sein soll.
Von Phillips sind Adressen für Uhr, Speicher, Temperatursensor, etc fest 
definiert worden.
Wenn Dein Pic eine Slave-Uhr sein soll, dann müsstest Du in das 
I2C-Adressregister die Adresse einer Uhr vergeben, damit der Pic nur auf 
diese Adresse reagiert.
Wenn Dein Pic ein Sensor sein soll, dann eine andere Adresse.
Schau mal bei Phillips nach, was für Bausteintypen welche Adressen 
haben.

Einfach nach I2C-Bausteinen googeln und da nachschauen, welche Adressen 
die haben. Wenn ein Speicher oder ein Temperatursensor oder ein 
Digitales Poti Du realisieren willst, dann übernehme diese Adresse.
Es müssten aber auch noch freie Adressen geben, falls Du was exotisches 
machst.

Autor: Alex Kunkel (bratkartoffel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank an alle !

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.