Senin, 09 Desember 2013

EEPROM MEMORY

Naah sekarang akan membahas tentang EEPROM MEMORY.
EEPROM merupakan kependekan dari Electrically Erasable Programmable Read-Only Memory. EEPROM adalah tipe khusus dari PROM (Programmable Read-Only Memory ) yang bisa dihapus dengan memakai perintah elektris. Seperti juga tipe PROM lainnya, EEPROM dapat menyimpan isi datanya, bahkan saat listrik sudah dimatikan.
EEPROM sangat mirip dengan flash memory yang disebut juga flash EEPROM. Perbedaan mendasar antara flash memory dan EEPROM adalah penulisan dan penghapusan EEPROM dilakukan dilakukan pada data sebesar satu byte, sedangkan pada flash memory penghapusan dan penulisan data ini dilakukan pada data sebesar satu block. Oleh karena itu flash memory lebih cepat.
Dengan ROM biasa, penggantian BIOS hanya dapat dilakukan dengan mengganti chip. Sedangkan pada EEPROM program akan memberikan instruksi kepada pengendali chip supaya memberikan perintah elektronis untuk kemudian mendownload kode BIOS baru untuk diidikan kepada chip. Hal ini berarti perusahaan dapat dengan mudah mendistribusikan BIOS baru atau update, misalnya dengan menggunakan disket. Hal ini disebut juga flash BIO.
Naah langsung aja nih kita praktekkan, pada percobaan kali ini akan dibuat program yang berfungsi 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 kememori eeprom.



Prosedur :

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

}
 





2 komentar:

  1. Hotel and Casino New Orleans - Mapyro
    Find your 서귀포 출장마사지 way 안성 출장안마 around 시흥 출장마사지 the casino, 성남 출장샵 taking a look at our in-depth 서울특별 출장안마 look at the area's attractions, popular attractions and shopping. Find

    BalasHapus