Forum: Compiler & IDEs Warum wird erst beim 2. mal das EEPROM beschrieben?


von Kapitän Blei (Gast)


Lesenswert?

Hallo

Ich habe ein Problem wenn ich das EEPROM meines ATMega32 beschreiben
will. Der 1. Eintrag fehlt immer im EEPROM erste wenn ich z.b. wie hier
im Beispiel die Adresse $1 beim 2. mal mit dem Wert beschreibe ist er
auch im EEPROM. Von da an ist aber jedes schreiben erfolgreich.

Habe ich da irgendwie eine Initialisierung vergessen?

Gruss

Blei



EEPROM_Write (1, 0xAA);
EEPROM_Write (1, 0xAA);
EEPROM_Write (2, 0xBB);
EEPROM_Write (3, 0xCC);
EEPROM_Write (4, 0xDD);

void EEPROM_Write (unsigned int Address, unsigned Daten)
{
  while (EECR & (1<<EEWE))

  EEAR = Address;
  EEDR = Daten;

  EECR |= (1<<EEMWE);
  EECR |= (1<<EEWE);
}

von Volkmar e. P. (keepitsimple)


Lesenswert?

Hi,

kann es sein, dass Du das Semikolon bei der While-Schleife vergessen
hast? Wenn ja, dann führt es dazu, dass >>EEAR = Address<< nur in der
While-Schleife abgehandelt wird.

Gruß
Volkmar

von Rolf Magnus (Gast)


Lesenswert?

Das dürfte das Problem sein. Denn beim ersten Byte muß nicht gewartet
werden und die while-Schleife wird nicht durchlaufen. Der
Schreibzugriff wird zwar durchgeführt, aber auf der Adresse, die halt
vom letzten Zugriff noch eingestellt war.

von Simon K. (simon) Benutzerseite


Lesenswert?

Was ist denn das "unsigned Daten" in deiner Argumentenliste?

von Kapitän Blei (Gast)


Lesenswert?

Hallo zusammen.

Kleine Ursache grosse Wirkung. Ja es war das Semikolon das fehlte.

"unsigned Daten" ist auch ein fehler aber funktioniert.

Muss "unsigned char Daten" heissen.



THX

Gruss

Blei

von Rolf Magnus (Gast)


Lesenswert?

> "unsigned Daten" ist auch ein fehler aber funktioniert.

Ist halt ein unsigned int. Das int kann man hier weglassen, genauso wie
bei short int.

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.