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 13:42)
Als Antwort auf Re: EEPROM Ergbeniss falsch warum? von Jenny - 30.11.2010 11:25

> Guten Morgen Peter,
>
> nach einer langen und schlaflosen Nacht habe ich nun das Thema EEPROM fast
> verstanden.
> Ich wollte mit Hilfe des EEPROM 24C64 aus der Doku von C-Control in das
> Thema der EEPROMprogrammierung einsteigen.
> Später möchteich mit dem AT 24C1024B arbeiten.
>  
> Dieser Baustein hat laut Datenblatt "131072 word of 8bit", d.h. ich hab 8Pages
> mit je 16384 Bytes die ich pro Seite schreiben kann zur Verfügung. Stimmt das?

Nein. Die Seitengrö�e (Pagesize) ist laut Datenblatt 256 Bytes. Das P0 Bit in
der Device Address ist das höchste Adressbit um den Speicher zu adressieren.
Der Chip hat 1MBit = 131072 Bytes Speicher. Mit den beiden Adressbytes kann ich
aber nur 65536 Bytes ansprechen. Deshalb gibt es das P0 Bit um auch die oberen
65536 Bytes ansprechen zu können.

Die interne Pagesize ist nur der RAM Bereich in dem ich Bytes am Stück mit voller
Geschwindigkeit schreiben kann. Dann muÃ? man dem Chip etwas Ruhe geben, da bei
der nächsten Adressierung die Page in das Flash geschrieben wird.

Gruss Peter

>
> Diese 16384 Bytes sind meine sogenannten Stellen/ Register auf der Seite
> welche ich ins MSB (b15-b8) und LSB(b7-b0) aufteile. ODer?
>
> Also ich starte die Kommunikation mit der Deviceadresse 1010,
> A1 und A0 00 und P0 ist immer eine Page hier jetzt als Beispiel 0 und
> R/W ist für Write 0.
>
> Mein Beispiel:
>
> I2C_Start()
> I2C_Write(10100000) // Deviceadresse schreiben 0xA0
> I2C_Write(0x00>>); //MSB Stelle/Register 0 soll der Wert
> I2C_Write(0x00);          hineingeschrieben werden
> I2C_Write(x_long);
> I2C_Stop();
>
> //EEPROM lessen
>
> I2C_Start()
> I2C_Write(10100000) // Deviceadresse schreiben 0xA0
> I2C_Write(0x00>>); //MSB Stelle/Register 0
> I2C_Write(0x00);
>
> I2C_Start();
> I2C_Write(10100001); //Deviceadresse lessen 0xA1
> EEPROM_x_long=I2C_Read_NACK();
> I2C_Stop();
>
> Abs_Delay(100);
>
> Was meinst Du Peter, habe ich das ganze jetzt richtig verstanden und
> angesetzt? :)
>
> Liebe Grü�e
> Jenny


    Antwort schreiben


Antworten:

Re: EEPROM Ergbeniss falsch warum? (von Jenny - 30.11.2010 14:28)
    Re: EEPROM Ergbeniss falsch warum? (von PeterS - 30.11.2010 15:47)