Rabu, 11 Desember 2013

EEPROM MEMORY


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 melakukan perintah baca dan tulis dari atau ke memori eeprom. Langkah kerja

>Tuliskan sintaks program berikut ini pada Arduino IDE, kemudian lakukan kompilasi dan upload 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 ag ain !");

}

}

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);

}

> Setelah itu upload program yang telah decompile ke mikrokontroler 


> Kemudian bukalah serial monitor pada menu tools atau dengan menekan CTRL+SHIFT+M  dan atur baudrate diserial monitor pada posisi 9600 dan ubah juga pengiriman data karakter CR + LF ,sehingga muncul gambar seperti dibawah ini:


Kemudian ketik Write pada layar untuk memasukkan alamat dan masukkan nilai datanya EEPROM ,setelah itu tutup layar serial monitor dan cabut kabel port arduino dari computer atau laptop anda:



Setelah itu pasang kembali kabel port arduino dan langsung buka serial monitor dan muncul layar seperti dibawah kemudian anda ketikkan ’ read ‘ pada layar dan tuliskan addres sebelumnya sehingga nilai data akan muncul seperti sebelumnya tanpa kita ketikkan karena telah tersimpan :










Tidak ada komentar:

Posting Komentar