mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C EEPROM sequentiell lesen/schreiben mit ATmega


Autor: Claus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe mal eine spezielle Frage zum schreiben und lesen eines I2C EEPROMs
(24C256) mit einem ATmega128.
Einzelne Bytes kann ich auf eine gezielte Adresse schreiben und auch
ein zeln wieder auslesen.
Laut Datenblatt des EEPROMs kann ich 64 Bytes in Folge senden und den
Speicher auch durchgehend auslesen. Doch nach jedem eingelesenen Byte
sendet mein µC immer ein NACK was bedeutet den Vorgang abzuschließen.
64 mal schreiben kann ich,doch wie kann ich meinem µC klar machen das
er durchgehend einlesen soll und kein NACK sondern ACK sendet?
Mal schauen

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hardware/Software-I2C? Sprache?
In C:

temp=i2c_read(ack bzw nack);

Autor: Claus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich schreibe i C und nutze die TWI Register im ATmega. INTs sind nicht
aktiviert.
~~~~~~~~~~~~~~~~~~~~~~
//EEPROM nochnals anspechen, jetzt LESEN-Modus

TWDR = EXT_EEPROM_ADR_READ;
TWCR = (1<<TWINT) | (1<<TWEN);
while(!(TWCR & (1<<TWINT)));
if((TWSR & 0xF8) != MR_SLA_ACK)
    error(ERR_NO_MR_SLA_ACK);

// Jetzt BYTE einlesen
TWCR = (1 << TWINT) | (1 << TWEN);
while(!(TWCR & (1<<TWINT)));
    readchar = TWDR;

if(((TWSR & 0xF8) != MR_DATA_ACK) && ((TWSR & 0xF8) != MR_DATA_NACK))
   error(ERR_NO_MR_SLA_ACK);
~~~~~~~~~~~~~~~~~
Daten werden immer brav eingelesen, aber immer ein NACK gesendet.

mal sehen

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
TWCR, bit6, TWEA.

Autor: Claus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke,
der Groschen ist gefallen
Gute Nacht

Autor: Steffen Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

bei mir ist leider kein Groschen gefallen. Ich bin I2C-Anfänger und
will auch einen 24C256 verwenden. Aber ich habe keine Ahnung, wo ich
anfangen soll und vor allen Dingen wie. Es wäre toll, wenn du mir
helfen könntest.

Steffen

Autor: Robert Meisenbacher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

im TWI-Demo des AVR-LibC Manuals ist die I2C-Ansteuerung eines EEPROMs
sehr detailliert beschrieben.
Ich konnte als C-Anfänger den Code leicht auf 256kBit-EEPROMs
erweitern.(zusätzliche 8-Adressbits für EEPROM übertragen)

Robert

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.