Forum: Mikrocontroller und Digitale Elektronik AVR ATtiny25 EEPROM schreiben nach Handbuch


von uhustic (Gast)


Lesenswert?

Hallo Zusammen

Ich möchte bei einem ATtiny25 (ganz einfach...) so wie im Handbuch 
beschrieben (und in diversen anderen Quellen) das EEPROM lesen und 
schreiben - aber das Schreiben funktioniert nicht...

  cli();
 // --- read ---
  SYS.EEByte = 0x77;
  while (EECR & (1<<EEPE) );   // wait for previous write access
  EEAR = 0x07;      // ee size = 128' => HByte not needed
  EECR |= (1<<EERE);    // start read
  SYS.EEByte = EEDR;    // read ee data register
 // --- write ---
  SYS.EEByte = 0x88;
  while (EECR & (1<<EEPE) );   // wait for previous write access
  EECR = (0<<EEPM1) | (0<<EEPM0);  // set programming mode
  EEAR = 0x08;      // ee size = 128' => HByte not needed
  EEDR = SYS.EEByte;    // write address
  EECR |= (1<<EEMPE);    // master prog. enable
  EECR |= (1<<EEPE);    // start write
 // --- done ---
  sei();

Der relevante C-Code ist m.E. 1:1 das, was im Handbuch steht.

Ich compiliere / simuliere etc. mit dem AVR-Studio 4.14 + 
WinAVR20100110, Handbuch für ATtiny25/45/85 Version 2586-AVR-04/11, 
S.16ff.

Lesen funktioniert: Man sieht es, wenn man sich die entsprechenden Werte 
im Watch- und im Memory-Fenster ansieht. Ich ändere dazu während der 
Simulation im Memory-Fenster die entsprechenden EE-Werte und sehe dann 
nach dem Lesen die Änderungen in der Variablen SYS.EEByte.

Schreiben geht aber nicht - weder im Simulator, noch auf der 
Zielhardware. Gibt es irgendwo einen "Trick", etwas, was ich vergessen 
habe (Interrupts sind ja schon disabled) oder irgendeine 
Rahmenbedingung, welche nirgendwo erwähnt ist, weil sie vielleicht zu 
trivial ist - und ich hab sie übersehen?

Danke schon mal für Eure Hilfe
uhustic - Michael

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.