#pragma config XINST = OFF
#pragma config FOSC = HS1
// pentru ca RC1 să funcționeze așa cum ar trebui
#pragma config SOSCSEL = DIG
#pragma config WDTEN = OFF
// protecția codului
#pragma config CP0 = ON
#pragma config CP1 = ON
#pragma config CP2 = ON
#pragma config CP3 = ON
nesignificat char ee_write (caractere nesemnate, valoare char nesemnată) /запись байта во встроенную EEPROM
static char CARRY;
EEADRH = 0;
EEADR = adr;
EEDATA = valoare;
EECON1bits.EEPGD = 0;
EECON1bits.CFGS = 0;
EECON1bits.WREN = 1;
EECON2 = 0x55;
EECON2 = 0xAA;
EECON1bits.WR = 1;
în timp ce (EECON1bits.WR); // așteptați până când ciclul de scriere precedent este finalizat
Am încercat să scrie în moduri diferite, inclusiv bont exemplul docurile de pe microcontroler, dar aceasta nu funcționează. sau mai degraba functioneaza astfel:
val = 0xFF;
ee_write (0, val);
val = ee_read (0); - returnează 0xFF
Dar când voi da a doua oară de la comanda terminalki
val = ee_read (0);
Întotdeauna primesc 0.
și anume Citirea doar corectează adevărul după prima înregistrare (bănuiesc că undeva există o valoare).
tema este probabil simplă, dar nu mă prind de unde mă înșel.
Vă mulțumim anticipat pentru răspuns.
1. cât de fiabilă este această EEPROM în μ - pentru cei din 5 cusături μ, într-una datele nu sunt salvate, este scrisă în mod normal, dar ambasadorul resetării feed-ului este citit 0.
Pur și simplu, dacă aș fi acolo, de exemplu, o constantă importantă pe care o voi scrie care apoi se va deteriora - o bucată de fier într-o cărămidă se va întoarce.
2. Când se utilizează firmware din MPLAB.X cu pickit3, câmpul său este umplut cu 0xFF. Nu am putut găsi cum să o eliminăm, adică cum să-i spuneți programatorului să nu-l atingă nici măcar?
1. Este de încredere, ar fi din contră, apoi a folosit altceva. Undeva am fost de părere că datele de stocare pe termen lung ar trebui să fie stocate în memoria FLASH, iar în EEPROM se schimbă relativ rapid (timpul de funcționare, jurnalul de erori, salvarea ultimei valori înainte de a opri alimentarea etc.). Se presupune că, în timp, taxa se pierde și conținutul memoriei este distorsionat. Dar atunci parametrul de 20 de ani de stocare a datelor nu este dat.
2. HITECH, de exemplu, are macro-ul __EEPROM () pentru a inițializa valorile EEPROM din codul sursă.
Mulțumesc, logica dvs. este clară, dar când scrieți 20 de ani într-o singură cheie, este dificil să se recalifice mai multe probleme apar doar în C
Apropo, sunt încă stresat de astfel de momente când scrieți
dacă (a> = 3)
Am întâlnit într-un fel că compilatorul a interpretat această expresie ca o schimbare, în orice caz, am avut o astfel de impresie, pentru că rescriind condiția câștigată în mod normal. acum mi-e teamă de astfel de comparații
Desigur, am interpretat-o ca o schimbare, dacă a fost scrisă dacă (a >> = 3)
trecerea la biții cel mai puțin semnificativi și la 3 biți din variabila "a".
Expresiile de atribuire sunt permise și utilizate pe scară largă
în astfel de construcții.
Rezultatul if este 0 / nu 0 a variabilei "a" (condiție standard C)
Nu este vorba despre sintaxa unei limbi, ci despre învățare.
în general, nu înțeleg ce este cant, cine poate vedea și avea un secret?
supliment:
Am despachetat noul adaptor și l-am cusut - funcționează bine cu acesta (așa cum ar trebui), adică Se citește indiferent de intrarea în memorie.
și anume problema apare asupra adaptoarelor care au lucrat o vreme - eu, cel pe care l-am reluat constant o jumătate de an și pe cel care îl folosește în mod constant.
și anume ceva se întâmplă cu MK în timp, ceea ce nu-i permite să-și citească corect industria.
am înțeles ce înseamnă problema.
a constatat că defecțiunea de pe adaptorul meu (care clipește constant) a apărut atunci când a primit puterea de la pikkit3. când mi-am asamblat un circuit cu întreruperi al tânărului, totul a decurs corect. Mai departe am aflat că dacă după ce clipește MK pentru a deconecta placa de la programator și a reconecta totul din nou funcționează corect. și anume aparent imediat după ce se aprinde undeva, ceva nu crește împreună.
există o singură întrebare - pentru a obține un adaptor care nu funcționează de la client și a se juca cu acesta, acesta poate ieși.
în general, avem o conversație cu noi înșine, dar probabil că puteți rezolva singuri aceste glitches (înțelegeți ce poate influența)