PERALATAN
- Komputer :
1 set
- Arduino Uno : 1 pcs
- Kabel USB tipe B :
1 pcs
PERCOBAAN :
8.1 Baca dan Tulis Memori
EEPROM
Pada percobaan kali ini akan dibuat program yang
berfungsi sebagai antarmuka penanganan memori eeprom. Antarmuka program
menggunakan komunikasi serial. Melalui Serial Termina l atau aplikasi lainnya,
user dapat melakuka n perintah baca dan tulis dari atau ke memori eeprom.
Prosedur :
1. Tuliskan sintaks p rogram berikut
ini pada Arduino IDE, kemudian lakukan kompilasi dan uplo ad program ke
mikrokontroler,
#include
<EEPROM.h>boolean exitProgram = 0;
void setup() {
Serial.begin(9600);
|
|||
Serial.println("=========
EEPROM
|
Access Via
|
Serial
|
==== ====");
|
Serial.println("Type this command
|
to execute
|
EEPROM opera
tion");
|
|
Serial.println("write : For write
|
data to
EEPROM");
|
||
Serial.println("read
|
: For read
|
data
|
from
|
EEPROM");
|
|
Serial.println("clear
|
: For
|
clear all
|
data
|
in EEPROM");
|
|
Serial.println("exit
|
: For
|
exit
|
from
|
program");
|
|
}
|
|||||
void loop() { int command;
while(!exitProgram) { do {
Serial.print("Type Command >> "); while(Serial.available()==0);command =
readCommandFromSerial();
switch(command) {
case 1 : Serial.println("Write
EEPROM Selected");writeEEPROM();
break;
case 2 : Serial.println("Read
EEPROM Selected");readEEPROM();
break;
case 3 : Serial.println("Clear
EEPROM Selected");clearEEPROM();
Serial.println("Clear EEPROM Finished"); break;
case 4 : Serial.println("Exit
From Program");exitProgram = 1;
break;
default : Serial.println("Wrong
Command, Please Ty pe Again !"); break;
}
}
while(command == 0);
}}
int readCommandFromSerial()
{ char stringFromSerial[10]; char data;
int command;
int countData = 0; for(int i=0;i<10;i++)
{
stringFromSerial[i]=0;
}
while(true) { if(Serial.available()) {
data =
Serial.read(); Serial.write(data); if(data=='\n') {
break;
}
else { if(data!='\r') {
stringFromSerial[countData]
= data; countData++;
}
}
}
}
if(strcmp(stringFromSerial,"write")==0){command
= 1;
}
else if(strcmp(stringFromSerial,"read")==0){command
= 2;
}
else if(strcmp(stringFromSerial,"clear")==0){command
= 3;
}
else if(strcmp(stringFromSerial,"exit")==0){command
= 4;
}
else{
command = 0;}
return command;
}
int readValFromSerial() { char stringFromSerial[10]; char data;
int val;
int countData = 0; for(int i=0;i<10;i++)
{
stringFromSerial[i]=0;
}
while(true) { if(Serial.available()) {
data =
Serial.read(); Serial.write(data); if(data=='\n') {
break;
}
else { if(data!='\r') {
stringFromSerial[countData]
= data; countData++;
}
}
}
}
sscanf(stringFromSerial,"%d",&val); return
val;
}
void clearEEPROM() { for(int i=0;i<512;i++) {
EEPROM.write(i,0);
}
}
void writeEEPROM() { int address;
do {
Serial.print("Address : "); address =
readValFromSerial(); if(address>512) {
Serial.println("Addres
maximal is 512 !, Please type again !");
}
}
while(address>512); int data;
do {
Serial.print("Data : "); data = readValFromSerial(); if(data>512) {
Serial.println("Data
maximal is 512 !, Please type again !");
}
}
while(data>512);EEPROM.write(address,data);
Serial.println("EEPROM Write Success !");
}
void readEEPROM() {
int address; do {
Serial.print("Address : "); address =
readValFromSerial(); if(address>512) {
Serial.println("Addres
maximal is 512 !, Please type again !");
}
}
while(address>512);
int data =
EEPROM.read(address);Serial.print("Data in
Address "); Serial.print(address,DEC);
Serial.print(" : ");
Serial.println(data,DEC);
}
Tugas dan Pertanyaan :
1. Jalankan
aplikasi Serial Monitor pada Arduino, pastikan konfigu rasi Serial Monitor
menggunakan baudrate 9600 dan pada akhir pengiriman data disertakan
karakter CR + LF. Lakukan penulisan data pada memori alamat 100, dengan data
bernilai 10. Kemudian keluar dari program dan matikan power Arduino dan
nyalakan kembali. Lakukan pembacaan data pada alamat 100, berapakah nilai data
pada alamat 100 ? Apakah data yang dituliskan sebelumnya hilang ?
tidak hilang , pada saat kita menulis alamat nya 100 dan data nya 10 nanti pada serial monitor akan tertulis sukses berarti data dan adres berhasil di simpan
sebelum di sipan kita harus memilih write , jika sudah di cabut baru kita ketik read jika dia minta alamat nya kita ketik saja 100 dan nanti akan keluar data alamat 100 adalah 10
tidak hilang , pada saat kita menulis alamat nya 100 dan data nya 10 nanti pada serial monitor akan tertulis sukses berarti data dan adres berhasil di simpan
sebelum di sipan kita harus memilih write , jika sudah di cabut baru kita ketik read jika dia minta alamat nya kita ketik saja 100 dan nanti akan keluar data alamat 100 adalah 10
2.
Kenapa
pada program penulisan data hanya dibatasi sampai 512 ? Jelaskan !
Ø Karena.EEPROM memiliki kapasitas memory
512
Byte saja
3. Kenapa
pada program alamat memori yang dapat ditulisi data hanya sampai 512 ? Jelaskan
!
Ø Karena,
batas data dari EEPROMhanya memiliki
kapsitas 512.jadi disaat data yang dimasukan lebih dari 512,makaprogram tidak akan
membaca data tersebut.
4.
Buatlah
kesimpulan dari praktikum ini !
Ø EEPROM (Electrically Erasable
Programmable Read-Only Memory).
Memori EEPROM bersifat NON-VOLATILE yaitu tidak akan
hlang datanya meskipun catu daya di matikan dan kecepatan akses lebih rendah
dari ram.

Tidak ada komentar:
Posting Komentar