www.mikrocontroller.net

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


Autor: putzer philipp (Gast)
Datum:

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

Autor: putzer philipp (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und hier noch der verschollenen Anhang!

grüße

philipp

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.