Forum: Mikrocontroller und Digitale Elektronik M24M02 EEPROM


von Christoph H. (christoph_b)


Lesenswert?

Hallo

Ich habe ein I2C EEPROM (M24M02-DR) von ST. Leider check ich nicht auf 
welcher I2C Adresse das EEPROM hört. Vieleicht hat das schon mal jemand 
verwendet. Soll mit einem Atmega angesteuert werden.

Schönen Abend
Christoph

von Oliver J. (skriptkiddy)


Lesenswert?

Die Adressen sind:

0xA0, 0xA2, 0xA4, 0xA6 (bei E2=0)

0xA8, 0xAA, 0xAC, 0xAE (bei E2=1)
(Achtung Adressen schon einmal nach links geschiftet)

Auf jeder Adresse kannst du auf 64kByte zugreifen.


Gruß Oliver

von tt2t (Gast)


Lesenswert?

Datenblatt lesen bildet !!!

kleiner Tip: S. 10

von Christoph H. (christoph_b)


Lesenswert?

OK Danke schonmal

Noch eine kurze Frage.  Write Control kann die ganze Zeit auf LOW sein.
Bekomme ich nur den Wert 255 ausgelesen.
1
#define F_CPU 16000000
2
#include <avr/io.h>
3
#include <mk3/MK3_2560_TWI.h>
4
#include <mk3/MK3_2560_LCD.h>
5
#include <avr/delay.h>
6
int main(void)
7
{
8
  char n=0;
9
  MK3_INIT_LCD();
10
  MK3_LCD_CLEAR();
11
  MK3_INIT_TWI();
12
  MK3_TWI_START();
13
  MK3_TWI_SEND(0xA0,false); // ADRESSE DEVICE
14
  MK3_TWI_SEND(0x00,false); // REGISTER ADRESSE
15
  MK3_TWI_SEND(0x55,false); //DATEN
16
  MK3_TWI_STOP();
17
18
19
  _delay_ms(1000); 
20
  MK3_TWI_START();
21
  MK3_TWI_SEND(0xA0,false); // ADRESSE DEVICE
22
  MK3_TWI_SEND(0x00,false); // REGISTER ADRESSE
23
  MK3_TWI_START();
24
  MK3_TWI_SEND(0xA0+1,false); Daten auslesen
25
  n=MK3_TWI_READ(false); 
26
  MK3_TWI_STOP();    
27
  
28
   MK3_LCD_PRINT_UINT(n);
29
    while(1)
30
    {
31
        
32
    }
33
}

von Oliver J. (skriptkiddy)


Lesenswert?

Du machst Murks. Schau ins Datenblatt. Da steht drin, wie man mit dem 
EEPROM reden muss.

Gruß Oliver

von Christoph H. (christoph_b)


Lesenswert?

Ok danke. Klappt nun soweit.

Noch eine kurze Frage.
Ich muss ein Array mit 1026 Werten abspeichern.Ich kann ja max 256 Bytes 
nacheinander schreiben. Muss ich nach 256 Bytes das WC kurz auf High 
ziehen oder wie läuft der weiter Schreibvorgang ab?

Habe den WC PIN dauernd auf LOW

von TL431 (Gast)


Lesenswert?

Er schreibt nach dem I2C Stop.

WC muss auf low wenn er schreiben sollen darf.

von Falk B. (falk)


Lesenswert?

@  Christoph B. (christoph_b)

>Ich muss ein Array mit 1026 Werten abspeichern.Ich kann ja max 256 Bytes
>nacheinander schreiben.

Eben, also musst du blockweise schreiben, aka Page mode.

> Muss ich nach 256 Bytes das WC kurz auf High

Nein.

>ziehen oder wie läuft der weiter Schreibvorgang ab?

Datenblock in den EEPROM schreiben, I2C_STOP, dann schreibt er und 
reagiert erst wieder auf I2C Kommandos, wenn er fertig geschrieben hat.

MfG
Falk

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.