mikrocontroller.net

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


Autor: bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...innerhalb einer Page ....

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

mfg

Autor: bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...innerhalb einer Page ....

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

mfg

Autor: Joerg Wolfram (joergwolfram)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.