- LiTime Speicher und Akkus         
Ergebnis 1 bis 10 von 10

Thema: Software I2C - PCF8591 ansteuern

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.11.2004
    Beiträge
    263

    Software I2C - PCF8591 ansteuern

    Anzeige

    Powerstation Test
    Hallo!

    Ich benutze im Moment den Mega8515. Ich bräuchte allerdings das I2C Interface. Ich habe allerdings keine Ahnung wie ich das emulieren kann. Im Netz habe ich auch nicht viel gefunden.

    Kann mir da jemand helfen?

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Der Bascom sollte doch auch für diesen Chip seine I2C-Emulation anbieten ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.11.2004
    Beiträge
    263
    Ich will eigentlich nur einen PCF8591 ansteuern.

    Eine analog Spannung, die an dem Pin AIN0 des 8591 anliegt soll ausgelesen werden.

    Wie gesagt wird ein Mega8515 benutzt als MC benutzt.

    Ich habe bis jetzt folgenden Code:
    Code:
    $regfile = "m8515.dat"                                      'ATmega8515-Deklarationen
    $crystal = 4000000                                          'Quarz: 4 MHz
    $baud = 9600
    
    Dim Wert As Byte
    
    Config Scl = Portb.2
    Config Sda = Portb.3
    
    I2cinit
    
    I2cstart
    I2cwbyte &B10010000
    I2cwbyte &B00000000
    I2cstop
    
    I2cstart
    I2cwbyte &B10010001
    Do
       I2crbyte Wert , Ack
       Print Wert
    Loop
    I2cstop
    
    End                                                         'end program
    Ich bekomme aber nur sinnlose Ergebnise daraus.
    Irgendwas ist mit dem Code nicht in Ordnung.

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Übliche Frage: I2C -Bus hat seine Pullup's ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.11.2004
    Beiträge
    263
    Pullups sind da. Habs einmal mit 1,8K und einmal mit 10K ausprobiert.

    Bin inswischen auch schon ein bißchen weiter:
    Code:
    $regfile = "m8515.dat"                                      'ATmega8515-Deklarationen
    $crystal = 4000000                                          'Quarz: 4 MHz
    $baud = 9600
    
    Dim Wert As Byte
    Dim I As Byte
    
    Config Scl = Portb.2
    Config Sda = Portb.3
    
    I2cinit
    
    I2cstart
    I2cwbyte &B10010000
    I2cwbyte &B00000000
    I2cstop
    
    Do
       I2cstart
       I2cwbyte &B10010001
       I2crbyte Wert , Nack
       I2cstop
       Print Wert;
    Loop
    
    End                                                         'end program
    Funktioniert aber noch nicht.

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Tja, geh mal mit der Speed runter
    config i2cdelay=20
    Außerdem:
    mach einen "ACK"-Kontrolle
    I2cstart
    i2cwbyte &B10010000
    if Err = 1 then
    print "No Ack from Device"
    i2cStop
    else
    i2cwbyte &B00000000
    i2cstop
    end if

    Ob der PCF überhaupt antwortet.

    Übrigens: Welche werte bekommst du denn ?

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    30.01.2004
    Ort
    Hartenholm
    Alter
    74
    Beiträge
    81
    .. hast Du das Steuerbyte richtig gesetzt, bzw. der Beschaltung angepaßt ?
    schau mal hier:
    http://www.the-starbearer.de/Roboter...91/PCF8591.htm

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.11.2004
    Beiträge
    263
    Also ich habe jetzt diesen Code ausprobiert:
    Code:
    $regfile = "m8515.dat"                                      'ATmega8515-Deklarationen
    $crystal = 4000000                                          'Quarz: 4 MHz
    $baud = 9600
    
    Dim Wert As Byte
    Dim I As Byte
    
    Config I2cdelay = 20
    
    Config Scl = Portb.2
    Config Sda = Portb.3
    
    I2cinit
    
    'I2cstart
    'I2cwbyte &B10010000
    'I2cwbyte &B00000000
    'I2cstop
    
    I2cstart
    i2cwbyte &B10010000
    if Err = 1 then
       Print "No Ack from Device"
       I2cstop
    Else
       I2cwbyte &B00000000
       I2cstop
       Print "ACK from Device"
    end if
    
    'Do
       I2cstart
       I2cwbyte &B10010001
       I2crbyte Wert , Nack
       I2cstop
       Print Wert;
    'Loop
    
    Do
    Loop
    
    End
    Ich bin also langsamer und bekomme im Terminal "ACK from Device".
    Das ist also in Ordnung.

    Ich lese jetzt erst nochmal Gerhards link durch.

    Ich bekomme übrigens immer so Werte um die 50...
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken werte.png  

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.11.2004
    Beiträge
    263
    Es funktioniert jetzt.
    Man muß
    "Printbin wert;"
    und nicht
    "Print wert;"
    nehmen

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175

    Besten Dank!

    Hallo Leute,

    dank Eurer Tipps hier im Forum ist es mir jetzt auch erstmalig gelungen, den I2C-Bus zum Laufen zu bringen!

    Mein Mega8 versteht sich jetzt jedenfalls bestens mit seinem neuen Kumpel, einem PCF8574 - ist schon irgendwie ein cooles Gefühl, wenn zum ersten Mal die Test-LED´s aufleuchten... \/

    @roboter:
    Dein Bascom-Code war eine große Hilfe, er hat mir die noch fehlenden Teile des Puzzles geliefert! Irgendwie tappte ich da nämlich ziemlich im Dunkeln.

    Euch allen vielen Dank, dieses Forum ist Spitze!

    Viele Grüße

    Torsten

Berechtigungen

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

LiFePO4 Speicher Test