mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik EEPROM-Zugriff klappt nicht! Wo liegt der Fehler?


Autor: Steffen Hausinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits,

ich schaff es nicht, bei meinem AT90PWM3 auf den EEPROM zuzugreifen.
Dabei verwende ich sogar die im Datenblatt vorgeschlagenen Routinen zum
Lesen und Schreiben des EEPROMs:

uint8_t EEPROM_Read(uint16_t Address)
{
  while(EECR&(1<<EEWE))
  {};
  EEAR=Address;
  EECR|=(1<<EERE);

  return EEDR;
}


void EEPROM_Write(uint16_t Address, uint8_t Data)
{
  while(EECR&(1<<EEWE))
  {};

  EEAR=Address;
  EEDR=Data;
  EECR|=(1<<EEMWE);
  EECR|=(1<<EEWE);

  return;
}

Hinweis: Interrupts sind ausgeschaltet, mit dem Bootloader hab ich auch
noch nichts am Hut.

int main(void)
{
  uint8_t Temp;

  cli();

  ...

  Delay_ms(2000);
  EEPROM_Write(0x0000,0xAA);
  Delay_ms(2000);
  Temp=EEPROM_Read(0x0000);

// Temp=0xAA; // Test->funktioniert
  if(Temp==0xAA)
    TestPort|=1<<Output1;

  while(1);

  return 1;
}

Hinweis: Delay_ms(2000) wartet 2s.

Dieser Programmausschnitt funktioniert nicht. Der Pin des Testports
bleibt immer auf Low! Warum? Die Betriebsspannung ist 5V und stabil.

Weiß jemand Rat?

Grüsse,
Steffen

Autor: Steffen Hausinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das komische ist, dass das Programm im Simulator (AStudio) einwandfrei
funktioniert. In der Praxis aber nicht. Das kann doch nur ein Timing
oder Spannungsproblem sein - oder?

Nur: auch mit einem "Warm-Reset" (manueller Reset, also kein POR)
funktioniert es nicht. Und für's Timing habe ich doch schon extra die
Warteblöcke á 2s eingeschoben...

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.