i2C Bus Adresse herausfinden

OP #1798350
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
OP #1798382
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?
#1798392
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 :-)
OP #1798409
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?
#1798436
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.
Gast #1798494
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren