-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: EEPROM

  1. #1
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    28
    Beiträge
    3.517
    Blog-Einträge
    9

    EEPROM

    Anzeige

    Hallo
    Ich hab eine Verständnissfrage. Und zwar will ich diesen EEPROM im I²C ansteuern
    ->http://www.conrad.de/goto.php?artikel=160997

    Im Datenblatt steht ja die Adresse so:

    1 0 1 0 A2 A1 A0 R/W

    (http://www2.produktinfo.conrad.com/d...1-en-24C16.pdf)

    Wenn ich nun alle Adressleitungen also A2-A0 an GND liegen habe ist die Adresse ja:
    1 0 1 0 0 0 0 R/W

    Was setze ich den für die Hex berechnung für R/W ein? Weil im moment würde der Code ja &H50 sein-

    Danke für die Hilfe

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Beim Schreiben ist R/W 0 (0x50), beim Lesen 1 (0x51).
    #ifndef MfG
    #define MfG

  3. #3
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    28
    Beiträge
    3.517
    Blog-Einträge
    9
    Achso. D.h. ich muss einfach nur wenn ich die Zahl 4 auf das EEPROM schreiben will sagen das die Adresse &H50 ist und wenn ich diese Zahl auslesen will muss ich &H51 schreiben?

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Genau so.
    Ich machs immer so, dass ich die Adresse z.B. so angeb:
    I2C_WriteByte(0x50 + I2C_WRITE) bzw. I2C_ReadByte(0x50 + I2C_READ),
    wobei I2C_WRITE = 0 und I2C_READ = 1 ist.
    #ifndef MfG
    #define MfG

  5. #5
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    28
    Beiträge
    3.517
    Blog-Einträge
    9
    Wie kommt den das 0x50 zustande?

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    0x50 = &H50 = 50h... je nach Compiler.
    Dezimal jedes mal 80.
    #ifndef MfG
    #define MfG

  7. #7
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    28
    Beiträge
    3.517
    Blog-Einträge
    9
    Ahh ok ..... hab mir sowas in der Richtung schon gedacht.

  8. #8
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    28
    Beiträge
    3.517
    Blog-Einträge
    9
    So und ich hab dann direkt noch eine Frage. Wie funktioniert das mit dem Speichern der Daten in dem EEPROM? Ich hab mir da jetzt ein Programm zusammengezimmert wo ich was eingebe und das im EEPROM gespeichert wird und dann per Print ausgegeben wird. Allerdings zeigt er jedesmal 0 oder 255 an..... . Ist das richtig so?

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Kommt drauf an...

    Wie sieht das Programm aus und was steht schon im EEPROM drin? Wenn er noch unbeschrieben ist, ist die Antwort von jeder Speicherzelle 0xFF = 255.
    Welche Befehlssequenz zum schreiben/lesen gebraucht wird, steht im Datenblatt.
    #ifndef MfG
    #define MfG

  10. #10
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    28
    Beiträge
    3.517
    Blog-Einträge
    9
    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000
    
    
    'SDA und SCL definieren
    Config Sda = Portc.1
    Config Scl = Portc.0
    
    
    Dim X As Word
    Dim A As Byte
    Dim B As Byte
    Dim Lesen As Word
    CLS
    
    Do                                                          '
    
    Input "Eingabe:" , X
    
    I2cstart                                  
    I2cwbyte &HA0                                              
    I2cwbyte X                                
    I2cstop                                  
    Waitms 1000                                                 
    
    
    
    
    '--- lesen vom EEprom ----
    
    
    I2cstart                                    
    I2cwbyte &HA0                                               
    I2cstart                                    
    I2cwbyte &HA1                               
    I2crbyte X                                                   
    I2cstop                                                     
    
    
    Print Lesen
    
    Loop
    End
    So sieht das Programm aus. Hab ich da evtl. einen Denkfehler gemacht?

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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