PIC18F2680 - EEPROM Daten nach Reset weg

OP #2633972
Lesenswert?
• ▲
▼
Hallo,

habe hier ein Problem und komme nicht so recht weiter.

Hier kurz der weesentlich Teil es des Codes:
1
void main (void)
2
{
3
    ...
4
    WriteEEPROM(0,1,0xDE);
5
    temp = ReadEEPROM(0,1);
6
    ...
7
}
8

9
unsigned char ReadEEPROM(unsigned char addressh, unsigned char address)
10
{
11
    EECON1=0;                   //ensure CFGS=0 and EEPGD=0 
12
    EEADR = address;
13
    EEADRH = addressh;
14
    EECON1bits.RD = 1;
15
    return(EEDATA);
16
}
17
 
18
void WriteEEPROM(unsigned char addressh ,unsigned char address,unsigned char data)
19
{             
20
    EECON1=0;                   //ensure CFGS=0 and EEPGD=0
21
    EECON1bits.WREN = 1;        //enable write to EEPROM
22
    EEADR = address;            //setup Address
23
    EEADRH = addressh;
24
    EEDATA = data;              //set data
25
    
26
    //required sequence according to datasheet
27
    EECON2 = 0x55;              
28
    EECON2 = 0xaa;              
29
    
30
    EECON1bits.WR = 1;          //initiate write cycle
31
    while(!PIR2bits.EEIF);      //wait until finished
32
    EECON1bits.WREN = 0;        //end write cycle
33
    PIR2bits.EEIF = 0;      //clearing write operation flag bit    
34
}

Wenn ich beide Funktionen (write, dann read) im laufenden Programm 
aufrufe, funktioniert es.
Kommentiere den write Funktionsaufruf aus, compiliere erneut und lasse 
das Programm wieder laufen (dieses Mal nur mit read) bekomme ich nur 
0xFF zurück.

Ich mache wahrscheinlich irgendeinen blöden Anfängerfehler.
Hat jemand eine Idee?

Gruß
Chris
#2633981
Lesenswert?
• ▲
▼
Es kann sein, dass beim neu-Beschreiben vom PIC alles, also 
Programmflash, RAM und auch EEPROM gelöscht bzw zurückgesetzt wird. Wenn 
es geht, kannst du das ja mal mit einem Taster probieren. Wenn beim 
einschalten der Taster gedrückt ist, soll er schreiben und wenn nicht, 
soll er lesen. Dann schaltest du mit gedrückter Taste an, er schreibt, 
du machst wieder aus, danach ohne den Taster zu drücken wieder an und er 
ließt aus. Wenn es dann geht, ist ja alles ok, sprich er speichert auch 
ohne Strom.


BTW: Manchmal ist es nützlich, den ganzen Code zu kennen, da nicht 
selten der Fehler eben da liegt.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.