EEPROM-Zugriff klappt nicht! Wo liegt der Fehler?

Gast #331866
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
Gast #331867
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren