- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 28

Thema: I2C Adressen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    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 12: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

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1
    Hallo Ihr Beiden,
    habt recht vielen Dank für die für mich recht viel erklärenden Zeilen.
    Zuerst habe ich mal dem Sch...AdobeReader vom PC geschmissen, der hat mit den datenblättern alles gemacht nur nicht das was ich gern hätte. Nun kann ich auch mit dem schon immer installierten Foxid-Reader die Datenblätter besser und auch vollständig(!!!) lesen und vorallen lesegerecht ausdrucken. Weiss auch nicht wie dieser Softwareekel von Adobe sich da eingenistet hatte.
    ich werde meine Code auf meinen Webspace veröffendlichen zur Begutachtung um das Forum hier nicht so zu belasten. es wäre nett wenn Ihr Euch das dann mal anschauen würdet.
    Aber nun "studiere" ich nochmals die Datenblätter und schreib den Code danach in meine main und headerdateien..

    Eine Frage habe ich noch, obwohl sie ja allgemeiner Art vielleicht ist, finde ich irgendwo eine Erklärung zu den Funktionen der Standart AVR Libs , hier zBsp die TWI.h und den daraus ergebenden Funktionen wie TWI_Write, TWI_Read oder so ?
    Da sehe ich noch gar nicht recht durch, ja ich bin vielleicht vom Arduino noch etwas angeschlagen, wo jede Standart Lib detailiert erklärt wurde..

    Danke Euch nochmals, war/ist echt ne Hife was da geschrieben wurde !

    Gerhard
    Geändert von oderlachs (14.06.2013 um 12:47 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  3. #3
    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
    Hey,

    schau mal ob dir das hier hilft:

    http://www.atmel.com/Images/doc2565.pdf
    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

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1
    Ja Kampi das habe ich schon gelesen, na ja nicht alles noch nicht verstanden...
    Nun noch eine Frage was ich nicht kapiere, bzw sicherheitshalber nachfrage ich habe die DS1307 Adresse definiert:
    Code:
    #define DS1307      0x68  // Hex
    #define...
    will ich dieses Adresse jetzt an die write funktion übergeben muss ich sie erst noch umwandeln so wie hier:
    Code:
    adresse = (DS1307 << 1)
    twi_write(adresse,wr)  // wr 0 für write , 1 für read
    {...
    if (wr) adresse |= 1; //wr =1 für lesen
    TWDR = adresse ;
    TWCR= (1<< TWEN) | (1<< TWINT); 
    while (!(TWCR & (1 << TWINT)));  // warte bis fertig
    ...}
    wie habe ich das zu verstehen und muss ich die Register Adressen auch shiften ?? : adresse = (reg_adress << 1)

    Ich weiss ich nerve mit saudummen Fragen, abver irgendwann muss ich ja mal das kapieren, die Grundsätze wenigstens..

    Danke

    Gerhard

    Nachtrag : kampi habe mir eben das PDF doku ausgrdruckt, denke das ich da was von verstehe und anwenden kann....
    Geändert von oderlachs (14.06.2013 um 14:51 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  5. #5
    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
    Hey,

    naja so sau dumm ist die Frage nicht
    Die Adresse die im Datenblatt steht (in deinem Fall die 0x68 ) ist die Grundadresse, sprich OHNE Read/Write Bit.
    Das heißt für eine komplette Adresse musst du das Read/Write Bit noch anhängen und das ist ja immer unterschiedlich, je nachdem ob du Lesen oder Schreiben willst.
    Ergo wird das Bitmuster für die 0x68 um eine Stelle nach links geschoben.
    Dadurch wird das Read/Write Bit automatisch mit einer 0 gefüllt und du musst es im Falle eines schreibenden Zugriffs nur noch auf 1 setzen (das machst du, indem du die Adresse mit einer 0x01 verODERst).
    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

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1
    Also , ich habe kapituliert vorerst und weil es drängte mit der Zeit, erstmal eine Bascom Software geschrieben(holprigerweise). Da klappt es wunderbar mit dem Auslesen der Zeit.
    Ich kann's einfach nicht begreifen.
    Die Adressenzuordnung stimmt schon , aber ich bekomme einfach nicht die Zeit ausgelesen vom DS1307.
    Ich schreibe die I2C Adr + 1 für Lesen,dann die Registeradresse, und überneme dann die Daten vom Datenregister als Datenwert...aber nix sinnvolles kommt dabei raus.
    Natürlich Wird auch noch TWI_INIT, TWI_START,TWI_STOP entsprechend durchgeführt.

    Gerhard, mit hängendem Kopfe..

    Nachtrag: Ich habe mir dieses Beispiel als Vorlage genommen zum Test, ohne das Setzen der UHR (Auskommentiert) wollte nur sec,min,hr auswerten. Das RTC ist mit aktueller Zeit versorgt
    Geändert von oderlachs (16.06.2013 um 08:46 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von oderlachs Beitrag anzeigen
    Ich schreibe die I2C Adr + 1 für Lesen,dann die Registeradresse, und überneme dann die Daten vom Datenregister als Datenwert...aber nix sinnvolles kommt dabei raus.
    Ich hab Dir das schon mal geschrieben und auch wenn Du's nicht gerne hörst: Wenn Du Dir von einer Diskussion mehr erwartest, dann müsstest Du mehr darauf eingehen.
    Hier z.B. Deinen Bascom-Code und Deinen C-Code zeigen, dann kann man sagen, was Du falsch machst.
    Natürlich Wird auch noch TWI_INIT, TWI_START,TWI_STOP entsprechend durchgeführt.
    Ein Beschreibung eines Codes, sei's Prosa oder nicht, taugt nichts. Nur der Code selbst taugt.
    Nachtrag: Ich habe mir dieses Beispiel als Vorlage genommen zum Test, ohne das Setzen der UHR (Auskommentiert) wollte nur sec,min,hr auswerten.
    Wieso nimmst Du ein Beispiel, dass erklärtermaßen seitens des TE dort nicht funktioniert? Er schreibt, dass er den Code erfolgreich compiliert hat, er schreibt auch dass er nicht läuft.

Ä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, 18:21
  2. Cortex M3 Programcounter Adressen
    Von Siro im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 2
    Letzter Beitrag: 11.06.2010, 15:39
  3. #define und adressen setzten in asm30 - dspic
    Von Pitt1986 im Forum PIC Controller
    Antworten: 2
    Letzter Beitrag: 10.06.2008, 20:13
  4. Bootloader Adressen
    Von geronet im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 10.02.2007, 21:27
  5. Adressen im hex file
    Von MAXXX im Forum PIC Controller
    Antworten: 3
    Letzter Beitrag: 21.08.2005, 20:01

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress