- EEPROM u PIC16F877A:
- Kružni dijagram i objašnjenje:
- Simulacija korištenja PIC EEPROM-a:
- Programiranje PIC-a za EEPROM:
- Radno:
U ovom uputstvu naučit ćemo kako je lako spremiti podatke pomoću EEPROM-a prisutnog u mikrokontroleru PIC16F877A. U većini projekata u stvarnom vremenu možda ćemo morati spremiti neke podatke koji se ne smiju izbrisati čak i kad je napajanje isključeno. Ovo može zvučati kao kompliciran postupak, ali uz pomoć XC8 Compilera ovaj se zadatak može obaviti samo pomoću jednog retka koda. Ako su podaci veliki u smislu megabajta, tada možemo povezati uređaj za pohranu poput SD kartice i pohraniti te podatke na njih. Ali možemo izbjeći taj naporan postupak ako su podaci mali, jednostavno možemo koristiti EEPROM prisutan u PIC mikrokontroleru za spremanje podataka i preuzimanje u bilo kojem trenutku.
Ovaj vodič za PIC EEPROM dio je niza PIC vodiča za mikrokontroler u kojem smo krenuli s vrlo osnovne razine. Ako niste naučili prethodne vodiče, bilo bi ih bolje pogledati sada, jer ovaj vodič pretpostavlja da ste upoznati s povezivanjem LCD-a s PIC mikrokontrolerom i korištenjem ADC-a s PIC mikrokontrolerom.
EEPROM u PIC16F877A:
EEPROM je skraćenica za "Elektronički obrisiva i programabilna memorija samo za čitanje". Kao što i samo ime govori, riječ je o memoriji prisutnoj unutar PIC mikrokontrolera u koju možemo pisati / čitati podatke tako što ćemo je programirati. Podaci spremljeni u ovome izbrisat će se samo ako je to spomenuto u programu. Količina prostora za pohranu dostupna u EEPROM-u razlikuje se ovisno o svakom mikrokontroleru; detalji će biti dani u tehničkom listu, kao i obično. U našem slučaju za PIC16F877A raspoloživi prostor je 256 bajtova kako je spomenuto u njegovom listu sa specifikacijama. Sada ćemo vidjeti kako možemo koristiti ovih 256 bajtova za čitanje / pisanje podataka pomoću jednostavnog eksperimentalnog postavljanja.
Kružni dijagram i objašnjenje:

Shema sklopa za projekt prikazana je gore. Povezali smo LCD zaslon kako bismo vizualizirali podatke koji se spremaju i preuzimaju. Normalni potenciometar spojen je na analogni kanal AN4, pa se napaja promjenjivim naponom, a taj će se promjenjivi napon koristiti kao podaci za spremanje u EEPROM. Također smo koristili tipku na RB0, kada se pritisne ova tipka, podaci s analognog kanala bit će spremljeni u EEPROM.
Ta se veza može uspostaviti na ploči za ploču. U pinouts PIC mikrokontrolera prikazan je u donjoj tablici.
| S.Ne: | Pin broj | Naziv pribadače | Spojen na | 
| 1 | 21 | RD2 | RS LCD | 
| 2 | 22 | RD3 | E od LCD-a | 
| 3 | 27 | RD4 | D4 LCD-a | 
| 4 | 28 | RD5 | D5 LCD-a | 
| 5 | 29 | RD6 | D6 LCD-a | 
| 6 | 30 | RD7 | D7 LCD-a | 
| 7 | 33 | RBO / INT | Pritisnite tipku | 
| 8 | 7 | AN4 | Potenciometar | 
Simulacija korištenja PIC EEPROM-a:
Ovaj projekt također uključuje simulaciju dizajniranu pomoću Proteusa, pomoću koje možemo simulirati rad projekta bez ikakvog hardvera. Program za ovu simulaciju dan je na kraju ovog vodiča. Jednostavno možete koristiti Hex datoteku odavde i simulirati cijeli postupak.
Tijekom simulacije možete na LCD zaslonu vizualizirati trenutnu vrijednost ADC-a i podatke spremljene u EEPROM-u. Da biste trenutnu vrijednost ADC spremili u EEPROM, jednostavno pritisnite prekidač spojen na RB0 i ona će biti spremljena. Snimka simulacije prikazana je u nastavku.

Programiranje PIC-a za EEPROM:
Kompletni kôd ovog vodiča dan je na kraju ovog vodiča. U našem programu moramo pročitati vrijednosti iz ADC modula, a kada se pritisne tipka, tu vrijednost moramo spremiti u naš EEPROM. Budući da smo već naučili o ADC-ovima i LCD povezivanju, dalje ću objasniti kôd za spremanje i dohvaćanje podataka iz EEPROM-a.
Prema podatkovnom listu "Ovi uređaji imaju 4 ili 8K riječi programskog Flash-a, s rasponom adresa od 0000h do 1FFFh za PIC16F877A". To znači da svaki EEPROM prostor za pohranu ima adresu preko koje mu se može pristupiti, a u našem MCU adresa počinje od 0000h do 1FFFh.
Da biste spremili podatke unutar određene EEPROM adrese, jednostavno upotrijebite donji redak.
eeprom_write (0, adc);
Ovdje je "adc" varijabla cjelovitog tipa u kojoj su prisutni podaci koje treba spremiti. A "0" je adresa EEPROM-a na kojem se spremaju naši podaci. Sintaksu "eeprom_write" pruža naš XC8 complier, tako da će prevodilac automatski voditi brigu o registrima.
Za preuzimanje podataka koji su već pohranjeni u EEPROM-u i spremanje u varijablu može se koristiti sljedeći redak koda.
Sadc = (int) eeprom_read (0);
Ovdje je "Sadc" varijabla u kojoj će se pohraniti podaci iz EEPROM-a. A "0" je adresa EEPROM-a s kojeg dohvaćamo podatke. Sintaksu "eeprom_read" pruža naš XC8 complier, stoga će prevodilac automatski voditi brigu o registrima. Podaci spremljeni u EEPROM-u bit će u heksadecimalnom tipu. Stoga ih pretvaramo u cjelobrojne vrste dodavanjem prefiksa (int) ispred sintakse.
Radno:
Jednom kad shvatimo kako kod funkcionira i pripremimo se s hardverom, možemo testirati kôd. Učitajte kod na svoj PIC mikrokontroler i uključite postavku. Ako sve radi kako se očekivalo, trebali biste vidjeti trenutne vrijednosti ADC-a prikazane na LCD-u. Sada možete pritisnuti gumb za spremanje vrijednosti ADC-a u EEPROM. Sada provjeravate je li vrijednost spremljena isključivanjem cijelog sustava i ponovnim uključivanjem. Kad je uključen, trebali biste vidjeti prethodno spremljenu vrijednost na LCD zaslonu.

Kompletan rad ovog projekta za upotrebu PIC mikrokontrolera EEPROM prikazan je u video zapisu ispod. Nadam se da ste razumjeli tutorial i uživali u tome. Ako sumnjate, možete ih napisati u odjeljku za komentare u nastavku ili objaviti na našim forumima.

