Problém Psaní a čtení EEPROM 16F877A

V

vin2403

Guest
Například psaní do 22 0xFF adresu napsat do adresy 44 88 0xFE napsat do adresy 0xFC když jsem si přečetl adresu 0xFF obchodě 88 adresa 0xFE obchodě 44 adresa 0xFC obchodě 22 Proč se to děje? Může někdo od Nápověda
 
Můžeš post kód, který používáte napsat, že data?
 
neplatné SaveData () {if (RB1 == 0 | | RB2 == 0) {zpožděním (250), EEADR = 0xFF; EEDATA = hCount, Wren = 1; EECON2 = 0x55; EECON2 = 0xAA, WR = 1; while ( WR == 1) pokračovat, Wren = 0; EEADR = 0xFE, EEDATA = lCount, Wren = 1; EECON2 = 0x55; EECON2 = 0xAA, WR = 1; while (WR == 1) pokračovat, Wren = 0; EEADR = 0xFC, EEDATA = powCount, Wren = 1; EECON2 = 0x55; EECON2 = 0xAA, WR = 1; while (WR == 1) pokračovat, Wren = 0;}} void readData () {EEADR = 0xFF; powCount = EEDATA; RD = 1; EEADR = 0xFE, hCount = EEDATA, RD = 1; EEADR = 0xFC, lCount = EEDATA, RD = 1;} Pokud jsem dal jako tis, vezmu si požadovaný výsledek, ale proč, y data Ned číst jinam.
 
Jednu věc jsem si všimla hned, že nejste Nastavení / Nastavení EECON1 Re-bit 7, který určuje, zda píšete do EEPROM nebo paměti programu data. EEPGD trochu EECON1 registru musí být '0 'pro přístup k datové paměti. V "číst" funkce, zdá se, že je přiřazení hodnoty EEDATA před nastavením "RD" vlajka na 1. To znamená, že "stará", hodnota je převedena. Jinými slovy, první čtení pokusu vlastně živí poslední data, pokoušel se psát. Funkce read by měl vypadat takto:
Code:
 neplatné readData () {EEADR = 0xFF, RD = 1; powCount = EEDATA, EEADR = 0xFE, RD = 1; hCount = EEDATA, EEADR = 0xFC, RD = 1; lCount = EEDATA;}
Také nevím, o zbytek kódu (hlavní), ale měli byste vypnout přerušení (GIE bit) před zahájením zápisu / čtení sekvence a znovu povolit, než se vrátí. Také není inicializace lCount, hCount nebo powCount vidět, takže si nejsem jistý, jaké hodnoty jsou uloženy v těchto proměnných. Nezapomeňte, že všechny proměnné musí být inicializovány (nebo přímo přiřazena hodnota / výsledku), protože hodnoty, na startu není zaručeno, že nulový nebo cokoliv jiného. Pokud jste právě pokusili zvýšení hCount bez předchozího nastavením na nulu, nemůžete být jisti, co dostanete.
 
Ano, je to práce, děkuji pomáhat, budu opatrný příště používat.
 

Welcome to EDABoard.com

Sponsor

Back
Top