انواع حافظه در میکروکنترلرهای AVR – نحوه ذخیره سازی داده ها

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

انواع حافظه در میکروکنترلرهای AVR

حافظه Flash 

در این حافظه کدهای برنامه ، یعنی همان فایل hex.*  که توسط پروگرامر بر روی تراشه load  می شود قرار دارد. و CPU میکروکنترلر برنامه ای که اجرا می کند را از این حافظه برداشت می کند. این حافظه میکرو کنترلر های AVR از نسل جدید حافظه می باشد که دارای دو قسمت Application  و Boot Loader  هستند. در قسمت Application  کدهای برنامه قرار می گیرد. اما ناحیه Boot Loader این امکان را فراهم می کند که میکروکنترلر بدون استفاده از ابزار پروگرامر ، برنامه حافظه Flash را تغییر دهد. برای تعیین ثابت ها و یا آرایه ها و … در این حافظه قبل از نام و اندیس کلمه flash  قرار می گیرد.

مثلا تعریف یک آرایه در این حافظه به صورت زیر نوشته می شود.

;[] flash char row

حافظه EEPROM  

این حافظه جزء حافظه های ماندگار می باشد. که میکروکنترلر می تواند اطلاعاتی را در این حافظه داخلی بنویسد و یا اطلاعاتی را از آن بخواند. همچنین لازم به یادآوری است که این حافظه در صورت قطع تغذیه میکروکنترلر پاک نمی شود. از این حافظه زمانی استفاده می شود که میکروکنترلر باید دیتایی را در خود ثبت کند و بعداً آن را به کاربر اعلام کند و در صورتی که میکروکنترلر Reset  شد یا تغذیه آن قطع گردد داده ذخیره شده از بین نرود. یکی از نکات مهمی که باید توجه کنید . برای خواندن و یا نوشتن در حافظه eeprom  باید یک زمان تاخیری (حدود 10 میلی ثانیه) در نظر گرفته شود. یعنی زمانی که از این حافظه در حین اجرای برنامه دیتایی فراخوانی و یا ثبت می شود باید بعد از یک تاخیر 10 میلی ثانیه به ادامه برنامه بپردازید. برای تعیین متغیرها ، ثابت ها و یا آرایه ها و … در این حافظه قبل از نام و اندیس کلمه eeprom  قرار می گیرد.

مثال :

;eeprom unsigned int  x  

حافظه SRAM :

همانطور که ذکر کردیم کدهای برنامه در حافظه Flash قرار می گیرند. و CPU میکرو کنترلر کدهای دستورات برنامه را آشکار می کند . حال باید حاصل دستورات انجام شده در یک حافظه موقت ذخیره شود. این حافظه در میکرو کنترلر AVR از نوع Static RAM می باشد. رجیسترهای همه منظوره و رجیسترهای ورودی و خروجی جزء این حافظه می باشند. محتوای این حافظه با قطع تغذیه پاک می گردد و در صورتی که میکرو کنترلر را Reset  کنیم محتوای  رجیسترها صفر می شود. اما محتوای حافظه SRAM (همان مقدار دهی اولیه به متغیر هایی که در زمان برنامه نویسی ثبت شده اند) صفر نمی شود. برای تعیین متغیرها ، ثابت ها و یا آرایه ها و … در این حافظه قبل از نام و اندیس کلمه نوشته ای قرار نمی گیرد.

مثال :

;unsigned int  x=0x16

نکته :

در مثال بالا مقدار 0x16  در متغیر x  قرار داده شده و در هنگام Reset  با همین مقدار بارگیری می شود. و در صورتی که مقدار دهی نشود. این مقدار برابر صفر در نظر گرفته می شود.

 

مطالب پیشنهادی :

moradi
ارسال دیدگاه

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