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);
}
makasih banyak sudah share
BalasHapussolder uap
Hotel and Casino New Orleans - Mapyro
BalasHapusFind your 서귀포 출장마사지 way 안성 출장안마 around 시흥 출장마사지 the casino, 성남 출장샵 taking a look at our in-depth 서울특별 출장안마 look at the area's attractions, popular attractions and shopping. Find