Forum: Mikrocontroller und Digitale Elektronik EEPROM-Problem


von Jürgen (Gast)


Lesenswert?

Hallo,

ich habe ein kleines Problem mit dem EEPROM eines AT90CAN128.
Ich kann in den EEPROM schreiben und auch aus dem EEPROM lesen, die 
Daten kann ich per JTAG auslesen. Es funktioniert auch nach einem RESET.
Stoppe ich die Debugging Session oder nehme ich den Controller von der 
Spanunng, dann verliere ich den EEPROM-Inhalt. Das kann ja nicht im 
Sinne des Erfinders sein, oder? Vielleicht kann mir jemand helfen?
Das angehängte c-file sind die Schreib/Lese-Routinen für das EEPROM.

Vielen Dank...

von fieser, klugscheissender Rahul (Gast)


Lesenswert?

>Das angehängte c-file sind die Schreib/Lese-Routinen für das EEPROM.

Wenn da was angehängtes wäre...

U.U. hat der CAN128 auch eine EEPROM-Preserve-Fuse (oder so ähnlich).
Die verhindert, dass das EEPROM beim flashen gelöscht wird.
(Kann aber auch sein, dass das mit was anderem zusammenhängt...)

von Jürgen (Gast)


Angehängte Dateien:

Lesenswert?

Sieht so aus, als wäre ich zu doof eine Datei anzuhängen. Reicht es 
nicht aus, den Ort der Datei über 'Durchsuchen' anzugeben?

Das mit dem Fuse überprüfe ich mal. Allerdings habe ich den µC nicht 
neue geflasht, trotzdem ist der Inhalt verloren.

Ich denke mal, das Anhängen klappt nicht, deshalb einfach Copy & Paste :

************************************************************************ 
*
#include <iocan128v.h>
#include <macros.h>

void EEPROM_write(unsigned int uiAddress, unsigned char ucData)
{
 /*clear global interrupt flag*/
 CLI();

 /*Wait for completion of previous write*/
 while(EECR & (1<<EEWE));

 /*Set address and data register*/
 EEAR = uiAddress;
 EEDR = ucData;

 /*prepare to write to EEROM by setting EEMWE*/
 EECR |= (1<<EEMWE);

 /*Start EEPROM write by setting EEWE*/
 EECR |= (1<<EEWE);

 /*Set global interrupt flag*/
 SEI();
}

unsigned char EEPROM_read(unsigned int uiAddress)
{
  /*clear global interrupt flag*/
  CLI();

  /*Wait for completion of previous write*/
  while(EECR & (1<<EEWE));

  /*Set address register*/
  EEAR = uiAddress;

  /*Start EEPROM read by setting EERE*/
  EECR |= (1<<EERE);

  /*Return data*/
  return EEDR;
}

***********************************************************************

von fieser, klugscheissender Rahul (Gast)


Lesenswert?

>Allerdings habe ich den µC nicht
>neue geflasht, trotzdem ist der Inhalt verloren.

IMHO arbeitet JTAG aber genau so...(bin mir aber nicht ganz sicher.)

>Reicht es nicht aus, den Ort der Datei über 'Durchsuchen' anzugeben?
Wenn man "Vorschau" drückt scheinen sich die Anhänge (manchmal) in Luft 
aufzulösen...

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.