- LiTime Speicher und Akkus         
Ergebnis 1 bis 5 von 5

Thema: I2C Erweiterung mit PCA9555

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.11.2005
    Beiträge
    25

    I2C Erweiterung mit PCA9555

    Hallo,
    ich habe einen PCA9555 Baustein an meinen Atmega128 und wollte fragen, ob wer von euch diesen Baustein schon mal verwendet hat und mir den Code zuschicken kann. Würde nämlich gerne mal schauen, wie man sowas macht .
    Wäre echt toll =D>

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von Crazy Harry
    Registriert seit
    15.01.2006
    Ort
    Raum Augsburg - Ulm
    Beiträge
    1.300
    Was für eine Programmiersprache verwendest du ?

    ...und ja ca. 80x verbaut

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    03.11.2005
    Beiträge
    25
    hi Crazy Harry,

    ich programmiere in C

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von Crazy Harry
    Registriert seit
    15.01.2006
    Ort
    Raum Augsburg - Ulm
    Beiträge
    1.300
    das ist schlecht - ich progge in pascal. aber so schwer sollte es nicht sein. die basisadresse ist 40h schreiben/41h lesen wenn A0-A2 auf masse liegt.

    ich weiß nicht, wie das bei deinem compiler ist: ich muß die oben 7 bits nach rechts schieben und hab so automatisch 20h schreibend und lesend. der compiler macht daraus automatisch 40h und 41h je nach dem ob ich I2COut oder I2CInp mache .

    ich weiß nicht, ob dir das so etwas bringt ....

    initialisierung beider ports als output

    I2COut($20,$06,$00); //adresse, configration-register 6, output
    I2COut($20,$07,$00); //adresse, configration-register 7, output

    ausgabe von daten:

    I2COut($20,$02,Out1); //Bit 0-7
    I2COut($20,$03,Out2); //Bit 8-15



    wenn du etwas einlesen willst, muß so konfiguriert werden:

    I2COut($20,$06,$FF); //adresse, configration-register 6, input
    I2COut($20,$07,$FF); //adresse, configration-register 7, input

    es kann jeder pin unabhängig von den anderen als input oder output eingestellt werden - 1 = input / 0 = output

    lesen der eingänge mit

    I2CInp($20,$00,Data1);
    I2CInp($20,$01,Data2);


    interessant ist vielleicht noch die möglichkeit die eingänge zu invertieren:

    I2COut($20,$04,$00); //Polarity Inversion Register Bit 0-7
    I2COut($20,$05,$00); //Polarity Inversion Register Bit 8-15

    0 = "normal" .... 1 = invertiert

    wenn du konkrete fragen hast: fragen

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    03.11.2005
    Beiträge
    25
    Ganz herzlichen Dank!!!
    Hab das irgendwie nach dem Datenblatt so verstanden, dass man um die Konfigurationsregister zu schalten, nur die Adresse $06 eingeben zu braucht und dann die Daten, aber so wie du es mir gesagt hast, so funktioniert es.
    Danke!!

Berechtigungen

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

LiTime Speicher und Akkus