اطلاعیه

Collapse
No announcement yet.

راه اندازی استپر موتور با قابلیت Pattern generation در awex

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

    #16
    پاسخ : پاسخ : راه اندازی استپر موتور با قابلیت Pattern generation در awex

    نوشته اصلی توسط طراح
    اگر هدف شما از استفاده از بخش AWeX استفاده از قابلیت Not بودن دو شکل موج (یا احتمالا اضافه کردن Dead time) است، از روش های مختلفی می توان این کار را انجام داد. اما قبل از آن توضیح دهید که آیا محدودیتی در استفاده از یک تایمر دارید و یا می توان از بیش از یک تایمر هم استفاده کرد.
    از پاسخ شما ممنونم،
    نه، محدودیتی در استفاده از تایمر ها ندارم . اما تاکید بر استفاده از کانال های یک تایمر در این مد، هم زمانی تولید پالس ها (خود پالس و معکوس آن) در فرکانس های بالا است.
    هدف: تولید 2 جفت سیگنال همزمان (هر جفت یکی نرمال یکی معکوس) حداکثر فرکانس هم 20 کیلوهرتز. همزمانی استارت این سیگنال ها مهم است.
    اما راه حل :می توان 4 تایمر را در مد تولید موج قرار داد و با نوشتن مقادیر مناسب در CCA هر تایمر موج را تولید کرد و سیگنالی که نیاز به not شدن دارد را از طریق پورت ها inverted تنظیم کنیم. و پس از تنظیمات لازم رجیستر CTRLA هر تایمر را با کلاک مناسب استارت می زنیم.اما زمان استارت تایمر ها در یک زمان واحد انجام نمیشود. به فاصله نوشتن هر رجیستر
    حال سوال من: آیا راه حل بهتری برای تولید این سیگنال ها با در نظر گرفتن همزمانی آنها می توان پیشنهاد کرد؟

    دیدگاه


      #17
      پاسخ : راه اندازی استپر موتور با قابلیت Pattern generation در awex

      اگر فقط Not بودن دو شکل موج مهم است و اضافه کردن Dead time مد نظر نیست، برای تولید کاملا دقیق و همزمان شکل موج ها می توان از قابلیت Pattern generation برای ارسال 4 نمونه بیت به پورت ها همزمان با Update تایمر با فرکانس 40 کیلوهرتز استفاده کرد. این روش با توجه به این حقیقت قابل پیاده سازی است که در یک سیکل موج 10 کیلوهرتز، این شکل موج دو بار و شکل موج 20 کیلوهرتز 4 بار تغییر می کند. اگر موج های 10 و 20 کیلوهرتز و Not آنها را در کنار هم رسم کنیم، مشاهده می شود که 4 مرحله مشابه در این شکل موج ها وجود دارد. بنابراین با بارگذاری مرحله به مرحله آن در رجیستر DTBUFHS می توان پروسه مذکور را پیاده کرد. همچنین اگر Timing بسیار دقیق مد نظر نباشد، با DMA هم می توان بدون اجرای کد این شکل موج ها را تولید کرد. استفاده از وقفه دو تایمر مجزا و مقداردهی به رجیستر CTRLC هم یک روش دیگر برای شرایطی است که اضافه کردن Dead time یا مستقل بودن فرکانس دو شکل موج مد نظر باشد.
      اوژن: به معنای افکننده و شکست دهنده است
      دانایی، توانایی است-Knowledge is POWER
      برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
      وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
      قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
      اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
      ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

      دیدگاه


        #18
        پاسخ : پاسخ : راه اندازی استپر موتور با قابلیت Pattern generation در awex

        نوشته اصلی توسط طراح
        اگر فقط Not بودن دو شکل موج مهم است و اضافه کردن Dead time مد نظر نیست، برای تولید کاملا دقیق و همزمان شکل موج ها می توان از قابلیت Pattern generation برای ارسال 4 نمونه بیت به پورت ها همزمان با Update تایمر با فرکانس 40 کیلوهرتز استفاده کرد.
        من پالس ها رو از روش سریز تایمر 0 روی 25 میکروثانیه و پدیت مقدار پورت c انجام دادم. پالس ها با دقت مطلوبی تولید شدند. اما سوال من اینه که تفاوت قرار دادن الگو در خروجی پورت با رجیستر DTIBHS در چیست؟ به نظر من هر دو نیاز دارن در زمان update تایمر، مقدار جدید در آنها قرار گیرد.و با این فرض که برای تولید سیگنال ها مربوطه 4 الگو در هر سیکل لازم است.پس نیاز به یک روتین وقفه داریم تا در هر 25 میکروثانیه الگوی جدید را اعمال کند.
        کدی که برای این منظور نوشتم به شکل زیر است.


        کد:
        int x,pattern[4]={0b00000101,0b00001001,0b00000110,0b00001010};
        interrupt [TCC0_OVF_vect] void tcc0_overflow_isr(void)
        {
        PORTC.OUT=pattern[x++];
        if(x==4) x=0;
        }

        پیشنهاد روش dma هم بررسی کردم.در دیتاشیت که مطالعه می کردم به این نکته برخورد کردم:


        When a DMA channel requests a data transfer, the bus ar biter will wait until the AVR CPU is not using the data bus and permit the DMA Controller to transfer data

        با توجه به این که اولویت استفاده از دیتاباس با cpu است و در طول اجرای برنامه ممکن است باس داده با زمان های مختلف به کار گرفته شود. به نظر من پالس ها ممکن است کمی نامتقارن تولید شوند.

        دیدگاه


          #19
          پاسخ : پاسخ : راه اندازی استپر موتور با قابلیت Pattern generation در awex

          نوشته اصلی توسط bhk123
          اما سوال من اینه که تفاوت قرار دادن الگو در خروجی پورت با رجیستر DTIBHS در چیست؟ به نظر من هر دو نیاز دارن در زمان update تایمر، مقدار جدید در آنها قرار گیرد.
          در روش مقداردهی مستقیم پورت توسط روتین وقفه ممکن است دقت زمانی کافی وجود نداشته باشد (به خصوص در زمانی که وقفه های هم اولویت یا با اولویت بالاتر فعال باشند و وقفه تایمر منتظر بماند). اما در مقدار دهی به DTBUFHS کافی است که در هر زمانی قبل از شرایط update این مقداردهی انجام شود و قرار گرفتن مقدار مورد نظر در خروجی پورت، بصورت کاملا دقیق و همزمان با update اتفاق می افتد. بنابراین مشکل عدم دقت زمانی ناشی از تاخیر در اجرای وقفه تغییر دهنده مقدار پورت، بوجود نمی آید.

          با توجه به این که اولویت استفاده از دیتاباس با cpu است و در طول اجرای برنامه ممکن است باس داده با زمان های مختلف به کار گرفته شود. به نظر من پالس ها ممکن است کمی نامتقارن تولید شوند.
          به همین دلیل قبلا قید زیر را ذکر کردم:

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

          دیدگاه


            #20
            پاسخ : راه اندازی استپر موتور با قابلیت Pattern generation در awex

            سلام دوستام میخاستم بدونم که آیا بعد ازاینکه یک پالس را توسط واحد awex در xmega روی یک پورت قرار دادم آیا میتوان با event آن پالس را در زمان های مشخصی قطع و وص کنم . انچه از Fault detection متوجه شدم برای غیر فعال کردن پالس در پایه ی خروجی می توان از event استفاده کرد حالا من میخواهم بالس بعد از خوردن event خاموش بماند تا event بعدی که آمد دو باره پالس برقرار شود. این امکان وجود دارد؟

            دیدگاه


              #21
              پاسخ : راه اندازی استپر موتور با قابلیت Pattern generation در awex

              در منوال در قسمت Fault Protection -> Fault Restore Modes دو نوع مد تعریف شده. یکی مد Latch که در صورت ایجاد fault در این مد اگر شرایط fault برطرف شود تا زمانی که بیت FDF در رجیستر STATUS به صورت نرم افزاری پاک نشود در همین حالت غیر فعال باقی می ماند و دوم مد cycle by cycle که در این مد در صورتی که شرایط fault بر طرف شود با UPDATE بعدی فعال می شود.
              بنابراین مد اول بیشتر تحت کنترل شماست.
              گاهی افرادی به موفقیت های بزرگ می رسند، تنها به این دلیل ساده که نمی دانند کاری که به آن دست زده اند بسیار دشوار، بلکه غیر ممکن است.

              دیدگاه


                #22
                پاسخ : راه اندازی استپر موتور با قابلیت Pattern generation در awex

                مرسی از وقتتون
                ولی برای مد اول من باید یه فلگ رو پاک کنم ولی من میخام دستوری انجام ندم یعنی با چیزی مثل event اون فلگ پاک بشه آیا چیزی به ذهنتون میرسه؟
                یعنی با event اول پورت خاموش بشه خاموش بمونه و با event دوم پورت روشن بشه.

                دیدگاه


                  #23
                  پاسخ : راه اندازی استپر موتور با قابلیت Pattern generation در awex

                  فک کنم دراینصورت مد دوم بهتر باشه فقط باید با event اول event یک بمونه و با تحریک event دوم event صفر بشه حالا چطور این کارو بکنم؟

                  دیدگاه


                    #24
                    پاسخ : راه اندازی استپر موتور با قابلیت Pattern generation در awex

                    برای اینکه دستور اجرا نشود باید از DMA استفاده کنید.
                    یک event باعث حالت fault شده و event دیگر به DMA فرمان کپی مقدار مناسب در رجیستر را می دهد.
                    گاهی افرادی به موفقیت های بزرگ می رسند، تنها به این دلیل ساده که نمی دانند کاری که به آن دست زده اند بسیار دشوار، بلکه غیر ممکن است.

                    دیدگاه


                      #25
                      پاسخ : راه اندازی استپر موتور با قابلیت Pattern generation در awex

                      آقایی راهنماییت واقعا کمک کرد .مرسی از وقتت

                      دیدگاه


                        #26
                        پاسخ : راه اندازی استپر موتور با قابلیت Pattern generation در awex

                        سلام
                        بعد از عمل کردن یک event میخام چند تا رجیستر مقدار دهی بشن چطور با dma اینکارو بکنم. ؟

                        دیدگاه


                          #27
                          پاسخ : راه اندازی استپر موتور با قابلیت Pattern generation در awex

                          اگر آدرس رجیسترها به صورت پی در پی بود DMA امکان افزایش آدرس با هربار کپی اطلاعات را دارد اما در غیر اینصورت باید با روشهای دیگری آن را پیاده سازی کنید. DMA دارای 4 کانال هست که می توانند جداگانه فرمان بگیرند.به عنوان مثال شما می توانید مقادیر رجیسترها را در یک آرایه و آدرس رجیستر ها را در آرایه دیگری داشته باشید. یکی از کانالهای DMA آدرسها را به نوبت در رجیستر مقصد کانال دیگر کپی می کند و دیگری مقادیر را در رجیسترها کپی می کند. حتی دو کانال می توانند به صورت DoubleBuffer کار کنند(Pair) یعنی وقتی کار کانال اول انجام شد کانال دیگر شروع به کار می کند.
                          گاهی افرادی به موفقیت های بزرگ می رسند، تنها به این دلیل ساده که نمی دانند کاری که به آن دست زده اند بسیار دشوار، بلکه غیر ممکن است.

                          دیدگاه

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