Forum: Mikrocontroller und Digitale Elektronik i2c-eeprom24c256 daten einlesen/auslesen


von bastler (Gast)


Lesenswert?

hallo, guten tag.
ich habe ein i2c eeprom24c256 am avr32.

nun möchte ich daten speichern und auslesen,wieviel daten kann man max 
in der for-schleife senden/lesen, bevor das "Nack" kommen muss?

Sub ReadPage()
    Local tmp As Byte
    I2Cstart &ha0
    I2Cwrite Msb(Padr)
    I2Cwrite Padr
    I2CRepStart &ha1
    For i=1 To 32
      tmp=I2Cread, Ack
      buf1(i)=tmp
    Next
    tmp=I2Cread, Nack
    I2Cstop
End Sub

von bastler (Gast)


Lesenswert?

... hier geht es weiter :

Sub WritePage()
  I2Cstart &ha0
    I2Cwrite Msb(Padr)
    I2Cwrite Padr
    For i=1 To 32
      I2Cwrite buf(i)
    Next
    I2Cstop
    WaitMs 8
 End Sub

bzw wieviel daten in dieser for-schleife bevor das I2Cstop kommt?

mfg

von Magnus Müller (Gast)


Lesenswert?

Lesen:

In der Regel lässt sich der komplette Inhalt in einem Schwung auslesen. 
Du musst nur zu Beginn die erste auszulesende Adresse (z.B. 0) übergeben 
und dann die gewünschte Anzahl an Bytes (in deinem Fall bis zu 32768) 
auslesen. Das Auslesen des letzten Bytes beendest du mit einem NACK und 
einer STOP-Condition.


Schreiben:

Diese EEPROMs können auch im PAGE-Mode beschrieben werden. Damit kannst 
du mehrere aufeinanderfolgende Bytes innerhalb einer Page gleichzeitig 
beschreiben (in deinem Fall wohl bis zu 64 Bytes).

Nähere Infos kannst du aber auch dem Datenblatt deines EEPROMs 
entnehmen.

Gruß,
Magnetus

von bastler (Gast)


Lesenswert?

...innerhalb einer Page ....

wie muss man da vorgehen? werden da auch vorher die anzahl der zu 
scheibenden bytes angegeben, bevor beschrieben wird?

mfg

von bastler (Gast)


Lesenswert?

...innerhalb einer Page ....

wie muss man da vorgehen? muss da irgendwie ein erkennungsbyte gesendet 
werden?

mfg

von Joerg W. (joergwolfram)


Lesenswert?

Nein, Du schreibst einfach normal innerhalb der Page von z.B. 64 Bytes.
So z.B. ab 0. Aber anstelle nur einem Datenbyte (nach der Adresse) 
folgen halt bis zu 64 (oder auch mehr). Dabei werden intern nur die 
Bytes in der Page weitergezählt, nach 63 würde wieder Zelle 0 im 
internen Puffer beschrieben. Das eigentliche Schreiben wird dann durch 
die Stop-Condition ausgelöst.

Gruß Jörg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.