Sari la conținut
ELFORUM - Forumul electronistilor

intrebare intrebatoarlegata de EEPROM la 16F877


Postări Recomandate

Am si eu o problema cu acest PIC. Vreau sa salvez anumite valori in memoria EEPROM a PIC-ului. Chiar si la o rutina simpla la care scriu doua valori una dupa alta prima inscriere o citesc corect a doua o citesc aiurea. Daca pun o intirziere intre cele doua scrieri, citirea primei inscriei se face corect a doua imi returneaza alta voaloare diferita de cea pe care o ciesc daca nu am intirziere intre cele doua scrieri. Adica concret la scrierea fara intirziere la a doua adresa imi apare ca am scris caracterul omega la scrierea cu intirziere citesc caracterul - , nu-mi pot da seama care este problema.

Link spre comentariu
  • Răspunsuri 7
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Top autori în acest subiect

Vizitator Cristiano_

bit 1 WR: Write Control bit

1 = Initiates a write cycle. The bit is cleared by hardware once write is complete. The WR bit

can only be set (not cleared) in software.

0 = Write cycle to the EEPROM is complete

 

Inainte de fiecare scriere trebuie sa astepti ca bitul WR sa fie resetat, dupa cum poti vedea in exemplul dat tot in datasheet:

 

BSF STATUS,RP1 ;

 

BSF STATUS,RP0

BTFSC EECON1,WR ;Wait for write

GOTO $-1 ;to complete

BCF STATUS, RP0 ;Bank 2

MOVF DATA_EE_ADDR,W ;Data Memory

MOVWF EEADR ;Address to write

MOVF DATA_EE_DATA,W ;Data Memory Value

MOVWF EEDATA ;to write

BSF STATUS,RP0 ;Bank 3

BCF EECON1,EEPGD ;Point to DATA

;memory

BSF EECON1,WREN ;Enable writes

BCF INTCON,GIE ;Disable INTs.

MOVLW 55h ;

MOVWF EECON2 ;Write 55h

MOVLW AAh ;

MOVWF EECON2 ;Write AAh

BSF EECON1,WR ;Set WR bit to

;begin write

BSF INTCON,GIE ;Enable INTs.

BCF EECON1,WREN ;Disable writes

 

Link spre comentariu

secventza folosita de mine:WRITE BSF STATUS,RP1 ; BSF STATUS,RP0 BTFSC EECON1,WR ;Wait for write GOTO $-1 ;to complete BCF STATUS,RP1 ;selectez bancul 0 BCF STATUS,RP0;Fara asta nu reusesc sa scriu in W Data_ee_addr MOVF DATA_EE_ADDR,W ;Data Memory BSF STATUS,RP1 ; BCF STATUS, RP0 ;Selectez Bank 2 MOVWF EEADR ;Address to write BCF STATUS,RP1 ;selectez bancul 0 BCF STATUS,RP0 MOVF DATA_EE_DATA,W ;Data Memory Value BSF STATUS,RP1 ; BCF STATUS,RP0 MOVWF EEDATA ;to write BSF STATUS,RP0 ;Bank 3 BCF EECON1,EEPGD ;Point to DATA memory BSF EECON1,WREN ;Enable writes BCF INTCON,GIE ;Disable INTs. MOVLW 0x55 ; MOVWF EECON2 ;Write 55h MOVLW 0xAA ; MOVWF EECON2 ;Write AAh BSF EECON1,WR ;Set WR bit to begin write BSF INTCON,GIE ;Enable INTs. BCF EECON1,WREN ;Disable writes BCF STATUS,RP1 ; BCF STATUS,RP0 RETURNAsta este secventza folosita. Mai este o problema cind folosesc rularea pas cu pas in MPLAB dupa executarea rutinei nu imi apare nici o data inscris in EEPROM chiar daca pe LCD cind rulez programul se inscrie. Mentionez ca am vazut la cineva care totusi ii mergea simularea cu MPLAB si ii scria in memoria EEPROM.De asteptat ca bitul WR sa devina jos astept in a treia linie din codul de mai sus. Idee este ca pun si un delay si in functie de el data citita dupa inscriere este diferita.

Link spre comentariu

tot nu inteleg unde ar fi problemaAm facut un program simplu de tot. Citesc 3 locatii din memoria EEPROM si le afisez pe LCD, apoi scriu 3 locatii. Pornesc montajul citesc FF, FF, FF inscriu apoi a,b,c. Opresc montajul. Ponesc montajul apare a,b,c. repet chestia asta de 3-4 ori si apare identic apoi apare o data ahc , mai merge 5 ori corect apoi ff,b,c iar 4-5 ori corect iar a,b,ff si nu imi dau seama unde este buba!!! Da-ti un sfat va rog.

Link spre comentariu

Atentie ! Exista pe piata un lot de PIC-uri care au bulite primele 4 locatii de EEPROM ! Am nimerit si eu 2 din astea ! Nu "tin minte" ce scrii in ele !Daca scrii de la locatia a 5 a, totul merge perfect ! Mi-am spart capul o juma de zii pina am descoperit bugul asta ! Asa ca incearca sa scrii la alte locatii decit cele de la inceputul EEPROM-ului ! Poate te aflii intr-o situatie similara.Daca nici asa nu merge ! ? Nu mai stiu ce sa-ti zic, ca ti-au cam zis baietii tot ce era de zis.Don Mario

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări