EEPROM در آردوینو – آموزش آردوینو جلسه نهم

EEPROM چیست؟

این اولین سوالیه که باید بهش جواب بدیم و بعد بریم سراغ تابع های EEPROM در آردوینو.

EEPROM  مخفف Electrically Erasable Programmable ROM هستش ، و از اسمش مشخصه دیگه ! یک نوع حافظه است و با سیگنال های الکتریکی قابلیت  پاک شدن و برنامه ریزی مجدد رو داره و اطلاعات این نوع حافظه ها دائمی هستش  و بعد از قطع تغذیه حفظ میشه.
میکورکنترلرهای AVR مقدار اندکی حافظه ی EEPROM دارن. مثلا مگا8 512بایت داره، و آی سی های دیگه که ممکنه بدردمون بخورن هم میزان حافظشون به شرح زیره:

ATmega328 :  1024 bytes
ATmega168 و ATmega8 : 512 bytes
ATmega1280 و ATmega2560 : 4 KB (4096 bytes)
Genuino 101 boards have an emulated EEPROM space of 1024 bytes

توضیحات خاصی نداره این حافظه ها ولی باید بدونین هر میکرویی که توی بردتون استفاده شده یا حافظه خارجی ای که متصل کردین چقدر ظرفیت داره تا بتونین هر خونه رو به درستی مدیریت کنید.
تابع های کتابخونه EEPROM.h رو بریم که بشناسیم 😉

تابع های EEPROM در آردوینو

تابع EEPROM.write

این تابع برای نوشتن داده ی هشت بیتی (1 بایت) در آدرس مشخص شده به کار میره:
EEPROM.write(addr,val);
ورودی اول (addr) تابع آدرس حافظه ورودی هستش و

(val)  داده ای که میخواین توی اون خونه از حافظه بنویسید.

مثلا فرض کنیم 512 بایت حافظه EEPROM داریم ، پس 0 تا 511 تا آدرس خونه حافظه داریم.

طبق گفته ی بخش EEPROM سایت آردوینو ، نوشتنر EEPROM در آردوینو حدود 3.3ms طول میکشه.

و باید اینو هم بدونیم که طول عمر EEPROM حدود  100 هزار بار نوشتن/پاک کردن هست، پس توی پروژتون این نکته رو فراموش نکنید 😉

مثال ها : برنامه ی پاک کردن تمام خانه های EEPROM در آردوینو: (بعد از پاک کردن تمامی خونه ها led پایه ی  13 رو روشن میکنم  برای تایید انجام عملیات)

این عمل چون یکبار قراره اتفاق بیوفته و دائمی نیست از حلقه ی setup استفاده میکنیم.

 

تابع EEPROM.update

این تابع مثل write میمونه ، فقط قبل از اینکه مقدار رو روی حافظه ذخیره کنه اون رو میخونه و اگر مقداری که قراره بریزه و مقداری که روی خونه ی  حافظه هست با هم برابر باشن ، دیگه اون رو روی خونه ی حافظه نمیریزه .

اینطوری هم زمان 3.3ms از دست نمیره، هم زیاد عمل نوشتن/پاک شدن انجام نمیشه و طول عمر EEPROM رو افزایش میده.

فرمت اونم به شکل زیره:

addr آدرس خونه ی حافظه مورد نظره.که قراره اونجا اطلاعات ریخته بشه.
val هم مقداریه که قراره توی خونه ریخته بشه.

توی for اول ، شماره ی هر خونه رو توی خودش میریزه، یعنی خونه ی یک برابر یک میشه و خونه ی شماره ده برابر ده . این اتفاق برای خونه های صفر تا 255 میوفته.
توی for  دوم، مقدار 12 توی خونه ی 3 ریخته میشه و به 254 خونه ی دیگه کاری نداره!

تابع EEPROM.read

این تابع برای خواندن داده از آدرس تعیین شده به کار میره:

متغیر addr آدرس خونه ی حافظ ایه که متغیر val توی اون نوشته میشه.

متغیر  addr از صفر شروع میشه و تا n-1 ادامه پیدا میکنه که n نشون دهنده ی اندازه EEPROM هستش. و مشخصه که خروجی تابع هم مقدار val هستش که داده رو برمیگردونه.

تابع EEPROM.length

ممکنه  یادتون نیاد که بردتون چقدر حافظه EPPROM داره ، با نوشتن این کد براتون مقدار حافظه رو برگشت میده.

تابع EEPROM.get

این تابع برای خوندن همه نوع دیتا (int , float , string & …) از EEPROM در آردوینو کاربرد داره.

address که خونه ی حافظه رو مشخص میکنه و از صفر شروع میشه. (int)
data هم اون اطلاعاتی هست که قراره بخونه ( int یا float یا هر دیتای دیگه میتونه باشه ).

تابع EEPROM.put()

این تابع برای نوشتن همه نوع دیتا (int , float , string & …) روی EEPROM در آردوینو کاربرد داره .
میتونید اعداد اعشاری float و string هم حتی روی eeprom بریزید، فقط باید توجه کنید که هر کدوم از این متغیر ها دیگه 1 بایتی نیستن و فضای بیشتری رو دربر میگیرن. اگه یادتون باشه آموزش برنامه نویسی آردوینو جلسه دوم : متغیر ها و عملگرها فضای اشغالی هر بایت نوشته شده بود.
فرمت کلی این تابع هم به شکل زیره:

address محل ذخیره ی داده هست و
Data اون دیتایی که قراره داخل حافظه ریخته بشه.
این تابع برای نوشتن از قوانین تابع EEPROM.update()  تبعیت میکنه. یعنی اگر مقداری که قراره بنویسید با مقداری که قبلا توی اون خونه بوده برابر باشه دیگه مقدار رو مجددا روی اون خونه نمیریزه.

 

تابع []EEPROM

این تابع  اجازه میده از EEPROM در آردوینو مثل یک آرایه استفاده کنیم و بتونیم روی اون هم بنویسیم و هم بخونیم.(آرایه اگر یادتون نیست چیه باید توی آموزش های c دنبال مفهومش بگردین ، توی جلسات آخر آموزش C سعی میکنم اونو توضیح بدم)

 

حمیدرضا مودت

یک مهندس الکترونیک ، علاقه مند به یاد دادن و یاد گرفتن پیرامون دانش برق و الکترونیک

شما ممکن است این را هم بپسندید

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

از لوینیک حمایت کنید