-
        

Ergebnis 1 bis 8 von 8

Thema: Probleme mit dem I2C Bus und PCF8574

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    16.01.2005
    Beiträge
    9

    Probleme mit dem I2C Bus und PCF8574

    Anzeige

    Ich versuche gerade eine PCF8574 anzusteuern. Dieser Zeigt aber keine Reaktion. Ich habe die SCL und SDA mit oder ohne pullup getestet. Beides mal das gleiche Ergebnis. Ich habe mir eine Relaisplatine selbst gebaut. Alle Port des PCF stehen auf high. Normalerweise sollte jedes 2te port mit dem Code auf low schalten. Das Err Flag wird bei keiner Adresse gesetzt.

    Was habe ich da nur falsch gemacht?

    Hier der Code:
    Code:
    $regfile = "M16DEF.DAT"
    $crystal = 1000000
    $baud = 2400
    
    'RELAIS
    Config I2cdelay = 100
    Config Porta = Output
    
    
    Config Sda = Porta.1
    Config Scl = Porta.0
    Porta.0 = 1
    Porta.1 = 1
    
    Dim I As Byte
    
    Do
       For I = 1 To 255
          I2csend I , &HAA
          Print "Adresse: " ; I ; " ERR: " ; Err
          If Err = 0 Then
                Print "Adresse: " ; I ; "gefunden"
                Wait 5
          End If
       Next I
    Loop

    Vielen Dank für Eure Tipps
    Ingo

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    28
    Beiträge
    1.461
    HI

    Ich habe ja ein bischen das Gefühl, dass der Code mitunter von mir ist...
    "i2cdelay = ..." Oder?

    Hm. Sollte eigentlich schon funzen.
    Welchen Pullupwert hast du? 4,7k auf VCC?

    Wie sind AIN0 ... AIN2 am 74 geschaltet?

    (EDIT: Die dumme Frage wurde gelöscht)...

    Ich würde es trozdem nischt mit err machen, oder
    gibt er dir da was aus?

    Ganz liebe Grüße, Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    16.01.2005
    Beiträge
    9
    Hallo Toby,

    alls pullups habe ich 4,7k genommen.
    Alle adresspins auf masse.

    Trotzdem keine funktion.
    Hmm?

    Gruß Ingo

  4. #4
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    >Was habe ich da nur falsch gemacht?

    >I2csend I , &HAA

    Schon mal in der Bascom Hilfe nachgesehen, wie "i2csend" benutzt wird ?
    1.Parameter ist die Adresse
    2.Parameter ist der Übergabewert

    Und was ist &HAA ? Jedenfalls nicht die Adresse vom PCF8574.
    Wenn A0-2 auf GND, ist die Adresse &H40 oder bei einem PCF8574A &H70.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    16.01.2005
    Beiträge
    9
    Hallo Tobias,
    nun klappt es es war die Zeile:
    Config Porta = Output

    Wenn ich diese Zeile rausnehme, funtioniert es.


    Hallo Al (Bundy),
    ich schaue immer in die Hilfe und googlele rum, bevor ich eine Frage stelle.
    Also bitte erst den Code richtig anschauen und dann meckern.
    Ich habe von &H00 bis &HFF iteriert, um die Adresse des PCF8574 zu finden. &HAA als Übergabewert bedeutet binär 10101010. So kann ich auf jeden Fall sehen, ob die Ports geschaltet werden.

    Versuchs doch weiterhin mit Schuhen

    Gruß Ingo

  6. #6
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    Also bitte erst den Code richtig anschauen und dann meckern.

    Das sollte kein Meckern sein. Sorry, wenn es so rübergekommen ist.
    Ich habe nicht angenommen, das du die Adresse erst suchen mußt.

    Versuchs doch weiterhin mit Schuhen

    Ich bleib dann doch bei der Elektronik, da verdient man mehr !

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    31.03.2005
    Beiträge
    10

    Re: Probleme mit dem I2C Bus und PCF8574

    Hallo,
    ich bin neu hier aber habe hier schon viel gelesen, ich habe das Programm etwas umgeshrieben und auch einen Erfolg erzielt dass ich die Adresse des 8583 anzeigen kann. Wenn ich nun aber einen 8574 anschließe reagieren zwar die LED's aber es kommt keine Adresse zurück.

    Ich hab schon alles Probiert und nicht die Möglichkeit gefunden dass es geht.

    Vielleicht hat von euch jemand eine Idee

    Code:
    $regfile "8515def.dat"
    $crystal = 4000000
    
    '$include "ac_lcd.inc"
    
    Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
    Config Lcd = 20 * 4
    Cls
    
    Config I2cdelay = 10
    Config Porta = Output
    
    Config Scl = Porta.6
    Config Sda = Porta.7
    Porta.6 = 0
    Porta.7 = 0
    
    Dim I As Byte
    
    Do
       For I = 1 To 255
       I2csend I , &H40
       Locate 1 , 1 : Lcd "Adr: " ; I ; " dez " ; Hex(i) ; " hex"
       Locate 2 , 1 : Lcd "Adr: " ; Bin(i)
       Locate 4 , 1 : Lcd "Error: " ; Err
       If Err = 0 Then Goto Ende
       'End If
       'Waitms 100
       Next I
      Loop
    
    
      Ende:
      Locate 4 , 1 : Lcd "Adresse: " ; Hex(i) ; " gefunden"
      End
    Gruß PiCus

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Ich müßt' mir den Bascom Code dazu genau anschauen, aber zum address-Suchen solltest du das zu Fuß machen, den nur der ACK/NAK bei der Adress-Ausgabe zählt, und nicht das Ack/nak beim Datenbyte
    und du solltest step 2 machen, da ja die read-addressen nicht interessant sind.
    also
    I2CStart
    I2CwByte adr ' nur gerade zahlen/adressen
    if err = 0 then
    addr-is-ok
    else
    das-war-nix
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Berechtigungen

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