- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 8 von 8

Thema: bekomme kein ACK an der I²C Hardware (Munit2, Basic++)

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.09.2005
    Ort
    Dachau
    Alter
    40
    Beiträge
    210

    bekomme kein ACK an der I²C Hardware (Munit2, Basic++)

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,
    warum bekomm ich bei der I²C Hardware kein ACK zurück????
    Benutze die M-Munit2.0 mit Basic++

    Danke im vorraus, Michi

    Code:
    DECLARE FUNCTION i2cstart()
    DECLARE FUNCTION i2cstop()
    DECLARE FUNCTION i2cdevselect(adress AS BYTE)
    DECLARE FUNCTION i2cbwrite(data AS BYTE)
    DECLARE FUNCTION i2cgetack()
    
    DEFINE SCL AS PORT [1]
    DEFINE SDA AS PORT [2]
    DEFINE temp AS BYTE  
    
    ' Programmteil
    
    Print "IIC Test Programm"
    for temp = 1 to 255
    Print "Scanning for I2C Device at " & temp
    i2cstart()
    pause 1
    i2cdevselect(temp)
    pause 1
    i2cgetack()
    i2cstop()
    next temp
    end
    
    ' Unterprogramme
    SUB i2cstart()
    SDA=1
    SCL=1
    pause 1
    SDA=0
    pause 1
    SCL=0
    END SUB
    
    SUB i2cstop()
    SDA=0
    Pause 1
    SCL=1
    pause 1
    SDA=1
    END SUB
    
    FUNCTION i2cdevselect(adress AS BYTE)
    i2cbwrite(adress)
    END FUNCTION
    
    FUNCTION i2cgetack()
    DEFINE i2c_ack_timeout AS WORD
    SDA = 1
    Deact SDA
    i2c_ack_timeout=0
    Do
    i2c_ack_timeout=i2c_ack_timeout+1
    'print i2c_ack_timeout & "  |  " & SDA
    
    if SDA = 0 then Print "SDA EMPFANGEN"
    Loop Until SDA = 0 Or i2c_ack_timeout = 5000
    Pulse SCL
    SDA = 1
    END FUNCTION
    
    FUNCTION i2cbwrite(data AS BYTE)
    define i2c_data8 ref data at bit[1] 
    define i2c_data7 ref data at bit[2] 
    define i2c_data6 ref data at bit[3] 
    define i2c_data5 ref data at bit[4] 
    define i2c_data4 ref data at bit[5] 
    define i2c_data3 ref data at bit[6] 
    define i2c_data2 ref data at bit[7] 
    define i2c_data1 ref data at bit[8] 
    SDA=i2c_data1
    'print SDA
    pulse SCL
    SDA=i2c_data2
    'print SDA
    pulse SCL
    SDA=i2c_data3
    'print SDA
    pulse SCL
    SDA=i2c_data4
    'print SDA
    pulse SCL
    SDA=i2c_data5
    'print SDA
    pulse SCL
    SDA=i2c_data6
    'print SDA
    pulse SCL
    SDA=i2c_data7
    'print SDA
    pulse SCL
    SDA=i2c_data8
    'print SDA
    pulse SCL
    END FUNCTION

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    16.09.2004
    Ort
    Schwabenland
    Beiträge
    156
    Hallo Michi,
    Nutz doch die internen I2C-Bus Routinen über Port 9 und Port 10:
    In Basic++ in Verbindung mit der M2.00 oder Station2 kannst Du den IIC-Bus ganz einfach bedienen.

    Code:
    WITH IIC 
      .INIT 
      .START
      .SEND 21 
      .STOP 
      .OFF
    END WITH
    Hier noch etwas aus der WorkBench-Hilfe
    http://www.csslabs.de/ccontrol/help/iic.html

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    03.11.2003
    Beiträge
    38
    Das Betriebsystem sendet aber vielleicht auch kein ACK. Bei der alten C-Control war das jedenfalls so komisch gelöst.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.09.2005
    Ort
    Dachau
    Alter
    40
    Beiträge
    210
    Hallo Dierk,
    das hab ich auch schon versucht, funktioniert auch nicht!
    muss ich vorher die Ports 9 & 10 Definieren?
    oder wie läuft das ab?

    Danke Michi

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.09.2005
    Ort
    Dachau
    Alter
    40
    Beiträge
    210

    hmm naja

    Anscheinend lag es am EEPROM, hab 2 niegelnagel neue versucht hat nicht geklappt!
    aber was ist den bitte so falsch an 24C02WP ???
    war ein SMD Bauteil im SO8.
    Pin 1,2,3,4,7 waren auf Masse
    Pin 5 SDA
    Pin 6 SCL
    Pin 8 +5V
    schreibadresse 160
    leseadresse 161

    Habe so ein 24C04 im DIL8 genauso eingelötet
    und ich bekomm zumindest ein ACK zurück.
    (mit meinem Programm)

    was hab ich falsch gemacht das das mit mein 24C02WP nicht klappt?

    was hab ich falsch gemacht das volgendes porgamm nicht funktioniert!

    Code:
    OPTION CC2.0  'Zielplattform
    DEFINE temp as byte
    Print "WRITE"
    
    WITH IIC
      .INIT
      .START
      .SEND 160        'Device Select schreiben
      .SEND 0          'Pointer setzen auf 0
      .SEND 123        'Wert 123 Schreiben
      .STOP
      .OFF
    END WITH 
    Print "WRITE END"
       pause 10
    PRINT "READ"
    WITH IIC
      .INIT
      .START
      .SEND 160        'Device Select schreiben
      .SEND 0          'Pointer setzen auf 0
      pause 5
      .START           'I²C Neustarten
      .SEND 161        'Device Select lesen
      .GET temp        'Daten auslesen
      .STOP
      .OFF
    END WITH 
    PRINT Temp
    PRINT "READ END"
    danke Michi

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.09.2005
    Ort
    Dachau
    Alter
    40
    Beiträge
    210
    so hab den fehler, es lang an einem DisignFeher der geätzen Platine wo das EEP-Rom drauf war.
    wenn pin 1,2,3,4 auf SCL liegen und nicht auf masse kanns nicht gehen!

    aber mit IIC.INIT, IIC.START, .... klapts immer noch nicht, kann mir wer helfen?

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.12.2003
    Beiträge
    163
    Zitat Zitat von Amiwerewolf
    so hab den fehler, es lang an einem DisignFeher der geätzen Platine wo das EEP-Rom drauf war.
    wenn pin 1,2,3,4 auf SCL liegen und nicht auf masse kanns nicht gehen!

    aber mit IIC.INIT, IIC.START, .... klapts immer noch nicht, kann mir wer helfen?
    Hallo...
    Guck hier in der Code-Library von Fdos, das Beispiel:
    http://www.fdos.de/ccbpp/codelib.php...ERMODUL_198849

    Und die zugehörige Datei der Library:
    http://www.fdos.de/ccforum/codelib/b...IIC_EEPROM.htm
    Da gibts auch ein Forum, wenn du nicht klar kommst.

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.09.2005
    Ort
    Dachau
    Alter
    40
    Beiträge
    210
    Danke nach ewigen testen hat es geklapt

Berechtigungen

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

LiFePO4 Speicher Test