Pages

Sabtu, 07 Desember 2013

PRAKTIKUM 8 EEPROM MEMORY

PRATIKUM 8
EEPROM MEMORY




TUJUAN :

1.  Mampu membuat program untuk melakukan penyimpanan data pada memori eeprom.

2.  Mampu membuat program untuk melakukan pembacaan data dari memori eeprom.

Peralatan :
1. Komputer                 : 1 set
2. Arduino Uno             : 1 pcs
3. Kabel USB tipe B       : 1 pcs   

PERCOBAAN :

8.1 Baca dan Tulis Memori EEPROM 
Pada percobaan kali ini akan dibuat program yang berfungsi penanganan memori eeprom. Antarmuka program menggunakan sebagai antarmuka penanganan memori eeprom. Antarmuka program menggunakan komunikasi serial. Melalui Serial Terminal atau aplikasi lainnya, user dapat melakukan perintah baca dan tulis dari atau ke memori eeprom.



Percobaan :
1.  Tuliskan  sintaks  program  berikut  ini  pada  Arduino  IDE, kemudian lakukan kompilasi dan upload program ke mikrokkontroler.
#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  operation"); 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  Type  Again  !");

break;

} 
}

while(command
}
}


==  0);



int  readCommandFromSerial() { char  stringFromSerial[10]; char  data;
nt  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 konfigurasi 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 pembacan data pada alamat 100, berapakah nilai data pada alamat 100 ? Apakah data yang dituliskan sebelumnya hilang ? 
Jawab : Nilai data EEPROM pada alamat 100 adalah 10. Data atau nilai yang di tuliskan di EEPROM tidak hilang ketika keluar dari program atau mematikan power arduinonya karena pada alamat EEPROM tidak di beri sintak clear.

2.  Kenapa pada program penulisan data hanya dibatasi sampai 512 ? Jelaskan ! 
Jawab : Sebenarnya tergantung pada arduinonya ada kapasitas memori EEPROM hanya 512 byte seperti arduino Lylipad,diecimila dan ada juga kapasitas memori EEPROM sampai 1024 seperti arduino Uno

3.  Kenapa pada program alamat memori yang dapat ditulisi data hanya sampai 512 ?Jelaskan ! Jawab : Karena batas memori EEPROM hanya di tulis maksimal dari alamat 0 sampai 512

4.  Buatlah kesimpulan dari praktikum ini ! 
Jawab : 
a. Pada saat data ditulskan di EEPROM maka data akan menyimpan sehingga tidak hilang walaupun power arduinonya di matikan. 
b. Data EEPROM tidak tersimpan apabila alamat data melebihi kapasitas memori EEPROMnya

Tidak ada komentar:

Posting Komentar