mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik EEPROM-Problem


Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: fieser, klugscheissender Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...)

Autor: Jürgen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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;
}

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

Autor: fieser, klugscheissender Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.