- 3D-Druck Einstieg und Tipps         
Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 34

Thema: I²C Porterweiterung

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    23.05.2005
    Ort
    Bez. Schärding
    Beiträge
    85

    I²C Porterweiterung

    Anzeige

    Praxistest und DIY Projekte
    Hi!
    Ich habe an meiner C-Control den pcf 8574 angeschlossen und es funzt net!!!
    konkret bei der Programmierung, denke ich...
    meine cc "hängt" sich beim Befehl IIC.init immer auf!
    unter anderem hab ich schon das IIC_ERROR.bas beispiel rübergeladen und das funktioniert, aber es schreibt, dass jede adresse belegt ist!!!
    Ich habe mir die Porterweiterungsplatine selbst gemacht, vielleicht könnt ihr mir ein paar mögliche fehlerquellen nennen...
    mein baustein ist ein PCF 8574AP
    schätze mal das das A für den Slave ist(0 111 A2 A1 A0 0) oder??

    zur Adressierung:
    meine 3 Adressbits sind alle auf HIGH d.h. meine adresse lautet:0111 111 0 oder dezimal 126, sag ich mal so....

    bitte helft mir!
    danke im voraus
    martin

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    16.09.2004
    Ort
    Schwabenland
    Beiträge
    156
    Hi,
    welche C-Control hast Du denn?
    Wenn Du eine M-Unit 1.2, eine M-Unit2.0 oder eine Station 2 hast, kannst Du einfach die extended Ports verwenden.

    Einfach
    Define MeinPort as Port[xx] deklarieren und damit arbeiten. Das Basic++ IIC-Objekt benötigst Du da überhaupt nicht.
    Schau z.B hier dieses Beispiel an:
    http://www.csslabs.de/ccontrol/lib/b...ED_PORTS_4.htm
    Wenn du den PCF8574A hast, musst Du den 2. Adressbereich verwenden.

    Siehe hier

    Code:
    ' PCF 8574    ADR 0      Ports 17 - 24      BYTEPORT 3
    ' PCF 8574    ADR 1      Ports 25 - 32      BYTEPORT 4
    ' PCF 8574    ADR 2      Ports 33 - 40      BYTEPORT 5
    ' PCF 8574    ADR 3      Ports 41 - 48	    BYTEPORT 6
    ' PCF 8574    ADR 4      Ports 49 - 56 	    BYTEPORT 7
    ' PCF 8574    ADR 5      Ports 57 - 64 	    BYTEPORT 8
    ' PCF 8574    ADR 6      Ports 65 - 72 	    BYTEPORT 9
    ' PCF 8574    ADR 7      Ports 73 - 80 	    BYTEPORT 10
    
    ' PCF 8574A  ADR 0      Ports 81 - 88 	    BYTEPORT 11
    ' PCF 8574A  ADR 1      Ports 89 - 96 	    BYTEPORT 12
    ' PCF 8574A  ADR 2      Ports 97 - 104 	    BYTEPORT 13
    ' PCF 8574A  ADR 3      Ports 105 - 112     BYTEPORT 14
    ' PCF 8574A  ADR 4      Ports 113 - 120     BYTEPORT 15
    ' PCF 8574A  ADR 5      Ports 121 - 128     BYTEPORT 16
    ' PCF 8574A  ADR 6      Ports 129 - 136     BYTEPORT 17
    ' PCF 8574A  ADR 7      Ports 137 - 144     BYTEPORT 18
    Eventuell hast DU auch ein Problem am I2C-Bus. SCL und SDA müssen mit einem 5-10K Pullup-Widerstand gegen +5V gezogen werden.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    23.05.2005
    Ort
    Bez. Schärding
    Beiträge
    85
    hi dierk
    danke für deinen post
    ich hab ne m-unit 2.0
    das mit dem pullup an scl und sda hab ich auch nicht==>werd ich gleich ändern!
    wie kann ich denn bestimmen welche ADR ich hab?
    ich hab alle drei adress bits auf 5V gesetzt
    ist dass dann bei meinem pcf8574A Byteport 18 ???

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    16.09.2004
    Ort
    Schwabenland
    Beiträge
    156
    Ja, das ist dann der Byteport 18 bzw. die Ports 137 - 144.
    Mit den Pullups wird es dann funktionieren. Das heißt die Masse muss auch noch mit der Masse des PCF8574 verbunden sein (falls du 2 verschiedene Stromversorgungen haben solltest).
    ABer dann muss es gehen.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    23.05.2005
    Ort
    Bez. Schärding
    Beiträge
    85
    hi
    ich hab jetz die pull ups reingelötet
    weißt du wie viele mA man von einem pcf entnehmen kann?
    kann ich ne led einfach mit nem vorwiederstand anhängen?

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    23.05.2005
    Ort
    Bez. Schärding
    Beiträge
    85
    hab mal im datenblatt reingeschaut, wenn ich mich nicht verlesen hab, 25mA...
    (weiß nicht warum ich da nicht gleich reingeschaut hab)
    aber zurück zu meiner eigentlichen Frage, irgendwie funktioniert es immer noch nicht. ich poste mal mein programm

    define SDA port[9]
    define SCL port[10]
    define EXTPORT byteport[18]
    define a port[137]


    LIGHT=on
    SDA=on
    SCL=on

    EXTPORT=off

    #z
    EXTPORT=on
    a = off
    print "alles an" &a& &EXTPORT&""
    pause 100
    EXTPORT=off
    a=on
    print "alles aus" &a& &EXTPORT&""
    pause 100
    goto z

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    23.05.2005
    Ort
    Bez. Schärding
    Beiträge
    85
    hab noch was vergessen...
    hyperterminal zeigt mir an, das EXTPORT = 255 ist und zwar jedes mal, das kann doch nicht sein oder???
    was kann da die ursache sein?

    Martin

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    16.09.2004
    Ort
    Schwabenland
    Beiträge
    156
    Hmm. 255 wird auch angezeigt, wenn ein IIC-Bus Fehler aufgetreten ist.

    LEDs darf man an den PCF8574 nicht zwischen Port und GND schalten. Sonst kann man nur immer den kompletten Byteport schalten.

    Das geht nicht, weil der PCF8574 einen Open-Drain-Ausgang hat.
    Wenn der Port eine Last schaltet, dann sinkt die Spannung durch die interne Konstantstromquelle unter eine Schwelle, welche beim Lesen als Low interpretiert wird, obwohl der Port auf high gesetzt wurde. Es wird intern vor dem Setzen des Ports immer der gesamte Byteport als Byte ausgelesen, die Veränderungen der "Bit"-Ports gemacht und dann zurück zum PCF8574 geschoben.
    Das passiert nicht, wenn im Basic der komplette Byteport auf einmal gesetzt wird, weil ja dadurch komplett alle Portzustände neu definiert werden.

    Les Dir mal das hier durch, da hat es auch ein paar Beispiele zur Beschaltung dabei:
    http://www.c-control-support.net/dow...4_EXTPORTS.pdf

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    23.05.2005
    Ort
    Bez. Schärding
    Beiträge
    85
    so jetzt noch mal ganz vereinfacht und zum mitschreiben:

    define SDA port[9]
    define SCL port[10]
    define EXTPORT byteport[18]

    SDA=on
    SCL=on
    EXTPORT=off
    wenn ich die stromversorgung einschalte(die m_Unit befindet sich im resetzustand) messe ich 5V aufgrund meiner pull ups an den 8 ausgängen des PCF's.
    wenn ich jetzt das oben geschriebene programm starte, muss ich 0V an den Ausgängen messen, trotz den pullups, wei der pcf die i/o's nach gnd zieht, oder???

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    16.09.2004
    Ort
    Schwabenland
    Beiträge
    156
    Nein, keine Pullups an die Ports des PCF8574. Hänge fürs erste nichts dran und mess nur.
    Beim Einschalten sind immer alle Ports des PCF8574 auf High (5V).
    Mit EXTPORT=off sollten sie dann alle auf 0V sein.

Seite 1 von 4 123 ... LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests