اطلاعیه

Collapse
No announcement yet.

کتابخانه دسترسی بیتی به تمام ریجیستر ها atmel studio 6

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    کتابخانه دسترسی بیتی به تمام ریجیستر ها atmel studio 6

    سلام به دوستان
    atmel studio 6 با تمام عشوه گری برنامه نویس ها را به خود جذب می کند.ولی وقتی از کدویژن به atmel studio 6 کوچ می کنیم چند مشکل باعث دلسردی شود.
    اول نداشتن یه جادوگر کد و دوم نداشتن کتابخانه های آنچنانی و جامع برای ماژول ها مختلف.
    از آنجای که atmel studio 6 به صورت مجانی ارائه می شود (و ای کاش می توانستیم پلاگین برای آن تهیه کنیم) و بسیار عالی عمل می کند. به نظر من به تمام زرق و برق های کدوِیژن می ارزد.پس بیاید دست به دست هم بدهیم و کتابخانه مفید برای atmel studio 6 تهیه کنیم.

    کتابخانه DEDACO CODE MASKING به برنامه نویس امکان دسترسی بیتی با روش "ماسک کردن" را می دهد.

    ماسک کردن اطلاعات چیست؟

    فرض کنید شما می خواهید فقط بیت چهارم پورت A را یک یا صفر کنید.و بقیه بیت ها پورت A تغییر نکنند.
    راه حل:
    می دانیم که
    AND هر عبارت منطقی با عدد صفر منطقی، صفر منطقی می شود
    AND هر عبارت منطقی با عدد یک منطقی ، همان عبارت می شود

    X = X & 1
    0 = X & 0

    همچنین

    OR هر عبارت منطقی با عدد صفر منطقی، همان عبارت می شود
    OR هر عبارت منطقی با عدد یک منطقی ، یک منطقی می شود

    1 = X | 1
    X = X | 0

    پس برای صفر کردن بیت چهارم پورت برنامه زیر را استفاده می کنم

    PORTA&=0b11101111;

    و برای یک کردن بیت چهارم پورت برنامه زیر را استفاده می کنم

    PORTA|=0b00010000;

    حالا می توان با استفاده از ماکرو کاربرد راحت تر به ماسک کد ها داد.
    \\ DEDACO masking code
    #define PORTA_4(bit) ((bfit) == (0) ? (PORTA &=~ 0x10) : (PORTA |= 0x10) )

    ماکرو بالا مانند یک تابع است(فقط از لحاظ ظاهر نه عملکرد) که یک مقدار ورودی دریافت می کند.در صورتی که صفر باشد بیت چهارم پورت A را صفر می کن در غیر اینصورت آن را یک می کند.

    پس به جای دو دستور بالا می توان به صورت زیر نوشت

    PORTA_4(1);
    بیت چهارم پورت A یک شد

    PORTA_4(0);
    بیت چهارم پورت a صفر شد

    این دستور تنها در یک سیکل انجام می شود. و دستور خواندن از پورت تنها در دو سیکل انجام می شود.

    کتابخانه دسترسی بیتی ریجیستر ها را از اینجا دانلود کنید.

    dcm_iobit.h - 19 KB
    http://uplod.ir/2fajodwa7h5t/dcm_iobit.h.htm

    به مثال های زیر توجه کنید


    یک کردن پورت آ بیت 0
    [tt]#include <avr/io.h>
    #include <C:\...\dcm_iobit.h>
    int main(void)
    {
    DDRA_0( 1 ); // PORTA.0 -> output
    PORTA_0( 1 ); // set PORTA.0
    }[/tt]

    خواندن از پین آ

    [tt]#include <avr/io.h>
    #include <C:\...\dcm_iobit.h>
    int main(void)
    {
    DDRA_0( 1 ); // PORTA.0 -> output
    char a0;
    a0 = PINA_0; // a0 <== PINA.0
    }[/tt]

    تولید شکل موج مربع بر روی پورت آ بیت 0

    [tt]#include <avr/io.h>
    #include <C:\...\dcm_iobit.h>
    #define F_CPU 1000000UL
    #include <util\delay.h>
    int main(void)
    {
    while(1)
    {
    //TODO:: Please write your application code

    PORTB_0( !( PINB_0 )); //010101010101010...
    _delay_ms(100);
    }
    }[/tt]

    --------------------------------------------------------------------------------
    مشکلات DEDACO CODE MASKING

    1- نمی توان یک ماکرو را خواندنی و نوشتنی تعریف کرد.
    (البته شاید بتوان با گرانبار گردن عملگر "." این عمل را انجام داد)

    بقیه مشکلات را دوستان اضافه کنید :redface:

    نکات مثبت

    1- به تمام ریجیستر ها و متغییر ها قابل گسترش است.(اگر به خاطر بیاورید در کدویژن مشکل دسترسی بیتی به پورت G و ریجستر ها تایمر/کانتر آنالوگ به دیجیتال و ... بود که با این کد قابل حل است)
    2- سرعت اجرای بالای دارد (یک سیکل برای نوشتن در خروجی ، دوسیکل برای خواندن از ورودی)
    3-مستقل از نوع میکرو است(با تعریف چند ماکرو می توان از این کتابخانه برای میکروهای به غیر از AVR استفاده کرد.)

    ارتقای کتابخانه : برای حل مشکل و بهبود عملکرد ماکرو باید از آدرس ، ارجاع و اشاره گر استفاده کرد.(به امید خدا در ورژن بعدی)

    توجه
    کتابخانه برای atmel studio 6 نوشته شده است و تست شده.همچنین این کتابخانه وابسته به کتابخانه io.h می باشد.در صورتی که کتابخانه io.h را تعریف کنید کامپایلر به شما خطا خواهد داد.

    در صورتی که از atmel studio استفاده نمی کنید وارد کتابخانه شوید و عبارت زیر را پاک کنید.

    #ifndef _AVR_IO_H_
    # error "Include <avr/io.h> instead of this file."
    #endif



    برای بهبود کتابخانه دسترسی بیتی ما را یاری کنید


    #2
    پاسخ : کتابخانه دسترسی بیتی به تمام ریجیستر ها atmel studio 6

    توی کتابخانه جایگزین برای کدویزارد هدر فایلی هست که برای همین کار نوشته شده شاید به دردتون بخوره .
    گذشت خصلت مردان است

    دیدگاه


      #3
      پاسخ : کتابخانه دسترسی بیتی به تمام ریجیستر ها atmel studio 6

      نوشته اصلی توسط tohid041
      توی کتابخانه جایگزین برای کدویزارد هدر فایلی هست که برای همین کار نوشته شده شاید به دردتون بخوره .
      کتابخانه پورت را بررسی کردم، برنامه ای بسیار زیبای داشت :job: ولی هر دستور در دو سیکل اجرا می شد.
      در کتابخانه ارئه دادم عمدا" تک تک بیت ها را تعریف کردم که سرعت اجرا دستورات یک سیکل باشه. این عمل در موقعی که حجم بالای از اطلاعات به صورت بیتی انتقال پیدا کنند می کنند مفید خواهد بود.

      دیدگاه


        #4
        پاسخ : کتابخانه دسترسی بیتی به تمام ریجیستر ها atmel studio 6

        سلام خیلی ممنون بابت زحماتی که کشیدین
        اگه زحمت دوباره نشه اون نوشته هارو دوباره ویرایش کنین که درست خوانده بشن
        با تشکر
        تکاور شدن جرات افزون کند.....هراس از دل مرد بیرون کند....


        تا تکاور به تن زخمی خود جان دارد....مرز اسلام در این ملک نگهبان دارد.........

        دیدگاه


          #5
          پاسخ : کتابخانه دسترسی بیتی به تمام ریجیستر ها atmel studio 6

          خیلی ممنون بابت زحمتی که کشیدید...
          یه سوال :
          من از دیفاین های زیر برای دسترسی بیتی استفاده میکنم...
          استفاده از کتابخانه شما چه مزیتی نسبت به این دیفاین ها داره؟
          با تشکر
          تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

          www.intelart.ir


          ساخت کنترلر دما PID فازی با AVR [آموزشی]

          دیدگاه


            #6
            پاسخ : کتابخانه دسترسی بیتی به تمام ریجیستر ها atmel studio 6

            اگه لطف کنید یه کتابخونه جمع و جور واسه spi معرفی کنین ممنون میشم.
            ظاهرا فایل هدر مختص به spi تو atmel studio نیس :cry2:
            خدا نور است و من اشعه ای از او ...

            دیدگاه


              #7
              پاسخ : کتابخانه دسترسی بیتی به تمام ریجیستر ها atmel studio 6

              نوشته اصلی توسط ali-j
              کتابخانه پورت را بررسی کردم، برنامه ای بسیار زیبای داشت :job: ولی هر دستور در دو سیکل اجرا می شد.
              در کتابخانه ارئه دادم عمدا" تک تک بیت ها را تعریف کردم که سرعت اجرا دستورات یک سیکل باشه. این عمل در موقعی که حجم بالای از اطلاعات به صورت بیتی انتقال پیدا کنند می کنند مفید خواهد بود.
              فضا دادی زمان گرفتی :applause: :applause:
              اللهم صل علی محمد و ال محمد و عجل فرجهم
              >>> www.DMF313.ir <<<
              اگر ژرف یابی و پژوهش نباشد; نتیجه اش یک جا ایستادن،
              در جا زدن و با دنیای پیرامون خود به تدریج بیگانه تر شدن
              است.

              دیدگاه


                #8
                پاسخ : کتابخانه دسترسی بیتی به تمام ریجیستر ها atmel studio 6

                لیییینک پاک شده مهندس
                لطف کنید دباره اپلود کنین ممنون میشم ^_^
                ماهی بهم نده ^_^ ماهی گیری یادم بده ^_^

                دیدگاه


                  #9
                  پاسخ : کتابخانه دسترسی بیتی به تمام ریجیستر ها atmel studio 6

                  نوشته اصلی توسط ali green
                  لیییینک پاک شده مهندس
                  لطف کنید دباره اپلود کنین ممنون میشم ^_^



                  سلاام یه سوال خی مهم دارم سنسور لمسی برای ربتو میشع درس کرد؟؟
                  باید لوازم رباتو از کجا بخریم ؟ منظورم چه نوع مغازه ایه؟؟
                  خواهش میکنم جواب بدین

                  دیدگاه

                  لطفا صبر کنید...
                  X