- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 5 von 5

Thema: eeprom an I²C Bus

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.01.2004
    Alter
    36
    Beiträge
    121

    eeprom an I²C Bus

    Anzeige

    Powerstation Test
    Hallo, ich habe ein RN-Control Board mit einem Mega 32 drauf. Da der interne Ram nicht ausreicht habe ich noch einen 24LC64 eeprom an den I²C Bus angeschlossen. Ich habe direkt diesen Stecker auf dem Board benutzt, da kann ich mir doch die Pull-Up Widerstände sparen, oder? Die Adress Anschlüsse des e²proms hab ich direkt auf GND gelegt.
    Mein Programm in Bascom, zum testen sieht so aus:

    Code:
    $regfile = "m32def.dat"
    $crystal = 7372800                                          'Quarzfrequenz
    $baud = 9600
    
    Enable Interrupts
    
    Config Portc = Output
    Config Sda = Portc.1
    Config Scl = Portc.0
    
    Print "EE - Test"
    Waitms 500
    
    Declare Sub Write_eeprom(byval Adres As Word , Byval Value As Byte)
    Declare Sub Read_eeprom(byval Adres As Word , Value As Byte)
    
    Const Addressw = 160                                        'slave write address
    Const Addressr = 161                                        'slave read address
    Dim I As Word
    Dim B1 As Byte , Adres As Word , Value As Byte
    Dim Temp As Byte , Temp2 As Byte
    
    Print "schreibe"
    
    For I = 1 To 100
    Value = I
    Print I
    Call Write_eeprom(i , Value)
    Next I
    
    End
    
    Waitms 200
    
    Print "lese"
    
      I = 1
    
    For I = 1 To 100
    Value = 0
    Call Read_eeprom(i , Value)
    
    Print I ; "= " ; Value ; " ";
    Waitms 20
    Next I
    End
    
    Print "fertig"
    
    Sub Write_eeprom(byval Adres Word , Byval Value As Byte)
        Temp = High(adres)
        Temp2 = Low(adres)
        I2cstart                                                'start condition
        I2cwbyte Addressw                                       'slave address
        I2cwbyte Temp                                           'asdress of EEPROM
        I2cwbyte Temp2
        I2cwbyte Value                                          'value to write
        I2cstop                                                 'stop condition
        Waitms 10                                               'wait for 10 milliseconds
    End Sub
    
    Sub Read_eeprom(byval Adres Word , Value As Byte)
       Temp = High(adres)
       Temp2 = Low(adres)
       I2cstart                                                 'generate start
       I2cwbyte Addressw                                        'slave adsress
       I2cwbyte Temp
       I2cwbyte Temp2                                           'address of EEPROM
    
       I2cstart                                                 'repeated start
       I2cwbyte Addressr                                        'slave address (read)
       I2crbyte Value , Nack                                    'read byte
       I2cstop                                                  'generate stop
       Waitms 10
    End Sub
    Das funktioniert bloß leider nicht, nach dem schreibvorgang passiert nichts mehr. Die Ports für SDA und SCL sind doch richtig, oder? Woran kann es sonst liegen?

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Beim Lesen mußt du noch einen Stop einbauen, nach dem adress-senden.
    Stimmt das mit der Reihenfolge High(addr) -- Low(addr) ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Gast
    Also laut Datenblatt muss da kein Stop hin. Nur 2x Start und am Ende einmal stop. Im Datenblatt steht auch, dass die Adresse in high und low bits getrennt gesendet werden muss.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.01.2004
    Alter
    36
    Beiträge
    121
    lol, vergessen einzuloggen

  5. #5
    Gast
    lol, wenn man auch zu dumm ist dem ding Strom zu geben. Jumper Jp6 war bei mir nicht gesetzt, da hätte ich ja lange rum probieren können. Jedenfalls klappts jetzt, nachdem ich noch das end nach der ersten Schleife weg gemacht habe

Berechtigungen

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

Labornetzteil AliExpress