ArduinoMemory

حافظه در آردوینو

در این پست قصد داریم تا در مورد انواع حافظه در آردوینو و نحوه استفاده از آن صحبت کنیم.

حافظه در آردوینو:

به طور کلی حافظه در میکروکنترلر هایی که در آردوینو از آنها استفاده شده است، به سه قسمت تقسیم می شوند:

  • حافظه ی فلش (فضای برنامه). این حافظه جایی است که کدهای نوشه شده ی ما در آن قرار می گیرند.
  • SRAM (حافظه ی ثابت با دسترسی متغیر). این حافظه محل قرار گیری متغیرهایی است که کدهای ما ایجاد می کنند، و از آن استفاده می کنند.
  • EEPROM این حافظه برای ذخیره ی اطلاعات به مدت طولانی استفاده می شود.

حافظه ی فلش و EEPROM  ثابت هستند. و بعد از خاموش شدن میکرو از بین نمی روند. ولی حافظه ی SRAM بعد از خاموش شدن میکرو پاک می شود.

نکته: حافظه FLASH (PROGMEM) تنها در زمان پروگرام کردن میکرو قابل تغییر است. شما نمی توانید بعد از شروع به کار میکرو آنرا تغییر دهید.

مقدار حافظه برای چند نمونه از میکروهایی که در بوردهای آردوینو استفاده شده است، به شرح زیر است:

 

 

 

ATMega168
ATMega328P
ATmega1280
ATmega2560
Flash
(1 kByte used
for bootloader)
16 kBytes 32 kBytes 128 kBytes 256 kBytes
SRAM 1024 bytes 2048 bytes 8 kBytes 8 kBytes
EEPROM 512 bytes 1024 bytes 4 kBytes 4 kBytes

نکته ای که در جدول بالا باید به آن توجه کرد، این است که حاظه ی برنامه یا FLASH بسیار بیشتر از حافظه ی SRAM است. وقتی شما متغییر از جنس CHAR ایجاد می کنید. و برای مثال در داخل آن جمله ای را قرار می دهید:

char message[] = "I support the Cape Wind project.";

شما مقدار 33 بایت از حافظه را به این متغیر اختصاص داده اید. توجه داشته باشید که بایت NULL هم در آخر جمله قرار می گیرد. این مقدار حافظه در مقابل 1024 بایت حافظه ی SRAM چیزی نیست، ولی اگر شما برنامه ای با حجم بالا بنویسید. مثلا کار کردن با نمایشگرها و یا تبدیل ESP8266 به سرور که کدهای زیادی به صورت HTML و CSS و … را در متغیر ثابتی قرار می دهید. در آن زمان حافظه ی SRAM بسیار کوچک است.

راه حل این مشکل استفاده از PROGMEM است. در ورژن 1.0 نرم افزار آردوینو از دستور ()F برای نوشتن یک استرینگ در حافظه فلش استفاده می شود:

Serial.println(F("This string will be stored in flash memory"));

 

دیدگاه ها :

من بات نیستم

دیدگاهتان را بنویسید

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