arduinoProgmem

PROGMEM

ذخیره داده در فلش، یا همان محل ذخیره ی کدهای برنامه به جای SRAM. همان طور که می دانید SRAM محل ذخیره ی متغیرهایی است که توسط برنامه ایجاد می شود. و نسبت به حافظه ی FLASH ظرفیت خیلی کمتری دارد. برای مطالعه انواع حافظه به اینجا مراجعه کنید.

PROGMEM:

کلمه ی PROGMEM یک اصلاح کننده ی متغیر است، که باید فقط با نوع داده هایی که در کتابخانه pgmspace.h تعریف شده اند استفاده شود. این کلمه به کامپایلر می گوید که “این اطلاعات را در حافظه ی فلش ذخیره کن”. به جای اینکه در حافظه ی SRAM قرار بدهد. همانطور که می دانید بطور معمول متغیر در SRAM قرار می گیرد.

PROGMEM بخشی از کتابخانه pgmspace.h می باشد. این کتابخانه در ورژن های جدید نرم افزار آردوینو به طور اتوماتیک به پروژه اضافه می شود. اگر شما از ورژن های قدیمی تر از 1.0 استفاده می کنید، باید این کتابخانه را به بالای برنامه ی خود اضافه کنید.مانند مثال زیر:

استفاده از PROGMEM دو رویه دارد. بعد از قرار دادن داده در حافظه ی فلش.برای خواندن آن از حافظه ی فلش و برگرداندنش به حافظه ی SRAM ، هم یک متد مخصوص که در کتابخانه pgmspace.h تعریف شده است وجود دارد.

نحوه استفاده:

dataType: نوع متغیر.

variableName: اسم متغیر.

چون PROGMEM یک تعریف کننده ی منغیر است، هیچ قانون سختی برای اینکه در کجای برنامه استفاده شود وجود ندارد. بنابراین کامپایلر آردوینو همه نوع روش استفاده از آن را که در زیر آمده قبول می کند. ولی تجربه نشان داده که در بعضی ورژن های آردوینو PROGMEM با یکی از این روش ها کار کرده و با بقیه کار نکند.در جدیدترین ورژن آردوینو وقتی که PROGMEM را بعد از اسم متغیر استفاده کردیم بهتر جواب داد.

یک کد نمونه از PROGMEM:

در مثال زیر نحوه ی خواندن و نوشتن منغیرهایی از نوع CHAR و INT با استفاده از PROGMEM نشان داده شده است:

آرایه ای از رشته ها:

وقتی در پروژه هایی از مقدار زیادی نوشته استفاده می کنیم، آرایه ای از رشته ها تعریف می کنیم. چون خود رشته ها نوعی آرایه هستند. این مثال از یک آرایه ی دو بعدی می باشد:

نکته:

توجه داشته باشید که متغیر باید بصورت گلوبال تعریف شده باشد یا از نوع static باشد، در غیر اینصورت PROGMEM کار نخواهد کرد.

نوع کوتاه شده:

وقتی که از دستوری با ساختار زیر استفاده می کنیم:

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

 

دیدگاه ها :

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد.