اطلاعیه

Collapse
No announcement yet.

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

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

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

    نوشته اصلی توسط mehdi210
    با هر پله چرخش هر دو خروجی البته با تاخیر 1 یا 0 میشوند
    با توجه به تولید دو لبه در هر پله حرکت ولوم، اضافه شدن دو واحد به مقدار آن کاملا صحیح است که به این مسئله در پست قبل هم اشاره شد.

    نوشته اصلی توسط mehdi210
    ضمنا نمی دانم چرا متغییر temp1 که محتوای کانتر(که همیشه عدی زوج می باشد ) همیشه به عددی فرد با یک رقم کمتر از TCC1_CNT تبدیل می گردد ؟
    مطابق کد شما متغیر temp1 نماینده مقدار قبلی خوانده شده از TCC1_CNT است. بنابراین در بار اول که یک واحد به کانتر اضافه یا از آن کم می شود، مقدار آن در وضعیت فرد قرار می گیرد و در بار دوم، نمایش متغیر قبل از مقدار دهی جدید به آن انجام می شود. بنابراین عملکرد برنامه صحیح است و مقدار نمایش داده شده برای این متغیر با برنامه فعلی شما باید یک واحد با encode_new_a متفاوت باشد. برای رفع این مشکل می توانید مقدار دهی به encode_old_a را در خارج از if (بعد از آن) انجام دهید تا همیشه مقدار آن به روز باشد.
    اوژن: به معنای افکننده و شکست دهنده است
    دانایی، توانایی است-Knowledge is POWER
    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

    دیدگاه


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

      با سپاس از استاد کی نژاد ، طبق راهنمایی آخرین پست شما برنامه را اصلاح کردم مشکل حل شد کدی که نوشته بودم بین یک پله(که محتوای TCC1_CNT فرد بود) یک بار کد به اشتباه اجرا می شد و با ویرایش ابتدای کد بصورت زیر درست شد :
      if((TCC1_CNT%2)==0)
      {
      encode_new_a=TCC1_CNT;
      temp1 = encode_old_a;

      if(encode_new_a != encode_old_a)

      دیدگاه


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

        با سلام ، برای استفاده از کریستال 16MHz کد زیر را نوشتم ولی وقتی روی پین PD7 فرکانس را با اسکوپ بررسی میکنم میبینم فرکانس همان 2MHz داخلی میباشد . خازنهای کریستال 10 پیکو هستند و مسیر کریستال و خازنها تا میکرو بررسی شده و سالم هستند !!
        OSC_XOSCCTRL=OSC_XOSCSEL_XTAL_16KCLK_gc|OSC_FRQRAN GE_12TO16_gc;
        OSC_CTRL=OSC_XOSCEN_bm;
        while(!(OSC_STATUS & OSC_XOSCRDY_bm));
        CLK_CTRL= CLK_SCLKSEL_XOSC_gc;

        دیدگاه


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

          کد را به صورت زیر بنویسید:

          OSC_XOSCCTRL=OSC_FRQRANGE_2TO9_gc|OSC_XOSCSEL_XTAL _16KCLK_gc;
          OSC_CTRL|=OSC_XOSCEN_bm;
          while(!(OSC_STATUS &OSC_XOSCRDY_bm ));
          CCP=CCP_IOREG_gc;
          CLK_CTRL=CLK_SCLKSEL_XOSC_gc;
          اوژن: به معنای افکننده و شکست دهنده است
          دانایی، توانایی است-Knowledge is POWER
          برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
          وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
          قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
          اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
          ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

          دیدگاه


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

            با سپاس از جناب استاد کی نژاد ، کدی را که ارائه کردید استفاده کردم و مشکل حل شد .

            دیدگاه


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

              تبدیل تلویزیون به صفحه نمایش کاراکتری 40x25 با XMEGA:

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

              دیدگاه


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

                نوشته اصلی توسط طراح
                Pattern Generation

                یکی از امکانات بخش AWeX که قبلا فقط در حد یک توضیح کلی به آن اشاره شد، فعال سازی وضعیت Pattern generation است. در این وضعیت محتوای پورت بصورت سنکرون با تایمر و بر حسب یک بافر مشخص، بصورت خودکار تغییر می کند. به این معنی که در شرایط Update تایمر (که می تواند در TOP یا BOTTOM اتفاق بیافتد)، یک وضعیت از پیش تعریف شده روی پورت قرار می گیرد که این وضعیت برای هر پین می تواند High و Low و یا خروجی PWM کانال A تایمر باشد. از طریق این امکان می توان یک سیگنال PWM را در 8 پین مختلف و بسته به شرایط توزیع نمود.
                برای تفهیم بهتر اینکه این امکان چه فایده هایی می تواند داشته باشد، مثال هایی را می توان مطرح کرد. مثلا اگر فرض کنیم قرار باشد یک استپر موتور بوسیله 4 بیت پورت کنترل شود، بجای تعریف وقفه ای که بخواهد مقدار پورت را بصورت متوالی تغییر دهد، می توان مقادیر لازم را در بافر پورت قرار داد و در زمان لازم و سنکرون با تایمر، عملیات ایجاد شکل موج مورد نظر انجام خواهد شد و برای اینکار نیازی به وقفه تایمر نیست. همین مسئله می تواند در تابلوهای روان و مانند آن هم با سرعت زیاد و بدون درگیر کردن CPU در وقفه تایمر، بکار گرفته شود.
                و یا توزیع انتخابی PWM که می تواند در کاربردهایی ( احتمالا کنترل نور LED های معمولی و RGB و ...) مورد استفاده قرار بگیرد و با استفاده از این امکانات می توان بار CPU را برای انجام برخی از کاربردها کاهش داد و آن را به عهده سخت افزار سپرد.
                نوشته اصلی توسط طراح
                اصولی ترین روش برای ایجاد شکل موج های همزمان و سنکرون با یک تایمر، استفاده از قابلیت Pattern generation در واحد AWeX است که مقدار قرار داده شده در یک رجیستر مشخص در فواصل زمانی معینی روی پین های قرار داده می شود و اصولا نیازی به تغییرات پورت بصورت نرم افزاری نیست. اما برای عملیات مورد نظر شما بصورت نرم افزاری، می توانید بجای تغییر پین ها بصورت تک تک و مرحله به مرحله (با فرض استفاده از پین های یک پورت) تمام تغییرات را در یک دستور انجام دهید. همچنین استفاده از پورت های مجازی که به تمام پورت ها قابل map کردن است، زمان تغییرات را کاهش می دهد.
                با سلام و تشکر خدمت جناب طراح
                چند سوال در مورد AWeX و Pattern Generator دارم ممنون میشم راهنمایی کنید. اگه 4 عدد سون سگمنت رو مالتی پلکس کنیم، چطور میشه با پورتی که Pattern Generator روش فعال شده داده ها رو به سگمنت ها اعمال کنیم. یعنی 4 بایت داده داریم و باید به ترتیب و همزمان با تایمر روی پورت قرار بگیره. این 4 بایت رو باید در کدام رجیستر بنویسیم و یا اصلا این کار امکان پذیر هست یا نه. ممنون

                دیدگاه


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

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

                  دیدگاه


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

                    نوشته اصلی توسط طراح
                    برای پیاده سازی مورد نظر شما باید محتوای بایت دلخواه را در رجیستر DTHSBUF قرار دهید. برای این منظور باید بیت های PGM و CWCM را مطابق توضیحات بخش Errata در انتهای Datasheet تنظیم کنید. مطابق این توضیحات محتوای XMEGA A MAnual در مورد این دو بیت صحیح نیست و باید به شکلی که در بخش Errata بیان شده، تنظیم شوند.
                    ممنون از شما. پس یعنی یک بایت رجیستر (DTHSBUF) وجود داره و باید قبل از اینکه تایمر-کانتر پدیت بشه، یکی از 4 بایت مورد نظر توسط نرم افزار در این رجیستر DTHSBUF نوشته بشه. ایا راهی وجود داره که بدون دخالت برنامه و بدون استفاده از وقفه (مثلا با سیستم event)، بشه 4 بایت رو به ترتیب و به طور متناوب روی یک پورت ارسال کرد (بدون استفاده از آیسی قفل در خروجی)؟

                    دیدگاه


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

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

                      دیدگاه


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

                        باز هم متشکرم. DMA زمانی از گذرگاه استفاده میکند که در آن زمان، CPU از گذرگاه استفاده نمیکند. آیا این امر میتواند باعث اختلال در همزمانی روشن شدن سگمنت ها و خطوط select شود (با فرض اینکه مشکل خطوط select با استفاده از pwm و یک آیسی مانند 4022 حل شود).

                        دیدگاه


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

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

                          دیدگاه


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

                            در مورد wav 16bit به wav12bit برای dac کسی اطلاعاتی داره؟
                            هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
                            بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
                            میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

                            تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد

                            دیدگاه


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

                              نوشته اصلی توسط n340
                              در مورد wav 16bit به wav12bit برای dac کسی اطلاعاتی داره؟
                              فکر کنم باید از 4 بیت کم ارزش صرف نظر بشه همچنین برای دقت بهتر میشه بیت 5 رو با مقدار اون 4 بیت حذف شده گرد کرد

                              دیدگاه


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

                                سلام خدمت استاد کی نژاد،من در سایت شما مشغول بررسی نمونه کد شما برای ایجاد ملودی بودم،و چند سوال برام پیش اومد:
                                آیا در آرایه ی notes خانه های زوج آرایه نمایانگر فرکانس نت(که یکی از خانه های آرایه ی TCC1_values است) و خانه های فرد بیانگر طول زمان اجرای همان نت است؟... در واقع منظورم این است که الگوریتم برنامه را درست متوجه شدم؟
                                سوال 2: دلیل اینکه تولید موج رو در نت si1 قطع میکنید چی هست؟
                                با تشکر.

                                دیدگاه

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