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
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.
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.
Tja, dachte ich auch. Wenn das Datenblättchen nur nicht ganz so gross wäre... Aber danke für deine rasche Antwort.
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?
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 :-)
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?
Bei den AVR und den Cortex-M3 µCs die ich bisher programmiert habe, konnte man immer alle 7 Bits der Adresse selber festlegen.
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.
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.
stephan_ schrieb: > Such im Datenblatt mal nach dem SSPADD-Register ... Ich glaube das war DER entscheidende Hinweis....Besten Dank
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.
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.