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