EEPROm Atmega 16 schreiben im Simulator

OP #3482354
Lesenswert?

Hallo,

ich möchte mir Daten in den EEPROM schreiben und das ganze mit dem 
Simulator im AVR Studio 6 testen.

Ich habe folgendes Programm:
1
void EEPROM_write(unsigned int Address, unsigned char Data)
2
{
3
  while(EECR & (1<<EEWE));        //Warten, falls Schreibvorgang im Gange
4
  EEAR = Address;      //Addresse ins Address-Register laden
5
  EEDR = Data;      //Daten ins Daten-Register laden
6
  EECR |= (1<<EEMWE);    //Master Write Bit setzen
7
  EECR = EECR | 0b00000010;    //Schreibvorgang starten
8
}
9

10

11

12
unsigned char EEPROM_read(unsigned int Address)
13
{
14
  while(EECR & (1<<EEWE));  //Warten, falls Schreibvorgang im Gange
15

16
  EEAR = Address;      //Addresse ins Address-Register laden
17
  EECR |= (1<<EERE);    //Lesevorgang starten
18
  EECR=0x01;
19
  return EEDR;      //Übergabe des EEPROM Inhalts
20
}



In der Main Funktion habe ich dann den Aufruf
1
EEPROM_write(0x0001,0x05);
Ich starte den Simulator und in den Registern wie die Adressen und Bits 
gesetzt werden. Jedoch kommt nix beim EEPROM Speicher an wenn ich mir in 
der Simulation anschaue.

Das auslesen mit der Funktion funktioniert soweit.

Kann mir jemand einen Tipp geben?

Danke
OP #3482374
Lesenswert?

ich bin immer schrittweise mit F11 vorwärts gegangen. gewartet habe ich 
nicht. Da im Simulator auch das lesen unverzögert funktionierte.

Ich habe es nochmal probier und ein Delay von 500 MS eingefügt aber auch 
ohne erfolg beim schreiben scheint es nicht übernommen zu werden
#3482400
Lesenswert?

Andreas Meissner schrieb:
> ich bin immer schrittweise mit F11 vorwärts gegangen. gewartet habe ich
> nicht. Da im Simulator auch das lesen unverzögert funktionierte.

Lesen dauert ja auch nur 4 Takte.

Andreas Meissner schrieb:
> Ich habe es nochmal probier und ein Delay von 500 MS eingefügt aber auch
> ohne erfolg beim schreiben scheint es nicht übernommen zu werden

Und du hast wirklich bis zum Ablauf des Delays gewartet? 500 ms dauern 
im Simulator ewig.


Was sagt denn überhaupt das EEWE Bit in EECR? Solange das noch auf 1 
ist, ist das EEPROM auch noch nicht fertig beschrieben.

Und darauf geachtet, dass die Timing-Vorgaben für das EEWE-Setzen 
eingehalten werden, hast du natürlich, oder?

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