www.mikrocontroller.net

Forum: Compiler & IDEs ATtiny2313 und EEprom lesen/schreiben prob.


Autor: Mario Leonhardt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich habe ein Problem mit dem Attiny2313 und dem EEprom lesen/schreiben.
Meine Routinne zu lesen:

unsigned char EEGET(int location) {
  while(EECR & (1<<EEPE)); /* Check if EEPROM is ready*/
  EEAR = location; /* Write EEPROM address register*/
  EECR |= (1<<EERE); /* Set the read strobe*/
  return EEDR;
}

und die zum schreiben:

void EEPUT(int location, unsigned char byte)  {
  while (EECR & (1<<EEPE)); /* Check if EEPROM is ready*/
  EEAR = location; /* Write EEPROM address register*/
  EEDR = byte; /* Write EEPROM data register*/
  EECR |= (1<<EEMPE); /* Set master write enable signal*/
  EECR |= (1<<EEPE); /* Set write strobe*/
}

Beide Routinen sind die denem Handbuch zum attiny2312 ähnlich.
Allerdings steht im Handbuch diese readRoutine:

unsigned char EEPROM_read(unsigned int uiAddress)
{
/* Wait for completion of previous write */
while(EECR & (1<<EEWE));
/* Set up address register */
EEAR = uiAddress;
/* Start eeprom read by writing EERE */
EECR |= (1<<EERE);
/* Return data from data register */
return EEDR;
}

Das EEWE Bit gibt es aber meiner meinung nach nicht, ist wohl ein
fehler...

Wenn ich nun meine Routinen Teste mit:

  EEPUT(1,5);
  myDelay(); //mal kurz warten...
  if (EEGET(1)== 5) {
    PORTB |= (1<<PB3);
  }

leuchtet die LED an PORTB3 nie... (ich kann sie manuell schalten,
richtungsregister usw. alles i.o.).
Ich bin am verzweiffeln mit diesem EEprom und hoffe auf Eure Hilfe!
Ach ja, ich verwende einen externen 10Mhz Quaz zur Taktung des
Tini2313, kann es sein das die 10Mhz Taktung das Problem für die EEprom
zugriffe ist? Was muss ich evtl. noch einstellen das das mit dem 10MHz
takt funktioniert?

Vielen Dank schon mal...
MfG dg1leo

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum nimmst du nicht die fertigen EEPROM-Routinen aus der avr-libc?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weil er erstmal seine avr-libc auf 1.2.5 hochziehen müsste...

Autor: Slowflyer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hatte vor kurzem auch ein Problem mit dem EEPROM beschreiben.
(http://www.mikrocontroller.net/forum/read-2-253001.html) Hab auch
alles so gemacht, wie es in dem Datenblatt stand. Dummerweise ging es
trotzdem nicht. Wie vorhin von Jörg vorgeschlagen, hab ich die libc auf
1.2.5 gebracht und siehe da, die Standardroutinen fürs EEPROM haben auf
einmal funktioniert. Warum und wie auch immer: es hat geholfen. Was ich
nicht ausprobiert habe, die Routinen in Assembler zu schreiben.

Autor: Mario Leonhardt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dank euch...

Ich hab den Fehler gefunden, es hing bei mir dann doch mit der
takfrequenz zusammen. Ich hatte mein makefile für das projekt per
editor richtig angepasst (10MHz) und in das von avr studio 4 angelegte
verzeichniss gespeichert. Allerdings hatte mir wohl avr-studion beim
builden das makefile geändert, da ich unter den projektoptionen im
avr-studio nicht noch mal extra die 10MHz angegeben hatte...
Die avr-libc hatte ich schon auf den stand 1.2.5 gebracht nachdem ich
beim suchen nach lösungen für mein problem schon über den thread
gestossen bin, hatte aber auch nichts geändert.
Da ich aber genau wissen wollte was wann wie passiert hab ich zunächst
die EEPUT und EEGET routine verwendet. Ich geh mal stark davon aus das
jetzt die EEprom-Routinnen auch funktionieren.

Habt Dank...
Leo

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.