Anda di halaman 1dari 17

LECTURE 23

EEPROM

1
EEPROM
Electrically Erasable Programmable Read Only
Memory
512 byte, 100 ribu kali baca atau tulis
Non volatile (tidak menguap)
Dapat menyimpan data saat catu daya diambil
dan dapat diubah saat program berjalan
Berguna menyimpan nilai yang tidak boleh
hilang seperti nilai kalibrasi, nomor ID,
password, dll

2
EEPROM
Proses penulisan membutuhkan waktu antara
2,5ms sampai dengan 4 ms.
Jadi program yang dibuat mengecek juga apakah
sudah selesai jika ingin menulisi dengan data baru.
Register yang mengatur kerja EEPROM adalah EECR,
EEAR, EEDR

3
EECR

Eeprom Control Register


Mengontrol operasi dari EEPROM

4
EECR

Bit 7..4 reserved dan selalu ‘0’ jika dibaca


Bit 3 EERIE (Eeprom Ready Interrupt Enable)
– memberi logika ‘1’ akan mengenabel Eeprom
Ready Interrupt jika bit I dalam SREG diset. ‘0’
akan mendisable interupsi, akan
menimbulkan interupsi yang konstan ketika
EEWE (Eeprom Write Enable) diclear

5
EECR

Bit 2 EEMWE (Eeprom Master Write Enable) –


mengeset ‘1’ bit ini akan EEPROM dapat ditulisi.
Ketika EEMWE diset, pengesetan EEWE selama
4 siklus clock akan menulis data ke alamat yang
dipilih pada EEPROM, jika EEMWE ‘0’ maka
pengesetan EEWE tidak berefek.
Jika EEMWE diset oleh software, hardware akan
mengclear setalah 4 siklus clock

6
EECR

Bit 1 EEWE (Eeprom Write Enable) – sinyal


EEWE adalah strobe penulisan ke EEPROM
Jika alamat dan data telah diset dengan benar,
EEWE diset untuk menulis nilai ke dalam
EEPROM
EEMWE harus diset sebelum EEWE diset, jika
tidak proses tidak berjalan

7
EECR

Bit 0 EERE (Eeprom Read Enable) – sinyal EEWE


adalah strobe pembacaan ke EEPROM
Jika alamat dan data telah diset dengan benar
pada EEAR (Eeprom Address Register), EEWE
diset agar memicu pembacaan EEPROM
Saat EEPROM dibaca, CPU halted selama 4 siklus
clock sebelum instruksi berikutnya dieksekusi.
Jangan ada perubahan register selama pembacaan

8
EEAR

9
EEAR

10
CODE

11
CODE

12
CODE
// Declare your global variables here
char buf[33];
eeprom int alfa; // pemesanan tempat untuk variabel alfa di EEPROM

void main(void)
{
// Declare your local variables here
int i;

13
CODE
// LCD module initialization
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("Data EEPROM alfa");
lcd_gotoxy(0,1);
sprintf(buf,"%x ",alfa);
lcd_puts(buf);

alfa=0x55;
lcd_gotoxy(6,1);
sprintf(buf,"%x ",alfa);
lcd_puts(buf);

i=alfa;
lcd_gotoxy(12,1);
sprintf(buf,"%x ",i);
lcd_puts(buf);

14
CODE
eeprom int alfa=1; // meletakkan nilai 1 ke EEPROM dengan nama var
alfa dengan tipe data integer

Eeprom char beta //memesan tempat di eeprom utk var beta tipe data
char

Eeprom longarray[5] //memesan tempat di eeprom untuk array sebanyak


5 tipe data long

Eeprom char string[ ]=“Hello” //meletakkan string hello di eeprom

Penulisan ke eeprom saat program berjalan



Void main(void)
Int I;
..
Alfa=0x55; //tulis lgs ke eeprom di var alfa yg telah dipesan diawal

15
CODE
Pembacaan dari eeprom saat program berjalan

Void main(void)
Int I;
..
i=alfa; //baca lgs dari eeprom di var alfa yg telah dipesan diawal

16
End of slide……

Anda mungkin juga menyukai