Eeprom írni és olvasni

#pragma config XINST = OFF
#pragma config FOSC = HS1
// az RC1 dolgozott, ahogy kellene
#pragma config SOSCSEL = DIG
#pragma config WDTEN = OFF
// kód védelem
#pragma config CP0 = ON
#pragma config CP1 = ON
#pragma config CP2 = ON
#pragma config CP3 = ON

unsigned char ee_write (unsigned char ADR, unsigned char érték) statikus char CARRY;

EEADRH = 0;
EEADR = adr;
EEDATA = érték;

EECON1bits.EEPGD = 0;
EECON1bits.CFGS = 0;
EECON1bits.WREN = 1;
EECON2 = 0x55;
EECON2 = 0xAA;
EECON1bits.WR = 1;
míg a (EECON1bits.WR); // várni, amíg az előző írási ciklus befejeződött

Próbáltam írni a különböző módon, beleértve tompítják a példa a dokkok a mikrokontroller, de ez nem működik. inkább úgy működik, mint ez:
Val = 0xFF;
ee_write (0, Val);
Val = ee_read (0); - visszaadja 0xFF

de ha adok másodszor a csapat terminalki
Val = ee_read (0);
Én mindig 0.

azaz Megszabadulni pozvraschaet igazság csak az első bejegyzés (gyanítom, hogy valahol van érték).

téma valószínűleg egyszerű, de nem értem, hogy hol hibáztam.

Köszönöm előre is a választ.

1. Mennyire megbízható ez EEPROM mikron - az 5 Tűzött mikron, az egyik az adatok általában nem írt sohranyayutsya- de sózás visszaállító pitalova olvasni 0.
éppen akkor, amikor ott voltam egy ilyen fontos állandó, írja le, amely aztán romlik - egy darab vas egy tégla sor.

2. Ha a firmware MPLAB.X segítségével pickit3 - EEPROM tele van 0xFF értékeket. Nem találtam, hogyan kell eltávolítani, azaz a hogyan kell mondani, hogy a programozó EEPROM ne érintse?

1. Megbízhatóság lenne a másik irányba, majd valami mást. Valahol van olyan vélemény, hogy a hosszú távú adattárolást kell tárolni FLASH memóriát és EEPROMe viszonylag gyorsan változó (működési idő, hiba napló, megtartják az utolsó előtti érték kikapcsolás, stb.) Látszólag végül elvesztik töltésüket és torz memória tartalmát. De akkor ez nem illik az opció 20 éves adatmegőrzési.
2. HITECH, például, __EEPROM () makró EEPROM kezdeti értékeket a forráskódban.

Köszönjük, a logika világos, de ha 20 éven át dolgozott ugyanabban a szellemben, hogy nehéz újra megtanulni a több probléma merül fel csak a C
Van így több törzs ilyen pillanatokban, amikor írsz
ha (a> = 3)
valahogy találkoztak a fordító értelmezni ezt a kifejezést, mint a váltás, legalábbis az a benyomásom alakult ki, mert átírta a feltétel kód működik megfelelően. most attól félek az ilyen összehasonlítások


Természetesen értelmezhető, mint egy eltolás, ha azt írták, ha (a >> = 3)
ahol a váltás a legkevésbé szignifikáns bit és 3 bit a változó „a”.
értékadó érvényesek és széles körben használt
Az ilyen konstrukciók.
Eredményt, ha - az 0/0 nem „a” változó (normál körülmények között)
Ez nem a szintaxis a nyelv - és a vágy, hogy tanuljanak.

Általában nem értem, hogy mit nem tud, valaki meg tudja találkoznak a titok?

kiegészítésére:
csak kicsomagolva egy új adapter és megkéri, - dolgozott vele minden rendben (ahogy kell), azaz olvasni, függetlenül a bejegyzés a memóriában.
azaz A probléma akkor jelentkezik, adapterek, amelyek már dolgoztak egy ideig - számomra az egyik, hogy én hat hónapig folyamatosan reflash és az ügyfél, aki használja azt folyamatosan.
azaz valami történik a MC az idő múlása, amely nem teszi lehetővé számára, hogy helyesen értelmezi eeprom.

részben, rájöttem, hogy mi a probléma.
Rájöttem, hogy egy hiba az én adapter (ami folyamatosan varrt) merült fel, amikor megkapta ételt pikkit3. Amikor összegyűjtötte a rendszeres program alaptera minden megfelelően működik. További azt tapasztaltam, hogy ha változtatni letiltani MK felelős programozás és dugja mindent újra működik. azaz Valószínűleg csak azután villog valahol valami nem kondenzált.
Egy kérdés marad -, hogy törött a kliens adapter, és játszani vele, hogy jöhet ki.
Általában fordult a beszélgetés maga, de az ilyen hibák valószínűleg csak magát, és eldöntheti, (hogy megértsék, milyen hatással lehet)

Kapcsolódó cikkek