اطلاعیه

Collapse
No announcement yet.

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

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

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

    راه اندازی سنسور دما DS18B20

    قبلا یه نسخه از سورس راه اندازی این سنسور را تو انجمن قرار داده بودم،این نسخه جدیدش هست با LCD NOKIA 1202 .

    دانلود با کامپایلر IAR
    http://s3.picofile.com/file/7832739137/DS18B20.rar.html
    دکتر شریعتی:

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

    دیدگاه


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

      یک نمونه کد برای نمایش دما روی 7segment های برد آموزشی بر اساس سنسور DS18b20 و با استفاده از کتابخانه جدید 7segment که قابلیت نمایش حروف مختلف را روی 7segment دارد:

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

      دیدگاه


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

        ضمن عرض سلام به همه ی دوستان و همچنین جناب طراح.
        در پروژه مربوط به کتابخانه FAT که در سایت http://www.knowledgeplus.ir قرار داده اید,من بدون تغییر در سورس برنامه,هنگام کامپایل برنامه با ارورهای زیر مواجه شدم و هر تغییری که به نظرم می توانست مشکل را حل کند انجام دادم,ولی به نتیجه ای نرسیدم.ممنون می شوم راهنماییم کنید.با سپاس فراوان
        کد:
        Error[e183]: Static overlay map generation (-xo) is not supported for the A90 processor. 
        Error while running Linker

        دیدگاه


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

          حل شد.برای رفع این ارور باید تیک static overlay map رو در زیرشاخه ی list مربوط به linker رو برداشت.
          اما در مورد ماهیت این ارور و اینکه چرا در این پروژه این ارور بوجود اومد هیچ ایده ای ندارم. :smile:

          دیدگاه


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

            نوشته اصلی توسط ilia20
            حل شد.برای رفع این ارور باید تیک static overlay map رو در زیرشاخه ی list مربوط به linker رو برداشت.
            اما در مورد ماهیت این ارور و اینکه چرا در این پروژه این ارور بوجود اومد هیچ ایده ای ندارم. :smile:
            فعال کردن Static overlay map تنها باعث می شود در فایل list ایجاد شده، اطلاعاتی در مورد متغیرهای استفاده شده در هر فراخوانی تابع بوجود آید و نباید وجود آن مشکل خاصی را ایجاد کند. این مشکل ممکن است ناشی از نسخه IAR شما و اشکالات احتمالی ناشی از Crack آن باشد.
            اوژن: به معنای افکننده و شکست دهنده است
            دانایی، توانایی است-Knowledge is POWER
            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

            دیدگاه


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

              sسلام دوستان
              من یه نمونه برنامه برای راه ندازی ADC در xmega64a3 می خواستم. کسی میتونه بهم کمک کنه. البته من با codevision کار می کنم. اگر برنامه توی codevision باشه بهتره برام.
              من یکم توی کار با xmega و ریجیستراش برای راه اندازی adc مشکل دارم . میخوام حداقل بتونم یه سیگنال سینوسی بهش بدم و یه خروجی رو ببینم.
              مرسی.

              دیدگاه


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

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

                دیدگاه


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

                  نوشته اصلی توسط طراح
                  کدهای نوشته شده با هم معادل نیستند. چرا که اولا در کتابخانه Atmel مقدار آدرس یک بیت به سمت چپ شیفت داده می شود. بنابراین برای ارسال 0XC0 به عنوان آدرس باید 0X60 را قرار دهید. مسئله بعدی این است که در کد دوم شما هر بار آدرس ارسال می شود و بعد یک بایت فرستاده می شود. بنابراین می توانید یک آرایه با تعداد بایت های مورد نظر برای ارسال را تشکیل دهید و فقط یکبار آدرس همان آرایه و تعداد بایت های مورد نظر برای نوشتن را در تابع قرار دهید. در مثال شما این آرایه می تواند دو عضو داشته باشد و آدرس هم که در ابتدا ارسال می شود (0X60 که در عمل 0XC0 ارسال می شود).
                  فقط خواستم تشکر کنم این راهنماییت باعث شد من یعد از 6 روز سر کار بودن! بالاخره بفهمم مشکل از کجاست.الان که ادرسا شیفت دادم اوکی شد.
                  مرسی.

                  دیدگاه


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

                    سلام
                    در راستای آموزش ها, برای مشاهده نحوه عملکرد روتین وقفه خارجی در مد ROUN ROBIN کدی نوشته شد به اینصورت که از خارج به پین های PINB2 و PINB3 پالسهایی مطابق شکل داده شد و هر دوی INT0 و INT1 در اولویت وقفه LOW و محل قرار گرفتن هم در PINB2 و PINB3 تنظیم و مد ROUND ROBIN نیز فعال شد ولی در عمل اولویت وقفه بصورت چرخشی ایجاد نشد و همواره بردار وقفه INT0 در اولویت بالاتر است.
                    دوستان چه راه حلی پیشنهاد میکنید؟


                    کد:
                    /*
                     * XMEGA_EXTINT_ROUNDROBIN_0.c
                     *
                     * Created: 10/18/2013 07:24:11 fi.Ÿ
                     * Author: Chavosh
                     */ 
                    
                    #include <avr/io.h>
                    #include <avr/interrupt.h>
                    
                    int main(void)
                    {
                    PORTCFG_MPCMASK=PIN0_bm|PIN1_bm|PIN2_bm|PIN3_bm;
                    PORTB_PIN0CTRL=PORT_OPC_PULLDOWN_gc; 
                    
                    PORTB_DIRSET=PIN0_bm|PIN1_bm; //PINB0 AND PINB1 AS OUTPUT
                    PORTB_DIRCLR=PIN2_bm|PIN3_bm; //PINB2 AND PINB3 AS INPUT	
                    	
                    PORTB_PIN2CTRL=PORT_OPC_PULLDOWN_gc|PORT_ISC_RISING_gc; 
                    PORTB_PIN3CTRL=PORT_OPC_PULLUP_gc|PORT_ISC_FALLING_gc;
                    	
                    PORTB_INT0MASK=PIN2_bm; //PINB2=INTERUPT 0
                    PORTB_INT1MASK=PIN3_bm; //PINB3=INTERUPT 1
                    
                    PORTB_INTCTRL=PORT_INT0LVL_LO_gc|PORT_INT1LVL_LO_gc; // INT0 AND INT1 = LOW LEVEL
                    PMIC_CTRL=PMIC_RREN_bm|PMIC_LOLVLEN_bm; //ENABLE ROUND ROBIN AND INTERUPT LEVEL TO LOW 
                    
                    sei();
                    
                    while(1);
                    
                    }
                    
                    ISR(PORTB_INT0_vect)
                    {
                    PORTB_OUTTGL=PIN0_bm; //TOGGLE PINB0
                    }
                    
                    ISR(PORTB_INT1_vect)
                    {
                    PORTB_OUTTGL=PIN1_bm; //TOGGLE PINB1
                    }



                    دیدگاه


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

                      با توجه به قرار دادن حساسیت دو وقفه خارجی روی لبه های بالا رونده و پائین رونده (و اگر منظور از vect0 و vect1 در شکل، وضعیت پین های خروجی PB0 و PB1 باشد) لزوما زمان درخواست وقفه برای دو ورودی همزمان نیست. برای روشن شدن بیشتر مطلب در اطلاعات ATXMEGA32A4U برای تغذیه در محدوده 2.7v تا 3.6v، کمترین مقدار برای سطح high عدد 2 ولت ذکر شده در حالیکه بیشترین مقدار برای low برابر با 0.3Vcc است که با فرض 3.3 ولت برای Vcc این مقدار حدود 1 ولت می شود. پس در این شرایط برای تحقق لبه بالا رونده باید پالس از 0 به 2 ولت برسد که برابر 2 ولت تغییرات است. اما برای لبه پائین رونده باید پالس از 3.3 ولت به 1 ولت برسد که 2.3 ولت تغییرات است. بنابراین در این شرایط همیشه تقاضای وقفه لبه بالا رونده زودتر از وقفه لبه پائین رونده اتفاق می افتد و همزمانی درخواست دو وقفه و Roun Robin scheduling در این شرایط موضوعیتی ندارد.
                      اوژن: به معنای افکننده و شکست دهنده است
                      دانایی، توانایی است-Knowledge is POWER
                      برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                      وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                      قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                      اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                      ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                      دیدگاه


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

                        با سلام و تشکر

                        با اجرای برنامه نمونه شما به اشکالی برخورد میکنم !!!!!!!!!!!

                        #include <ioavr.h>
                        #include <intrinsics.h>

                        void main( void )
                        {
                        PORTE_DIRSET=PIN0_bm;
                        PORTE_OUTSET=PIN0_bm;

                        while(1)
                        {
                        __delay_cycles(1000000); // Wait for 1000000 cycles
                        PORTE_OUTTGL=PIN0_bm;
                        }
                        }

                        خطای

                        main.c
                        Error[Pe020]: identifier "PIN0_bm" is undefined D:\mypro\iar55\blink2\main.c 8
                        Error while running C/C++ Compiler

                        را کمپایلر iar میدهد با توجه به این که atxmega32a4 درست انتخاب شده و فایل ATxmega32A4.h هم در لیست include قرار دارد
                        اشکال از کجاست ممنون میشم راهنمایی نمایید

                        دیدگاه


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

                          مورد زیر را بررسی کنید.
                          http://www.eca.ir/forum2/index.php?t...3812#msg233812

                          دیدگاه


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

                            نوشته اصلی توسط طراح
                            در پست شماره 29، کتابخانه ای را برای LCD کاراکتری قرار داده بودم که سایز LCD در آن لحاظ نشده بود و برای سایز 20x4 نوشته شده بود. در فایل ضمیمه، نسخه جدیدتر این کتابخانه که از 9 سایز مختلف پشتیبانی می شود، قرار داده شده است. در این کتابخانه یک تابع LCDCursorOffBlink هم اضافه شده که بدون روشن کردن cursor، باعث چشمک زدن کاراکتر می شود. همچنین برای نمایش نحوه تعریف کاراکترهای فارسی، اعداد 2354 بصورت فارسی تعریف و نمایش داده شده اند (سایز LCD مورد استفاده همان 20x4 است). دوستان اگر مشکل به خصوصی را در عملکرد این کتابخانه مشاهده کردند، به من اعلام کنند.
                            سلام.
                            من یه مشکلی با LCDآ‌ کارکتری خوردم که البته بعید میدونم که از کتابخونه باشه چون توی چندین پروژه ازش استفاده کردم و مشکلی نداشتم. الان همون کد رو پیاده سازی کردم و تمام قسمت های پروژه رو حذف کردم یه پروژه بسیار ساده نوشتم(هیچ وقفه ای فعال نیست) که صرفا LCD رو پیکربندی میکنه و یه عبارتی رو هر یک ثانیه یکبار LCD رو پاک میکنه و روی LCDآ‌ مینویسه(پایه RW رو وصل نکردم ولی تاخیر 1 ثانیه ای بین هر نوشتم گذاشتم). LCD رو با xmegaآ‌ با ولتاژ 3.3 فرمان میدم (البته با 74hc245 این ولتاژ رو تبدیل به 5 کردم باز هم شرایط همینطوری بود) ولی LCDآ‌به درستی کار نمیکنه.

                            مثلا چند کارکتر اول عبارت رو حذف میکنه چند بار که LCD رو پاک میکنه و مجدد روش مینویسه کارکتر های نا مفهوم و تعریف نشده نشون میده بعد هم میره در حالتی که قبل از پیکربندی هست، مثلا برای LCD کارکتری 2*16 وقتی فقط روشن میشه و پیکربندی نشده سطر اول تمام پیکسل ها روشن هست، اینطوری میشه.

                            سخت افزار رو و پالس ها رو با اسکوپ دیدم مشکلی نداره.
                            LCD رو هم عوض کردم از نوع دیگه ای گذاشتم بازم همینطوری رفتار میکرد.
                            نرم افزار رو هم با IAR و هم با Atmrlstudio نوشتم باز نتیجه همین بود.

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

                            سپاس فراوان
                            شأن انسان در ایمان و هجرت و جهاد است و هجرت، مقدمهآ‌ی جهاد فیآ‌سبیلآ‌الله.
                            هجرت، هجرت از سنگینیآ‌هاست و جاذبهآ‌هایی که تو را به خاک میآ‌چسباند.
                            چکمهآ‌هایت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت کن.

                            دیدگاه


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

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

                              دیدگاه


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

                                نوشته اصلی توسط طراح
                                از آنجایی که آزمایش ها را با LCD های مختلف و کامپایلرهای متفاوت تست کرده اید، جزء مشترک در آزمایش های شما همان بخش سخت افزار است که با فرض صحیح بودن کد مشکل می تواند ناشی از این بخش باشد. فرکانس بالا برای کلاک هم اگر با توابع یا ماکروهای تاخیر در کد هماهنگ نباشد، می تواند باعث عدم نمایش صحیح روی LCD شود.
                                سلام.
                                مشکل حل شد ولی دلیل دقیق ایراد را متوجه نشدم. کاری که انجام دادم تاخیر های داخل کتابخونه رو همه رو ۱۰ برابر کردم. اینطوری مشکل کاملا حل شد ولی اگه به جای ۱۰ برابر مثلا ۶ برابر بکنم باز همین خطا هست.
                                به نظر میاد حالت خازنی یا اما¾ا¾پدانسی جایی بین پایه ها ایجاد میشه که این مشکل رو ایجاد میکنه.
                                شأن انسان در ایمان و هجرت و جهاد است و هجرت، مقدمهآ‌ی جهاد فیآ‌سبیلآ‌الله.
                                هجرت، هجرت از سنگینیآ‌هاست و جاذبهآ‌هایی که تو را به خاک میآ‌چسباند.
                                چکمهآ‌هایت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت کن.

                                دیدگاه

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