Forum: Mikrocontroller und Digitale Elektronik EEPROM 512kbit mit ATMEGA 16 über I²C ansteuern


von putzer philipp (Gast)


Lesenswert?

Hallo alle zusammen!

Ich habe wiedereinmal ein Problem.
Diesmal handelt es sich um die Ansteuerung eins EEPROM's (64kB x8) von 
st.
Die genaue Typenbezeichnung lautet: M24512-W

Die Routinen zur ansteuerung irgendwelcher Geräte über i2c habe ich 
selbst gemacht, bei einem 8bit Portexpander funktionierten sie auch 
schon (lesen und schreiben)

nur bei der ansteuerung des eeproms hackt's.

Ich habe mit folgendes überlegt:

- schreiben von einem Byte:
  - Unterprogramm dem ich die Geräteadresse, die Speicheradresse das
    Byte übergebe.

int i2c_eep_write_byte(unsigned char DEV_ADR, unsigned int EEP_ADR, 
unsigned char byte)

schreiben von einer Page(laut DB 128 Bytes aufeinmal):
 - Unterprogramm dem ich die Geräteadresse, die Speicheradresse des 
ersten
   Bytes, Pointer auf die zu schreibenden Bytes, und die Anzahl der 
Bytes
   übergebe. Das EEPROM selbst erhöht den Adresszeiger intern um Eins
   sobald das Byte übernommen wurde.

int i2c_eep_write_page(unsigned char DEV_ADR, unsigned int EEP_ADR, 
unsigned char *byte, unsigned char n)

   Ich bin mier aber nicht sicher ob die verwendung eines Pointers in 
der
   Form korrekt ist. In der Beziehung lasse ich mich sehr gerne 
belehren.

 - Unterprogramm, mit dem ich einen Teil des EEPROM's auslesen kann. Dem
   übegebe ich wieder die Geräteadresse, die Speicheradresse und die
   Anzahl der zu lesenden Bytes.

unsigned char *i2c_eep_read_sequence(unsigned char DEV_ADR, unsigned int 
EEP_ADR, unsigned char n_r)

   Bei der Rückgabe wollte ich einen Pointer auf das Datenarray, welches
   im UP mit den Daten eingelesen wurde, zurückgeben. Auch hier wieder
   weiß ich nicht ob meine Pointerverwendung sinnvoll ist.

Auch habe ich noch ein Problem die Daten zu überprüfen. Ich kann Sie vom 
EEPROM nur über Zwischenspeichern über das AVR EEPROM in PonyPorg 
auslesen. Ziemlich umständlich eben, ich weiß also nie ob der Fehler 
beim schreiben oder beim Lesen des i2c eeproms auftritt.

Im Großen und ganzen vermute ich den Fehler aber in meiner 
"Pointervergewaltigung".

Ich bin für jede Hilfe und Belehrung dankbar!
Schöne Grüße

philipp

von putzer philipp (Gast)


Angehängte Dateien:

Lesenswert?

Und hier noch der verschollenen Anhang!

grüße

philipp

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.