فــــهرســـت
مرجع الکترونیک
آموزش الکترونیک از مقدماتی تا پیشرفته
  • Jesse Faden سه شنبه چهارم شهریور 1399 15:45 نظرات ()
    ذخیره برنامه در حافظه فلش در Atmel Studio

    بسیاری از برنامه ها از SRAM استفاده می کنند، که در آن می‌توانید داده ها را قبل از پایان Flash ذخیره کنید. متغیرهای ثابت سراسری، جداول یا آرایه‌هایی که هرگز تغییر نمی‌کنند، معمولاً باید به یک بخش فقط خواندنی (Flash یا EEPROM در AVR  ۸ بیتی) اختصاص داده شوند. به این ترتیب، می‌توانیم فضای پر ارزش SRAM را نگه داریم.

    در این مثال، ما از کلید واژه "const" استفاده نمی‌کنیم. تعریف یک شیء "const" اعلام می‌کند که مقدار آن تغییر نخواهد کرد. "const" برای گفتن به کامپایلر استفاده می شود که داده ها باید "فقط خواندنی" باشند و دستیافت‌های بهینه سازی را افزایش می‌دهد. مشخص نمی کند که داده ها در چه مکانی باید ذخیره شوند.

    برای اختصاص داده ها به فضای برنامه (فقط خواندنی) و بازیابی آن‌ها از فضای برنامه، AVR-Libc یک ماکرو ساده "PROGMEM" و یک ماکرو "pgm_read_byte" ارایه می‌دهد. ماکرو "PROGMEM" و ماکرو "pgm_read_byte" در پرونده هدر سیستم "<avr / pgmspace.h>" تعریف شده اند.

    جدول زیر نحوه ذخیره SRAM با انتقال رشته سراسری به فضای برنامه را نشان می دهد.

    جدول ۱. نمونه ثابت در فضای برنامه
    Constants در فضای دادهConstants در فضای برنامه
    برنامه C 
    #include <avr/io.h>
    uint8_t string[12] = {"hello world!"};
    int main(void)
    {
    UDR0 = string[10];
    }
    #include <avr/io.h>
    #include <avr/pgmspace.h>
    uint8_t string[12] PROGMEM = {"hello world!"};
    int main(void)
    {
    UDR0 = pgm_read_byte(&string[10]);
    }
    استفاده از حافظه AVR

    Program: 122 bytes (1.5% Full)

    (.text + .data + .bootloader)

    Data: 12 bytes (1.2% Full)

    (.data + .bss + .noinit)

    Program: 102 bytes (1.2% Full)

    (.text + .data + .bootloader)

    Data: 0 bytes (0.0% Full)

    (.data + .bss + .noinit)

    سطح بهینه سازی کامپایلر-Os (Optimize for size)-Os (Optimize for size)

    بعد از اینکه ما ثابت‌ها را به فضای برنامه اختصاص دادیم، می بینیم که فضای برنامه و فضای داده هر دو کاهش می‌یابد. با این حال ، هنگام خواندن داده‌ها سربار کمی وجود دارد، زیرا اجرای عملکرد کندتر از خواندن داده‌های SRAM به طور کندتر خواهد بود.

    اگر داده‌های ذخیره شده در Flash چندین بار در کد استفاده می‌شوند، به جای استفاده از ماکرو "pgm_read_byte" به طور مستقیم چندین بار اندازه را کاهش می‌دهد.

    ماکروها و عملکردهای بیشتری در پرونده هدر سیستم "<avr / pgmspace.h>" برای ذخیره و بازیابی انواع مختلف داده به/از فضای برنامه وجود دارد. برای اطلاعات بیشتر به دفترچه راهنمای کاربر AVR-Libc مراجعه کنید.

    ویــــــرایش واپسیـــن: سه شنبه چهارم شهریور 1399 - 16:09
    ارســـــــال دیدگـــــــــاه
  • Jesse Faden دوشنبه پانزدهم اردیبهشت 1399 18:47 نظرات ()
    کتابخانه تبدیل کد BCD به Binary در Atmel Studio


    ویــــــرایش واپسیـــن: سه شنبه بیست و هشتم مرداد 1399 - 04:27
    ارســـــــال دیدگـــــــــاه
  • Jesse Faden دوشنبه پانزدهم اردیبهشت 1399 17:19 نظرات ()
    توابع lcd در 7 Atmel Studio

    کتابخا درایور lcd در 7 Atmel Studio، کتابخانه درایور hd44780:
    کتابخانه توابع lcd (نوشته شده به دست PicPars.com):

    سپس فایل های بالا را به پروژه خود اضافه کنید، در نهایت از دستورات موجود در فایل های lcd.h یا hd44780.h در پروژه خود استفاده کنید.



    پیشنهاد:
    از این کتابخانه استفاده کنید، تنها با اتصال دو سیم می‌تواند حداکثر تا ۸ LCD را کنترل کنید.
    http://melectronics.ir/post/41
    ویــــــرایش واپسیـــن: سه شنبه بیست و هشتم مرداد 1399 - 04:30
    ارســـــــال دیدگـــــــــاه
شبکه اجتماعی فارسی کلوب | Buy Mobile Traffic | سایت سوالات