- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 28

Thema: I2C Adressen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1

    I2C Adressen

    Hallo Freunde !

    Seit nunmehr 2 Wochen sitze ich an einer I2C/TWI Sache und komme einfach nicht zurecht. Das grösste Problem sind die Adressen der I2C Slave-Chips, wie DS1307, PCF8574 u.ä.
    Wird an einer Stelle dem Porterweiterungschip PCF8574 die Adresse HEX 0x20 zugeordnet, so ist es an anderer Stelle 0x40 usw...usf. Auch beim DS1307 streieten sich die Götter, auch ein Blick in die Datenblätter brachten mir keine Erkenntnisse, im DB des PCF8574 habe ich gar keine Angabe darüber gefunden.
    Um es mal sarkastisch zu sagen, das wird doch wohl nicht schon heute als Grundschulwissen vermittelt , wie diese Adressen sind ?

    Auch sind die Programmbeispiele aus dem Web immer anders in der Adressierung, komisch sprechen sie doch das selbe Bauteil/Chip an, nur kann ich mir nicht vorstellen das alles im Web nur theoretische Ausarbeitungen sind , die praktisch nicht funktionieren können...

    Kann mir BITTE wer ein bischen helfen, bevor ich nur noch graue Haare habe ??

    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hallo Gerhard,

    die verschiedenen Adressen kommen daher, dass I2C die Geräte Adresse 7 Bit lang ist. Da aber immer 8 Bit übertragen werden kommt hier noch das Schreib/Lese (R/W) Bit dazu. Damit wird bestimmt ob der Master das Gerät beschreiben (R/W=0) oder lesen (R/W=1) will. Dummerweise ist das R/W Bit das untere der 8 Bits. Die Adresse liegt in den oberen 7 Bits. Je nach verwendeter I2C Bibliothek ensteht daraus dann mal 0x20 (0b0010000x) bzw. 0x40 (0b00100000) als Schreib Adresse oder 0x41 (0b00100001) als Lese Adresse. Alle Klarheiten beseitigt?

    Grüße Peter

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1
    Danke Peter !
    Ja vielen Dank, wenn man neu ins TWI Gewirre einsteigt ist es doch schon verwirrend. Das mit dem R/W Bit habe ich schon verstanden, aber so unterschiedliche Adressen wie 0x20 und 0x40 war mir einfach zu verwirrend. Ich nutze die TWI Bibliothek aus WinAVR also keine Fremdbibliothek.
    Was ich nmoch nicht so recht verstanden habe wie ich beim DS1307 die Stunde Minute und Secunde anspreche, war scheinlich muss ich die jeweilige Registeradresse dann zur Chipadresse addieren(??) Ist nirgends so richtig beschrieben...warscheinlich auf engl. Webseiten, aber so gut ist mein Fachenglish nicht wenn überhaupt was da richtig per Translator rausbekomme.
    Na ich werde mal weiter probieren, ein paar "Nichtgraue" Haare habe ich ja noch vorrätig

    Danke nochmals !!!
    Gerhard

    PS : ich versuche dieses Beispiel zu kapieren // aktualisiert 14.6. 10:38
    Geändert von oderlachs (14.06.2013 um 10:39 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  4. #4
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Hallo Gerhard,

    da bist du auf dem Holzweg.
    Eine I2C Kommunikation läuft immer so ab:

    Start
    Übermitteln der Geräteadresse
    Übermitteln von Registeradressen
    Übermitteln von Daten
    Ende

    Um das auf deine Uhr zu kopieren:
    I2C Startkondition senden, die 0x68 (die Geräteadresse der Uhr - siehe Datenblatt S. 12 - Slave Adress) senden, dann das Register was du auslesen willst (z.B. 0x01 für das Minutenregister), dann eine neue Startbedingung (steht auch im Datenblatt S. 11):

    http://datasheets.maximintegrated.com/en/ds/DS1307.pdf

    Und dann shiftet die Uhr den Inhalt des Register raus.
    Das musst du dann nur noch empfangen
    Und dieses Prinzip gilt für JEDES I2C Device.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hallo Gerhard, Kampi
    @Kampi Deinem Beitrag stimme ich zu, bis auf
    Und dieses Prinzip gilt für JEDES I2C Device.

    Der PCF8574 z.B. hat keine Registeradresse. Da folgen die Daten direkt nach der Adresse.
    Grüße Peter

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.09.2006
    Alter
    35
    Beiträge
    841
    Blog-Einträge
    1
    Manche Devices haben auch ein Autoinkrement des Addresspointers.

    Wenn du zum Beispielen 0x1d 0x44 schreibst, landest du bei Device 0x1d auf Adresse 0x44. Wenn ich jetzt 3 Bytes auslese liest er automatisch 0x44 0x45 0x46 aus. Muss aber das Device unterstützen und steht alles im Datenblatt.

  7. #7
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Zitat Zitat von m.a.r.v.i.n Beitrag anzeigen
    Hallo Gerhard, Kampi
    @Kampi Deinem Beitrag stimme ich zu, bis auf
    Der PCF8574 z.B. hat keine Registeradresse. Da folgen die Daten direkt nach der Adresse.
    Grüße Peter[/COLOR]
    Stimmt. Den habe ich jetzt nicht bedacht.
    Paar Sonderlinge existieren und für genauere Infos ist immer ein Blick ins Datenblatt notwendig.
    Autoincrement hast du z.B. bei EEPROMs (24C02 o.ä.). Da brauchst du nur eine Startadresse übermitteln.

    Edit:
    Beim PCF8574 musst du auch beachten, dass der Chip drei Adresspins hat, sprich du kannst damit die Adresse noch verändern.
    Geändert von Kampi (14.06.2013 um 13:17 Uhr)
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

Ähnliche Themen

  1. [ERLEDIGT] PCA 8574 M-Unit findet zwei I2C-Adressen am China LCD ????
    Von meistervolker im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 3
    Letzter Beitrag: 29.07.2011, 19:21
  2. Cortex M3 Programcounter Adressen
    Von Siro im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 2
    Letzter Beitrag: 11.06.2010, 16:39
  3. #define und adressen setzten in asm30 - dspic
    Von Pitt1986 im Forum PIC Controller
    Antworten: 2
    Letzter Beitrag: 10.06.2008, 21:13
  4. Bootloader Adressen
    Von geronet im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 10.02.2007, 22:27
  5. Adressen im hex file
    Von MAXXX im Forum PIC Controller
    Antworten: 3
    Letzter Beitrag: 21.08.2005, 21:01

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress