Hallo zusammen Mit folgendem Code versuche ich meine selbstgeschriebenen EEPROM-Funktionen zu testen. Die Funktion zum lesen vom EEPROM funktioniert, die Schreibfunktion jedoch nicht, da sich die Werte nicht verändern. Ich hoffe ihr könnt mir sagen woran das liegt.
1 | void main(void) |
2 | {
|
3 | // Lokale Variablen des Hauptprogramme
|
4 | int n; |
5 | char test; |
6 | |
7 | |
8 | for(n=0;n<500;n++){ |
9 | eepromwrite(n,0xAB); |
10 | test = eepromread(n); |
11 | }
|
12 | while(1) |
13 | {
|
14 | |
15 | }
|
16 | }
|
EEPROM-Funktionen:
1 | #define SETBIT(Adr,Bit) (Adr |= (1<<Bit))
|
2 | #define CHECKBIT(Adr,Bit) (Adr & (1<<Bit))
|
3 | |
4 | |
5 | char eepromread(int Adresse); |
6 | void eepromwrite(int Adresse,char Daten); |
7 | |
8 | char eepromread(int Adresse){ |
9 | // lokale Variablen
|
10 | char sregalt = SREG; |
11 | |
12 | // Verarbeitung
|
13 | cli(); |
14 | while(CHECKBIT(EECR,EEWE)); |
15 | EEAR = Adresse; |
16 | SETBIT(EECR,EERE); |
17 | SREG = sregalt; |
18 | return(EEDR); |
19 | }
|
20 | |
21 | void eepromwrite(int Adresse,char Daten){ |
22 | // lokale Variablen
|
23 | char sregalt = SREG; |
24 | |
25 | // Verarbeitung
|
26 | cli(); |
27 | while(CHECKBIT(EECR,EEWE)); |
28 | while(CHECKBIT(SPMCR,SPMEN)); |
29 | EEAR = Adresse; |
30 | EEDR = Daten; |
31 | SETBIT(EECR,EEMWE); |
32 | SETBIT(EECR,EEWE); |
33 | SREG = sregalt; |
34 | }
|
Danke im Voraus