Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: EEPROM Ergbeniss falsch warum? Kategorie: Programmierung C (von PeterS - 30.11.2010 15:47)
Als Antwort auf Re: EEPROM Ergbeniss falsch warum? von Jenny - 30.11.2010 14:28

> Hallo Peter,
>
> ok danke, also habe ich es nicht verstanden :(
> Aber meine Deviceadresse mit 10100000 stimmt oder?
> Was ich nicht so verstehe ist, ich habe doch 8 Pages aber nur
> 1 Bit (P0) um auf die 8 Pages zuzugreifen oder? Aber P0 kann doch
> nur 0 oder 1 sein?

Nein, Du hast keine 8 Pages. Dein EEPROM hat eine Kapazität von 1MBit =
131072 Bytes. Nach der Device Adresse schreibst Du 2 Bytes Speicheradresse.
Mit den 2 Bytes kannst Du 65536 Bytes adressieren. Da fehlen dann aber noch
65536 Bytes bis zu 131072. Um zwischen den ersten und den zweiten 65536
Bytes umzuschalten, hast Du das P0 in der Device Adresse. Diese Adressierung
hat nichts mit den Pages zu tun!!!

Wenn Du jetzt nacheinander Daten in das EEPROM schreibst, ist das zu schnell,
als das sofort alle Daten in das Flash geschrieben werden können. Dafür gibt es
jetzt die Pages. Diese Pages sind ein RAM Bereich im EEPROM, in dem automatisch
die Bytes geschrieben werden, wenn Du mehr als 1 Byte schreibst. In diesem Fall
ist die Page 256 Byte groÃ?, es gibt aber auch andere I2C EEPROMs die andere
Pagegrö�en haben. Wenn das RAM (also die Page) voll ist, mu� das Device neu
mit I2C Start & Stop angesprochen werden, weil in der Zwischenzeit der RAM
Bereich (die Page) in das Flash geschrieben wird.

Also die Pages haben nichts mit P0 oder der Speicheradressierung zu tun! Die Pages
sagen nur, wieviel Bytes Du am Stück in das EEPROM aufeinmal schreiben darfst.
Ist die Page voll, muÃ? das EEPROM mit I2C Start neu angesprochen werden, da
in der Zwischenzeit das Kopieren der Daten in das Flash stattfindet.

Gruss Peter

>
> Sind mein MSB und LSB (2 Adressbytes) die sogenanten Stellen von 0-255 Bytes
> von Page 0 in die geschrieben werden kann.
> Bsp: wahl von Byte 15 in das der Wert A geschrieben werden soll, dann ist
> das MSB(0x00) und mein LSB(0x0F) oder?
>
> Danke für Deine Geduld:)
>
> GruÃ?
> Jenny


    Antwort schreiben


Antworten: