- LiFePO4 Speicher Test         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: PCF8574 - kein ACK zurück

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.04.2009
    Ort
    Wörgl
    Alter
    28
    Beiträge
    175

    PCF8574 - kein ACK zurück

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    ich hab an den I2C-Bus meines RP6 einen PCF8574 angeschlossen, über den ich in weiterer Folge eine Matrix-Tastatur ansteuern will.
    Ich habe die drei Addressierungsbits nicht belegt d.h. das Adressierungsbyte ist 0x40 (mit R/W-Bit nicht gesetzt) bzw. 0x41 (R/W-But gesetzt).
    Wenn ich den PCF allerdings wie in folgendem Programm anspreche, bekomme ich I2C Errorcode 0x20 d.h. kein Ack zurück auf Schreibzugriff:

    Code:
    #include "RP6ControlLib.h"
    #include "RP6I2CmasterTWI.h"
    
    #define PCF8574_Schreiben 0x40
    #define PCF8574_Lesen 0x41
    
    void I2C_transmissionError(uint8_t errorState)
    {
    	writeString_P("\nI2C ERROR - TWI STATE: 0x");
    	writeInteger(errorState, HEX);
    	writeChar('\n');
    }
    
    
    int main(void)
    {
     initRP6Control();
     I2CTWI_initMaster(100);
     I2CTWI_setTransmissionErrorHandler(I2C_transmissionError);
     
     I2CTWI_transmitByte(PCF8574_Schreiben, 1);
      
     while(true)
     {
      
      task_I2CTWI();
     }
     
     return 0;
    }
    Bei einer Leseanfrage (natürlich mit Adresse 0x41) bekomme ich dann Errorcode 0x48 - Kein ack zurück auf Lesezugriff.

    Was mache ich falsch?

    lg
    Michi

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Ich kann leider auch nicht sagen was falsch ist, denn mit I2C habe ich noch nicht viel gearbeitet. Allerdings habe ich letztens eine Tastenmatrix mit PCF8574 am RP6-Base erfolgreich umgesetzt:
    https://www.roboternetz.de/phpBB2/vi...=525175#525175

    Und ein PCF8574-LCD an der RP6-Base:
    https://www.roboternetz.de/phpBB2/vi...=525681#525681

    Bei der Matrix ist die PCF8574-Adresse 000, beim LCD 001. Vielleicht kannst du dein Problem durch den Vergleich der Programme selbst finden.

    Gruß

    mic

    [Edit]
    Ach, den Matrix-Thread solltest du ja schon kennen ;) Warum schreibst du da nicht weiter?
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Vielleicht hast du ja einen PCF8574A erwischt. Die haben eine andere Basisadresse.
    Ist mir mal passiert. In einer funktionierenden Schaltung hatte ich den PCF8574 gegen einen neuen getauscht, ging nicht. Anderen neuen Chip rein, ging auch nicht. Alter Chip wieder rein, funktioniert. Reichelt hatte mir eine Charge von PCF8574A geschickt.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    @m.a.r.v.i.n
    Vielleicht hast du ja einen PCF8574A erwischt.
    Ja, dann könnte er ja einfach die Adresse ändern:
    #define PCF8574A_Schreiben 0x70

    Gruß Dirk

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.04.2009
    Ort
    Wörgl
    Alter
    28
    Beiträge
    175
    Hallo,

    nein, ist ganz sicher ein PCF8574 ohne A.

    @radbruch: Ich dachte, das wäre ein anderer Themenbereich, weil es ja nicht wirklich um die Tastatur geht.

    Der IC ist sicher nicht kaputt, ich habe einen anderen auch probiert.
    Hätte ich für SDA und SCL Pull-Ups benötigt?

    lg
    Michi

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Es hätte die aktuellen PCF8574-Projekte besser gebündelt, aber egal, schreiben wir hier weiter. Den Querverweis zum Tastatur-Thread habe ich oben ja schon gesetzt.

    Da ich selbst im Moment an einem I2C-Projekt bastle, war der Einstieg mit der Tastatur und dem LCD schon mal sehr lehrreich. Nur verwende ich eben kein m32 oder m128, sondern das recht neue arm64 (ich mags mal so nennen) vom Miniroboterarm RA2 (natürlich auch von arexx;)

    Zu den PullUps kann ich nur soviel sagen: Mit den orginalen 4,7k auf der RP6-Baseplatine hat mein I2C-Bus nicht funktioniert, wenn Base, arm64 und die zwei PCF8574 gleichzeitig angeschlossen sind. Erst nachdem ich zusätzlich je 1k dazugeschaltet hatte, funktionierte diese Konfiguration. Da du scheinbar das m32 verwendest, sollte man mal überprüfen, ob dieses überhaupt eigene PullUps besitzt.

    Ich hatte meine PCF8574 vor dem Einbau übrigens genaustens untersucht um eine Verwechslung mit dem A-Typ auszuschliesen ;)

    Gruß

    mic

    [Edit]
    Ups, das m32 hat keine eigenen PullUps. Ist auch logisch, weil es ja als Erweiterung für den RP6 geplant war. Das bedeutet, du benötigst zwingend zusätzliche PullUps, wenn du nur das m32 und den PCF8574 verwendest.
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.04.2009
    Ort
    Wörgl
    Alter
    28
    Beiträge
    175
    Hallo,

    die Base ist ja ohnehin im Spiel für die Stromversorgung usw.

    Ich versuch mal, die Erweiterung an die Base zu hängen - ohne die m32 um zu sehen, ob es dann funzt.

    lg
    Michi

    [Edit]: Es funktioniert auch über die Base nicht. Ich habe das Programm soweit umgschrieben und die M32 abgesteckt. Das heißt, es liegt (zumindest nicht nur) an den PullUps.

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2009
    Ort
    Berlin
    Beiträge
    450
    Ich habe die drei Addressierungsbits nicht belegt d.h. das Adressierungsbyte ist 0x40 (mit R/W-Bit nicht gesetzt) bzw. 0x41 (R/W-But gesetzt).
    aber an GND haste die schon ?
    TrainMen

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.04.2009
    Ort
    Wörgl
    Alter
    28
    Beiträge
    175
    hallo,

    nein, muss ich die auf GND legen?
    werd ich gleich mal testen!

    danke!

    lg
    Michi

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2009
    Ort
    Berlin
    Beiträge
    450
    hi,
    ja ist am einfachsten, Du kannst sie auch alle auf VDD legen dann wäre eben die Adresse 4E oder 7E
    TrainMen

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

12V Akku bauen