- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 25 von 25

Thema: Mehere Ausgangspins

  1. #21
    Neuer Benutzer Öfters hier
    Registriert seit
    09.05.2010
    Ort
    Baden Württemberg
    Beiträge
    11
    Anzeige

    Praxistest und DIY Projekte
    Hallo Wolf,

    ich habe am PCA9555 ein LCD im 8-Bit Modus und ein Tastenkreuz mit 5 Tastern hängen. Bei mir schaut der relevante Teil so aus:
    Code:
    // PCA9555D: Adresse 0100 000x 
    // Schreib-Adresse 0x40, Lese-Adresse 0x41
    #define PCA9555_wr 0x40
    #define PCA9555_rd 0x41
     
    // Konfiguration: Port 1 Bits 3-7 auf Input 0-2 Output
    // Port 0 auf Output
    // Port 0 Register (Command 0x06) auf 0x00
    // Port 1 Register (Command 0x07) auf 0xF8
    void init_pca9555(void) 
    {
    i2c_init (); // I2C-Bus initialisieren (Grundzustand)
    i2c_start (); // Startbedingung I2C-Bus ausgeben
    i2c_schreiben (PCA9555_wr); // Adresse PCA9555
    i2c_schreiben (0x06); // Control-Byte 6
    i2c_schreiben (0x00); // Direction für Port 0
    i2c_schreiben (0xF8 ); // Direction für Port 1
    i2c_stop (); // Stoppbedingung I2C-Bus ausgeben
    }
    // pca9555_read_port1(void)
    // Liest 8 Datenbit von Port 1
    // P1.3-1.7 => Tastenkreuz
    unsigned char pca9555_read_port1(void)
    {
    unsigned char wert;
    i2c_init (); // I2C-Bus initialisieren (Grundzustand) 
    i2c_start (); // Startbedingung I2C-Bus ausgeben 
    i2c_schreiben (PCA9555_wr); // Baustein Adresse Schreiben 
    i2c_schreiben (0x01); // Controll-Byte lese Port 1 
    i2c_start (); // repeated Startbedingung I2C-Bus ausgeben 
    i2c_schreiben (PCA9555_rd); // Baustein Adresse lesen 
    wert = i2c_lesen (0); 
    i2c_stop (); // Stoppbedingung I2C-Bus ausgeben 
    return (wert); 
    }
    Beim Schreiben und Lesen auf nachfolgende Register muss nur 1x die Startadresse angegeben werden. Danach inkrementiert der Baustein die Registeradresse automatisch.

    gruß
    Bernhard
    Geändert von BASTIUniversal (25.04.2011 um 15:49 Uhr) Grund: Code-Box eingefügt

  2. #22
    Benutzer Stammmitglied
    Registriert seit
    24.03.2010
    Ort
    Steiermark
    Alter
    31
    Beiträge
    65
    Das hilft mir sehr weiter nur die Frage ist welche lib.h du einschließt. Ansonsten war da sehr hilfreich. Auch wenn ich mich einmal nur auf die Ausgänge konzentrieren will

    MfG Snow Wolf

  3. #23
    Neuer Benutzer Öfters hier
    Registriert seit
    09.05.2010
    Ort
    Baden Württemberg
    Beiträge
    11
    Hallo,
    ich Programmiere mit einem AT89C5131, also 8051-Familie. Auf dem RP6 ist ja ein ATMega128, aber dort gibt es doch auch eine I2C-Lib. Einfach die hier geposteten Funktionen anschauen und den groben Verlauf nachbauen, dann müsste es passen.
    Ich habe mal in der Anleitung zum RP6 geschaut (S.107ff). Du musst den dann im Master-Mode initialisieren. Danach wird aus meiner init_PCA9555 zum Beispiel ein Aufruf der Funktion void I2CTWI_transmit3Bytes(uint8_t adr, uint8_t data1, uint8_t data2, uint8_t data3)
    Konkret also I2CTWI_transmit3Bytes(PCA9555_wr, 0x06, 0x00, 0xF8 );
    Lesen mehrerer Bytes macht die Funktion void I2CTWI_readBytes(uint8_t targetAdr, uint8_t * messageBuffer, uint8_t numberOfBytes);
    Für das obige Beispiel muss aber (vermutlich) trotzdem die Schreibadresse des Bausteins eingesetzt werden:
    I2CTWI_transmitByte(PCA9555_wr, 0x01); // Adresse auf Register 0x01 setzen
    uint8_t Port[1]; // als Array definiert, obwohl nur 1 Byte. Macht die Pointerei einfacher.
    I2CTWI_readBytes(PCA9555_wr, Port, 1); // der Pointer Port zeigt auf die Anfangsadresse des Arrays Port[], also auf Port[0]

    viel Erfolg
    Bernhard

  4. #24
    Neuer Benutzer Öfters hier
    Registriert seit
    09.05.2010
    Ort
    Baden Württemberg
    Beiträge
    11
    Das obige natürlich ohne Gewehr - äh Gewähr

    tschuessle
    B.

  5. #25
    Benutzer Stammmitglied
    Registriert seit
    24.03.2010
    Ort
    Steiermark
    Alter
    31
    Beiträge
    65
    naja dann werd ich das mal versuchen vl funktioniert es, ich werd das Ergebnis spätestens nächste Woche posten

    MfG Snow Wolf
    Geändert von Snow Wolf (23.04.2011 um 23:14 Uhr)

Seite 3 von 3 ErsteErste 123

Berechtigungen

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

LiFePO4 Speicher Test