AVR ATtiny25 EEPROM schreiben nach Handbuch

Gast #2860989
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

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