اطلاعیه

Collapse
No announcement yet.

نمونه کدهایی برای XMEGA

Collapse
این موضوع برجسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : نمونه کدهایی برای XMEGA

    در لینک زیر شماتیک و سورس پروژه هایی با XMEGA شامل اسیلوسکوپ با قابلیت ضبط شکل موج روی SDC و انواع عملیاتی که در یک اسیلوسکوپ دیجیتال انجام می شود( مانند FFT و ...)، Function generator، ماشین حساب، بازی شطرنج و موارد دیگری وجود دارد:

    http://www.gabotronics.com/resources...ad-section.htm
    اوژن: به معنای افکننده و شکست دهنده است
    دانایی، توانایی است-Knowledge is POWER
    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

    دیدگاه


      #17
      پاسخ : نمونه کدهایی برای XMEGA

      یکی از روش های مطمئن و سریع کار با XMEGA، استفاده از کتابخانه های آماده ای است که برای این خانواده موجود است و بجای درگیر شدن با تمام جزئیات این خانواده، می توان تلاش را روی شناسایی روش استفاده از کتابخانه های موجود متمرکز کرد. در این تاپیک (در صورت علاقه و پیگیری دوستان )، توابع حاضر و آماده موجود در این کتابخانه ها معرفی می شوند و در صورت لزوم برخی کتابخانه های جدید برای ارتباط XMEGA با سایر وسایل جانبی مانند LCD یا mmc ارائه خواهند شد.
      با توجه به اینکه کتابخانه های نوشته شده توسط Atmel برای IAR و GCC نوشته شده اند، مبنای کار بر اساس IAR قرار داده می شود که به عنوان گام اول، مراجعه به پست زیر برای نحوه ایجاد پروژه در IAR توصیه می شود:

      http://www.eca.ir/forum2/index.php?t...7511#msg207511
      اوژن: به معنای افکننده و شکست دهنده است
      دانایی، توانایی است-Knowledge is POWER
      برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
      وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
      قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
      اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
      ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

      دیدگاه


        #18
        پاسخ : نمونه کدهایی برای XMEGA

        چند نکته در مورد استفاده از کتابخانه ها ذکر می شود که در مراحل بعد مورد استفاده قرار می گیرد:

        1- برای استفاده از کتابخانه های موجود باید در مسیر Project/Options/General Options/System، گزینه Enable bit definitions in I/O include files فعال شود.

        2- کتابخانه های موجود اکثرا در دو فایل همنام و با پسوندهای C. و h. نوشته شده اند (به غیر از کتابخانه های اسمبلی) که روال کار برای استفاده از این کتابخانه ها به این ترتیب است که از منوی Project/Add Files فایل های با پسوند c. به پروژه اضافه می شوند. همچنین فایل های با پسوند h. در ابتدای فایل اصلی include می شوند.

        3- انتخاب مقدار CSTACK در مسیر Project/Options/General Options/System در پروژه های بزرگ بسیار مهم است و در صورت انتخاب نامناسب سبب عملکرد نادرست خروجی نرم افزار خواهد شد.

        در ادامه در مورد استفاده از کتابخانه Port_driver.c که برای کار با پورتها از طرف Atmel ارائه شده، توضیح داده می شود.
        اوژن: به معنای افکننده و شکست دهنده است
        دانایی، توانایی است-Knowledge is POWER
        برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
        وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
        قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
        اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
        ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

        دیدگاه


          #19
          پاسخ : نمونه کدهایی برای XMEGA

          کتابخانه port_driver.c که به همراه AVR1313 ارائه شده، امکان کار با امکانات مختلف مرتبط با پورتهای XMEGA را از طریق یکسری دستورات و توابع آماده فراهم می کند. در ابتدا به برخی از این موارد که از طریق #define تعریف شده اند، اشاره می شود. تمام مثال ها، برای PORTA آورده شده و برای سایر پورتها باید نام آن تغییر کند. همچنین به عنوان مثال برای تغییر چند بیت بصورت همزمان، 4 بیت پائین و برای تغییر یک بیت، بیت شماره 7 در نظر گرفته شده اند. شکل نمایش داده شده کامل نیست و به علامت ; در انتها نیاز دارد و برخی گزینه ها هم باید با یک متغیر برابر قرار داده شوند ( مثلا برای خواندن وضعیت Flag ها):

          PORT_SetDirection(&PORTA,0X0F)

          برای تعیین جهت تمام بیت های پورت بکار می رود.


          PORT_SetPinsAsOutput(&PORTA,0X0F)

          پین هایی را که باید خروجی شوند با حفظ جهت بقیه پین ها تعیین می کند.

          PORT_SetPinsAsInput(&PORTA,0X0F)

          پین هایی را که باید ورودی شوند با حفظ جهت بقیه پین ها تعیین می کند.


          PORT_ToggleDirection(&PORTA,0X0F)

          پین هایی را که باید وضعیت ورودی و خروجی آنها عوض شود با حفظ جهت بقیه پین ها تعیین می کند.

          PORT_SetPinAsInput(&PORTA,7)

          یک پین مشخص را ورودی می کند.


          PORT_SetPinAsOutput(&PORTA,7)

          یک پین مشخص را خروجی می کند.

          PORT_SetOutputValue(&PORTA,0X0F)

          مقدار تمام پین های خروجی را تعیین می کند.


          PORT_SetPins(&PORTA,0X0F)

          پین های مورد نظر را با حفظ وضعیت بقیه پین ها یک می کند.

          PORT_ClearPins(&PORTA,0X0F)

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


          PORT_TogglePins(&PORTA,0X0F)

          پین های مورد نظر را با حفظ وضعیت بقیه پین ها متمم می کند.

          PORT_SetOutputBit(&PORTA,7)

          یک پین مشخص را یک می کند.


          PORT_ClearOutputBit(&PORTA,7)

          یک پین مشخص را صفر می کند.

          PORT_GetPortValue(&PORTA)

          وضعیت پینهای ورودی را بر می گرداند.


          PORT_GetInterruptFlags(&PORTA,0X0F)

          وضعیت وقفه پینهای مورد نظر را بر می گرداند.

          PORT_ClearInterruptFlags(PORTA,0X0F)

          Flag وقفه پین های مورد نظر را پاک می کند.
          [hr]
          همچنین توابع زیر در این کتابخانه تعریف شده اند:

          PORT_ConfigureInterrupt0
          برای تعیین اینکه چه پینهایی به وقفه شماره صفر پورت نسبت داده شوند و اولویت این وقفه در چه سطحی باشد.

          PORT_ConfigureInterrupt1
          برای تعیین اینکه چه پینهایی به وقفه شماره یک پورت نسبت داده شوند و اولویت این وقفه در چه سطحی باشد.

          PORT_ConfigurePins
          تعیین وضعیت پین های مورد نظر در یک پورت از نظر Not بودن و محدودیت slew rate و وضعیت 8 گانه هر پین ( از نظر Pullup و ...) و تعیین حساسیت پین ها از نظر لبه و ...

          PORT_MapVirtualPort0
          PORT_MapVirtualPort1
          PORT_MapVirtualPort2
          PORT_MapVirtualPort3
          نسبت دادن پورتهای مجازی 4 گانه به پورت مورد نظر.

          در مورد توابع در ادامه مثال هایی ذکر خواهد شد.
          اوژن: به معنای افکننده و شکست دهنده است
          دانایی، توانایی است-Knowledge is POWER
          برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
          وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
          قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
          اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
          ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

          دیدگاه


            #20
            پاسخ : نمونه کدهایی برای XMEGA

            مثال زیر از AVR1313 برای استفاده از تابع PORT_ConfigurePins ذکر می شود:

            کد:
            PORT_ConfigurePins( &PORTC,0x0F,false,false,PORT_OPC_WIREDANDPULL_gc,PORT_ISC_BOTHEDGES_gc );


            اولین ورودی به تابع نشان دهنده PORTC به عنوان مقصد عملکرد تابع است.ورودی دوم (0x0F) به این معنی است که عملیات این تابع روی 4 بیت پائین پورت عمل می کند. ورودی سوم اگر true باشد، برای بیت های انتخاب شده در هنگامی که خروجی باشند محدود کردن slew rate را فعال می کند. در وضعیت فعلی که false است، محدودیت slew rate غیر فعال است. وضعیت ورودی بعدی اگر true باشد، منجر به فعال شدن یک گیت Not در سر راه کلیه ورودی وخروجی های انتخاب شده می شود. در وضعیت false هم این گیت غیر فعال است. پارامتر بعدی وضعیت پین های انتخاب شده را مطابق جدول 13.4 در صفحه 142 از XMEGA A manual تعیین می کند که در این مثال سبب فعال شدن مقاومتهای pullup و مد wired and در وضعیت خروجی می شود. آخرین پارامتر نوع حساسیت پورت به سطح و لبه ورودی را برای پین های مورد نظر مطابق جدول 13.5 در صفحه 143 تعیین می کند که در این مثال به هر دو لبه حساس است.
            اوژن: به معنای افکننده و شکست دهنده است
            دانایی، توانایی است-Knowledge is POWER
            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

            دیدگاه


              #21
              پاسخ : نمونه کدهایی برای XMEGA

              مطرح کردن نمونه کد و کتابخانه را بعد از این در انجمن XMEGA سایت AVRFreaks ادامه می دهم و این موضوع در همان انجمن قابل پیگیری است.
              اوژن: به معنای افکننده و شکست دهنده است
              دانایی، توانایی است-Knowledge is POWER
              برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
              وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
              قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
              اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
              ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

              دیدگاه


                #22
                پاسخ : نمونه کدهایی برای XMEGA

                با سلام مهندس اگر در همین تاپیک ادامه میدادید ولینکش را در avr freaks میذاشتید بهتر بود البته یک تاپیک انگلیسی در همین جا برای اونا قرار میدادید به نظر من بهتر بود اینجوری نشون میدادید که eca خیلی از avr freaks قویتره موفق باشید

                دیدگاه


                  #23
                  پاسخ : نمونه کدهایی برای XMEGA

                  نوشته اصلی توسط زوار
                  با سلام مهندس اگر در همین تاپیک ادامه میدادید ولینکش را در avr freaks میذاشتید بهتر بود البته یک تاپیک انگلیسی در همین جا برای اونا قرار میدادید به نظر من بهتر بود اینجوری نشون میدادید که eca خیلی از avr freaks قویتره موفق باشید
                  بعد از حدود یک سال فعالیت در مورد XMEGA، اکنون سقف ظرفیت و انگیزه های موجود در این انجمن تا حد زیادی روشن شده و شاید به حد کافی تلاش شده باشد. در مورد بهتر بودن eca از AVRFreaks حداقل در شاخه XMEGA می توانست اینطور باشد، اما بهتر بودن با فعالیت یک نفر به تنهایی محقق نمی شود و نیاز به یک انگیزه جمعی وجود دارد که تاکنون کمتر نشانی از آن مشاهده شده است.
                  ضمنا از تلاش های اخیر شما در تغییر از یک سوال کننده صرف و تبدیل شدن به فردی که بخشی از اطلاعات خود را در اختیار دیگران قرار می دهد، شخصا تشکر و قدردانی می کنم.
                  اوژن: به معنای افکننده و شکست دهنده است
                  دانایی، توانایی است-Knowledge is POWER
                  برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                  وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                  قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                  اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                  ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                  دیدگاه


                    #24
                    پاسخ : نمونه کدهایی برای XMEGA

                    با سلام حق با شماست انگیزه فعالیت در سایت حداقل در این روزها کمتر شده اما به نظرم باید دنباله راهی باشیم که این انگیزه تقویت بشه و سایت همچنان پر قدرت به فعالیت خودش ادامه بده واز تجربیات اساتیدی مثل شما و بقیه اساتید استفاده کنیم من به شخصه با xmega کار نکردم و به جز avr برروی arm کار میکنم اما از اونجا که به پاسخها وتجربیات شما علاقه دارم به تاپیک xmega سر میزنم شخصا هر کاری از دستم بر بیاد برای بالا بردن انگیزه بچه ها در سایت و ادامه فعالیت انجام میدهم با تشکر از شما

                    دیدگاه


                      #25
                      پاسخ : نمونه کدهایی برای XMEGA

                      این چند روز برروی بخش کلاک در XMEGA کار میکردم و تصمیم گرفتم تا برایش یک کتابخانه خیلی مختصر بنویسم. فایل زیر حاوی یک تابع برای تنظیم منبع کلاک میباشد، کافیست کتابخانه را در برنامه خود فراخوانی کنید. تابع مورد استفاده نیاز به توضیح خاصی ندارد و برای هر قسمت به صورت کامنت اشاره شده که به کدام جدول در بخش system clock and clock option مراجعه شود.
                      کامپایلر مورد استفاده IAR میباشد. امیدوارم مورد استفاده دوستان قرار بگیره.
                      موفق باشید.
                      http://rapidshare.com/files/454013225/oscilator.rar
                      مثال:
                      کد:
                      [left]#include <ioavr.h>
                      #include <intrinsics.h>
                      #include "oscilator.h"
                      void main(){
                      	int i=0;  
                      	osc_select(4,0,0,8000000l,8,2);	
                      	PORTA.DIR=0xFF;
                      	PORTA.OUT=0x00;
                      	while(1){	
                      		PORTA.OUTTGL|=0x01<<i;
                      		__delay_cycles(8000000);
                      		i++;
                      		if(i==8)	i=0;
                      	}	
                      }
                      [/left]
                      بگذارعشق خاصیت تو باشد نه رابطه خاص تو باکسی
                      موفقیت پیش رفتن است نه به نقطه ی پایان رسیدن
                      نلسون ماندلا

                      دیدگاه


                        #26
                        پاسخ : نمونه کدهایی برای XMEGA

                        تلاش شما برای اتخاذ رویکرد کتابخانه ای برای کار با XMEGA و در اختیار قرار دادن آن برای دیگران، رویه ارزشمندی است. در این مورد به چند نکته اشاره می کنم:

                        1- رجیستر CLK.PSCTRL از نوع حفاظت شده نیست و تغییر آن احتیاجی به نوشتن 0xD8 در CCP ندارد.
                        2- در نوشتن کتابخانه ها سعی کنید بجای نوشتن اعداد، از معادل های آنها که در header ها تعریف شده استفاده کنید تا کد خواناتر شود. مثلا بجای 0XD8 از CCP_IOREG_gc استفاده کنید.
                        3- معمولا رسم نیست که یک تابع در فایلی با پسوند h نوشته شود. بلکه یا prototype آن در فایل h و بدنه اصلی آن در فایل با پسوند c نوشته می شود و یا به تنهایی در فایل c نوشته می شود و مستقیما با همین پسوند include می شود.
                        4- برای تغییر منابع کلاک، کتابخانه clksys.driver در AVR1506 معرفی شده که می توانید به آن مراجعه کنید و نحوه تعریف توابع را با کار خود مقایسه کنید.
                        اوژن: به معنای افکننده و شکست دهنده است
                        دانایی، توانایی است-Knowledge is POWER
                        برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                        وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                        قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                        اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                        ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                        دیدگاه


                          #27
                          پاسخ : نمونه کدهایی برای XMEGA

                          لینک تاپیکی که در سایت AVRFreaks، نمونه کدهای XMEGA را قرار می دهم:

                          http://www.avrfreaks.net/index.php?n...c&t=104565
                          اوژن: به معنای افکننده و شکست دهنده است
                          دانایی، توانایی است-Knowledge is POWER
                          برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                          وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                          قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                          اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                          ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                          دیدگاه


                            #28
                            پاسخ : نمونه کدهایی برای XMEGA

                            کتابخانه LCD کاراکتری:
                            در لینک زیر کتابخانه ای برای کار با LCD2*16 را قرار میدهم. قبلا این ال سی دی رو در مود 8 بیتی راه اندازی کرده بودم اما در مورد مود 4 بیتی با مشکلاتی برخوردم که تصمیم گرفتم تا کتابخانه موجود در avrlib برای lcd کاراکتری رو برای استفاده در IAR تغییر بدهم. نکته جالب توجه این است که کدهای موجود در این کتابخانه را بگونه ای تغییر دادم تا بتوان هر پایه از ال سی دی رو به هر پایه از هر پورت های xmega متصل نمود. در این کتابخانه از پایه RW استفاده و LCD در مود 4 بیتی راه اندازی شده است.
                            http://rapidshare.com/files/454524673/lcd.rar
                            فایل های پیوست شده
                            بگذارعشق خاصیت تو باشد نه رابطه خاص تو باکسی
                            موفقیت پیش رفتن است نه به نقطه ی پایان رسیدن
                            نلسون ماندلا

                            دیدگاه


                              #29
                              پاسخ : نمونه کدهایی برای XMEGA

                              ضمن تشکر از شما، فایل مورد نظر را در پست قبلی ضمیمه کردم تا مستقیما قابل دانلود باشد. قبلا برای کار با LCD کاراکتری همین کتابخانه را به شکل دیگری که مقداری کامل تر است، تغییر داده بودم. اما به دلیل عدم مشاهده فعالیت خاصی در انجمن، انگیزه ای برای شرح و بسط آن پیش نیامد. اما اکنون که شما زحمت کشیده و در این مورد فعالیت هایی را انجام داده اید، در فرصت بعدی این کتابخانه را قرار می دهم تا قابل دسترسی و استفاده باشد و زمینه برای تکمیل بیشتر کار فراهم شود.
                              اوژن: به معنای افکننده و شکست دهنده است
                              دانایی، توانایی است-Knowledge is POWER
                              برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                              وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                              قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                              اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                              ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                              دیدگاه


                                #30
                                پاسخ : نمونه کدهایی برای XMEGA

                                نسخه اول کتابخانه LCD کاراکتری به همراه سورسی برای راه اندازی بعضی امکانات آن در این پست ضمیمه می شود. در این مثال به 3 روش مختلف عبارت های Test1 و Test2 و Test3 روی 3 سطر اول از یک LCD کاراکتری 4x20 نمایش داده شده و با توجه به امکان تعریف فونت، به عنوان یک مثال کاراکتر Backslash (که توسط امکان تعریف فونت ساخته شده) در سطر چهارم نمایش داده می شود.
                                فایل های پیوست شده
                                اوژن: به معنای افکننده و شکست دهنده است
                                دانایی، توانایی است-Knowledge is POWER
                                برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                                وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                                قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                                اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                                ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                                دیدگاه

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