- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 7 von 7

Thema: Frage zu PCF8574

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.01.2004
    Beiträge
    317

    Frage zu PCF8574

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    ich experimentiere gerade etwas mit einem PCF8574 an einem ATMega32 herum.
    Grundsätzlich habe ich meine kleine Portexpanderschaltung auch zum laufen gebracht. Wenn ich aber nun nur einmal den Befehl zum einschalten aller ports auf den Bus sende blitzen meine LEDs nur einmal kurz auf und bleiben dann aus.

    Code:
       i2c_start();
       i2c_send(i2cadresse);
       i2c_send(i2cdaten);
       i2c_stop();
    Wenn ich das ganze aber in die Endlosschleife des Hauptprogramms schreibe, dann bleiben sie zwar an, aber die LEDs erreichen bei weitem nicht ihre eigentliche Lichtstärke.
    Meine Frage ist nun:
    Ist es mit dem PCF8574 nicht möglich den Zustand der Ausgänge bei zu behalten bis der nächste Befehl kommt, ohne ständig die Daten wiederholt zu senden?
    Oder mache ich da noch etwas falsch?

    Hier noch einmal der Code den ich für die Funktionen verwendet habe.

    Code:
    void i2c_start(void) 
    {
        TWCR = _BV(TWINT) | _BV(TWSTA) | _BV(TWEN);     // send start condition
     while ((TWCR & _BV(TWINT)) == 0) ;                 // wait for transmission
    }
    
    void i2c_stop(void) 
    {
        TWCR = _BV(TWINT) | _BV(TWSTO) | _BV(TWEN);
     }
    
    void i2c_send(uint8_t DataByte) 
    {
        TWDR = DataByte;
        TWCR = _BV(TWINT) | _BV(TWEN);             // clear interrupt to start transmission
        while ((TWCR & _BV(TWINT)) == 0) ;         // wait for transmission
    }
    Danke schon einmal für die Hilfe
    mfG Henry

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Du zeigtst zwar nicht, wie deine LEDs angeschlossen sind, noch was du auf den Port schreibst, aber ich vermute einen klassischen "Manual Not Read Error" . Ich empfehle da Kapitel 7.3

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.01.2004
    Beiträge
    317
    Hallo,

    danke erst einmal für die schnelle Antwort.
    Angeschlossen sind die LEDs über einen ULN2803 angeschlossen, der ist mit seinen Eingängen direkt an den IO-Pins des PCF8574 angeschlossen.
    Auf den Port schreibe ich zum Test erst eimal immer eine 255.

    ich vermute einen klassischen "Manual Not Read Error"
    Da könntest Du in dem Fall wohl Recht haben. Ich habe das mal nachgeholt. Wenn ich das richtig verstanden habe muss ich die IO-Pins des PCF8574 noch mit Pull Up Widerständen bestücken.
    Das werde ich mal versuchen.
    mfG Henry

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von Henry Beitrag anzeigen
    Hallo,

    danke erst einmal für die schnelle Antwort.
    Angeschlossen sind die LEDs über einen ULN2803 angeschlossen, der ist mit seinen Eingängen direkt an den IO-Pins des PCF8574 angeschlossen.
    Auf den Port schreibe ich zum Test erst eimal immer eine 255.


    Da könntest Du in dem Fall wohl Recht haben. Ich habe das mal nachgeholt. Wenn ich das richtig verstanden habe muss ich die IO-Pins des PCF8574 noch mit Pull Up Widerständen bestücken.
    Das werde ich mal versuchen.
    Wie der Text sagt, sind das "quasi-bidirectional I/O". Der weak Pullup des Chips kann nicht genug Strom liefern, um den ULN durchzusteuern. Wenn du nur LEDs ansteuern willst, geht das einfacher: "Latched outputs with high current drive capability for directly driving LEDs".

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  5. #5
    Hallo Henry
    Das mit den Pullups ist richtig. Die Ausgänge des PCF8574 schalten gegen GND.
    Der ULN 2803 benötigt aber eine positive Spannung am Eingang um die LED's einzuschalten.
    Lösung: Mach die Pullups niederohmig = 2,2kOhm oder kleiner, damit der ULN einschalten kann oder besser schmeiss den ULN gleich raus. Dann die Pullups als Vorwiderstand der LED's verenden.
    Der PCF8574 liefert genug Strom für die Leds.

    Gruß NOLEM

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.01.2004
    Beiträge
    317
    Hallo,

    Habe jetzt mal zum Test einen PullUp an P0 gelötet und das war wohl die Lösung. Hat halt jetzt nur den Nachteil das alle Ausgänge aktiv sind sobald Spannung anliegt. PullDown wäre in dem Fall schöner gewesen, klappt das auch oder mache ich dann die internen Widerstände kaputt?

    Die LEDs sind nur erst einmal zum Test, da sollen später neben LEDs auch andere Lasten angesteuert werden.
    mfG Henry

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.01.2004
    Beiträge
    317
    Zitat Zitat von NOLEM Beitrag anzeigen
    Hallo Henry


    Das mit den Pullups ist richtig. Die Ausgänge des PCF8574 schalten gegen GND.
    Der ULN 2803 benötigt aber eine positive Spannung am Eingang um die LED's einzuschalten.
    Lösung: Mach die Pullups niederohmig = 2,2kOhm oder kleiner, damit der ULN einschalten kann oder besser schmeiss den ULN gleich raus. Dann die Pullups als Vorwiderstand der LED's verenden.
    Der PCF8574 liefert genug Strom für die Leds.

    Gruß NOLEM
    Da sind auch 3W LEDs dabei und teilweise mehrere Gruppen normaler LEDs parallel (60-100mA) , das wird wohl eng
    Genen Null schaltend schließt natürlich PullDown aus.
    mfG Henry

Ähnliche Themen

  1. LCD am PCF8574
    Von Track im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 17.03.2010, 00:38
  2. INT vom PCF8574
    Von TrainMen im Forum Robby RP6
    Antworten: 1
    Letzter Beitrag: 28.06.2009, 23:20
  3. 2x I²C PCF8574
    Von DEAF BOY im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 03.09.2007, 19:01
  4. PCF8574
    Von bertl100 im Forum AVR Hardwarethemen
    Antworten: 7
    Letzter Beitrag: 22.04.2006, 14:12
  5. Porterweiterung mit PCF8574 am i2C Bus
    Von Einstein im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 5
    Letzter Beitrag: 12.11.2003, 21:39

Berechtigungen

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

Solar Speicher und Akkus Tests