Forum: Mikrocontroller und Digitale Elektronik PIC18F2680 - EEPROM Daten nach Reset weg


von Christian H. (jhetfield)


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

von Michael S. (rbs_phoenix)


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.

von Christian H. (jhetfield)


Lesenswert?

@Michael: Ja, das wars. Danke

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.