Takodje imam problema sa upisom u interni eeprom kod pic16f887 . Citanje je ok, probavao razlicite kodove, citao datasheet od istog sve radim kako treba.
Koristio custom funkcije, a pokusavao sam i sa Hi-Tech C compilerovim funkcijama eeprom_write(address, data) , kao i njihov macro EEPROM_WRITE(address, data) .
Ako upisem rucno ili inicijalizujem neke vrednosti, onda ih on iscita kako treba, ali meni treba da program moze da vrsi citanje i upis.
Code:
void eeprom_wr(unsigned char address, unsigned char data)
{
GIE=0;
while (WR) continue;
EEADR = 0x01;
EECON1 == 0x7F;
WREN=1;
EEDATA = 0x02;
EECON2 = 0X55;
EECON2 = 0XAA;
WR = 1;
WREN = 0;
GIE = 1;
/*
while (WR) continue;
EEADR = address;
EEDATA = data;
RP0 = 1;
EEPGD = 0;
WREN = 1;
GIE = 0;
EECON2 = 0X55;
EECON2 = 0XAA;
WR = 1;
GIE = 1;
WREN = 0;
*/
}
Ni jedan ne radi upis, dok u proteusu rade obe varijante i komentarisana i nekomentarisana.
Da li je neko imao slican slucaj sa ovim kontrolerom? Citao errata za ovaj kontroler, nisam naisao da spominju tako nesto.