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


von Steffen Hausinger (Gast)


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

von Steffen Hausinger (Gast)


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...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.