الذاكرة الدائمة EEPROM

ماهي ذاكرة EEPROM

تحتوي شريحة Atmega328p على 3 أنواع من الذاكرة

نوع الذاكرةالإستخدامالسعة
ذاكرة الفلاش Flash memoryتستخدم لتخزین الكود (sketch)32KB
ذاكرة الـ رام RAMتنشط أثناء تنفیذ البرنامج مثل قیم المتغیرات2KB
ذاكرة الایبروم EEPROMھي ذاكرة سنركز علیھا في هذا المقال1KB

 

الـ EEPROM ھي ذاكرة مكونة من بايتات Bytes منفصلة وهي مخصصة للاحتفاظ بالبيانات حتى بعد فصل الطاقة عنها. وھي مفيدة كثيرا في كثير من المشاریع المتقدمة. في الأردوينو أونو (شريحة Atmega328p ) تكون سعة الايبروم = 1KB و تكون البايتات مرقمة من 0 إلى 1023.لكل بايت عنوان ويمكنه تخزين قيمة (0-255 ) فقط وتعتبر قيمة صغيرة. تعمل ذاكرة الـ EEPROM بشكل أبطأ من الـ RAM حوالي (3ms) لتخزين البايت الواحد. الإيبروم لها عمر افتراضي من مرات الكتابة أو القراءة (حوالي 100 ألف مرة) الرقم كبير لاشك. لكن في بعض التطبيقات ينبغي الانتباه لهذا الأمر حتى لا تتلف الايبروم.

كتابة و قراءة 1 بايت

توجد مكتبات عديدة غير رسمية للتحكم بالـ EEPROM ولديك الحرية  في استخدامها وفي بعض الأحيان تكون أسهل من المكتبة الرسمية لكننا سنستخدم المكتبة الرسمية EEPROM.h في هذا المقال. لا يجب تنزيل المكتبة حيث تأتي مدمجة مع محرر أكواد الأردوينو. يمكنك ملاحظة استخدام الأمر ()EEPROM.write لكتابة قيمة داخل الذاكرة كل ما عليك فعله تمرير العنوان و القيمة وستتم الكتابة. كما يستخدم الأمر ()EEPROM.read لقراءة قيمة مخزنة داخل الذاكرة. مشكلة الأمرين السابيقين  أنهما يعملان على تخزين أو قراءة بايت واحد فقط . بينما معظم المتغيرات (int مثلا) تكون أكثر من بايت

نوع المتغيرintfloatbyteboollongcharstring
عدد البايتات241141any
				
					#include "EEPROM.h"
void setup(){Serial.begin(9600);}
void loop() { 
EEPROM.write(0,199); //(address:0-1023 , value 0-255)
byte x=EEPROM.read(0); //(address)
Serial.println(x);}

				
			

كتابة و قراءة الأرقام

في هذا المثال يتم تخزين رقم int في ذاكرة الايبروم (x) ثم إعادة قراءته و وضع القيمة في (y). يجب أن يكون المتغيرين من نفس النوع وفي حال اختلاف النوع قد تظهر قراءات خاطئة. لاحظ استخدام الأمر ()EEPROM.put للتخزين في الذاكرة و ()EEPROM.get  لقراءة القيمة وووضعها داخل متغير.

				
					#include
int x=31287; int y;
void setup(){
Serial.begin(9600);}
void loop(){
EEPROM.put(0, x); 
EEPROM.get(0, y);
Serial.println(y);}
				
			

كتابة و قراءة العبارات

 لا يمكن تخزين عبارة بصيغة String داخل الذاكرة وبدلاً عن ذلك استخدم مصفوفة حروف محددة الحجم . 

				
					#include "EEPROM.h"
char x[13] = "JEEM2 Academy";
char y[13];
void setup(){
EEPROM.put(100,x); //used address : 100
EEPROM.get(100,y);
Serial.begin(9600);
Serial.println(y);}
void loop(){}
				
			

معرفة حجم المصفوفة المطلوب لاحتواء عبارة String

يمكنك استخدام الأمر ()length لتحديد الحجم المناسب لمصفوفة الحروف. لاحظ أننا نحتاج لمصفوفة  ب 6 خانات لاحتواء Sting x و 53 خانة لاحتواء String y.

				
					String x="EEPROM";
String y="electronically erasable programmable read-only memory";
void setup(){
Serial.begin(9600);
Serial.println(x.length());
Serial.println(y.length());}
void loop(){}
				
			

قراءة مقاومة متغيرة وتخزين القيمة في ذاكرة EEPROM

لاحظ استخدام المتغير  add لتحديد عنوان تخزين القيمة داخل الذاكرة حيث يجب أن لا تتجاوز المجال من 0 إلى 1023

				
					#include "EEPROM.h"
int x=0;
int add=0;
void setup(){
delay(10000);
Serial.begin(9600);}
void loop(){
x=analogRead(A0);
Serial.println(x);
if(add<1022){ EEPROM.put(add,x); add=add+2;}
delay(3000);}

				
			

انتقل إلى المتجر

ذاكرة AT28C64B-15PU EEPROM

26.00 ر.س

مقاومة متغيرة بمحور 15 مم

5.00 ر.س

حزمة أسلاك متنوعة

20.00 ر.س

اردوينو اونو | ARDUINO UNO

50.00 ر.س
انتقال إلى الأعلى