اطلاعیه

Collapse
No announcement yet.

راه اندازی واحد PWM در AT91SAM7X256

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

    راه اندازی واحد PWM در AT91SAM7X256

    با سلام

    من می خواهم واحد PWM رو در میکروکنترلر AT91SAM7X256 فعال کنم و در کنترل نور یک LED یا سرعت یک موتور یا اعمال به L298 یا ... استفاده کنم
    دیتاشیت رو مطالعه کردم و جدول زیر که مربوط به رجیستر ها است رو در زیر پلود کردم ، 8 تا رجیستر اول که مربوط به فعال یا غیر فعال کردن PWM و وقفه داخلی می باشد ولی رجیستر های بعدی رو اگر لطف فرمایید و توضیح دهید خیلی خیلی ممنون میشوم
    توی Bascom-AVR یک مقدار رو داخل PWM قرار می دادم و نور LED یا سرعت موتور نسبت به این مقدار تغییر می کردم ولی حالا توی ARM و Keil چطوریه ؟

    تا جایی که فهمیدم ، پایه ای رو که می خواهیم PWM رو روی آن فعال کنید باید ابتدا واحد PIO روی پایه رو غیر فعال کنید و سپس حالت Multi-Driver رو فعال می کنیم تا تمامی امکانات روی پایه از قبیل مقاومت Pull-Up یا ... غیر فعال شود و سپس رجیستر واحد همزمان سازی داده ها روی پورت های مختلف رو فعال می کنیم

    لطفا من رو کمک و راهنمایی فرمایید




    با سپاس
    http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

    #2
    پاسخ : راه اندازی واحد PWM در AT91SAM7X256

    سلام

    داشتم روی PWM کار می کردم که میکروکنترلر سوخت !!!
    حالا از شما دوستان کمک می خواهم لطفا پست بالا رو مطالعه فرمایید

    کدوم یکی از دستورات بالا به درد میخوره و یه توضیحی روش بدید که من کدومش رو مقدار دهی کنم و یک سروو موتور رو بچرخونم ؟؟

    با سپاس
    http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

    دیدگاه


      #3
      پاسخ : راه اندازی واحد PWM در AT91SAM7X256

      من قبلا pwm نرم افزاری رو با keil راه انداخته بودم خیلی ساده هستش . دنبال برنامش میگردم و براتون میزارم.
      راستی این میکروت واسه چی سوخت؟؟

      دیدگاه


        #4
        پاسخ : راه اندازی واحد PWM در AT91SAM7X256

        سلام

        خیلی ممنون
        میکرو هم میگفتن که به دلیل این که خیلی Program و Erase کردم ، تعداد دفعات استفاده از میکرو تمام شده و باید میکرو تعویض بشه !!!!!!!!!!!
        راه اندازی PWM نرم افزار با سخت افزاری چه تفاوتی داره ؟
        با سپاس
        http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

        دیدگاه


          #5
          پاسخ : راه اندازی واحد PWM در AT91SAM7X256

          سلام رفیق اول اینو ببین:

          وقتی شما میاین از pwm سخت افزاری استفاده میکنین داخله میکرو یک سخت افزار pwm وجود داره که شما با خوندن و نوشتن در رجیستر های واحد pwm میتونین مدولاسیون رو انجام بدین
          خوبی pwm سخت افزاری اینه که خیلی کم cpu رو اشغال میکنه (بقیه ارتباطات نرم افزاری هم همینطوره مثلا uart نرم افزاری یا spi نرم افزاری)
          ولی ما توی pwm نرم افزاری فقط کافیه که یکی از io ها رو 0 و 1 کنیم و مقدار duty cycle رو متغییر خودمون تنظیم کنیم و با استفاده از یک فیلتر RC یک یا چند طبقه میتونین خروجی pwm رو به یک ولتاژ آنالوگ تبدیل کنین البته من خودم همیشه2 یا 3 طبقه فیلتر RC برای خروجی pwm میزارم که قشنگ یک ولتاژ صاف بهم بده
          این جا چند تا برنامه نمونه گذاشتم که یکیش pwm نرم افزاری هستش :
          http://arm.blogfa.com/post-20.aspx


          دیدگاه


            #6
            پاسخ : راه اندازی واحد PWM در AT91SAM7X256

            با سلام

            خیلی خیلی ممنون آقای mohamadreza hosseina ولی من موفق به راه اندازی PWM نشدم و قصد راه اندازی اون رو به صورت سخت افزاری دارم که اگر لطف کنید و من رو کمک و راهنمایی فرمایید خیلی خیلی ممنون می شوم

            ××× اگر لطف کنید و هرچه زودتر پاسخ دهید (توی این 2 روز) متشکر می شوم

            حالا مطالب رو یکم جمع بندی می کنم :
            من می خواهم واحد PWM رو در میکروکنترلر AT91SAM7X256 به صورت سخت افزاری فعال کنم و در کنترل نور یک LED یا سرعت یک موتور یا اعمال به L298 یا ... استفاده کنم ××× ابتدا راه اندازی سروو موتور

            از بین دستورات زیر کدوم یکی بدرد میخوره ، لطفا به زبان ساده توضیح دهید چون من کتاب در این مورد خوندم ولی چیزی نفهمیدم
            در برنامه زیر یک موج PWM با فرکانس 48 کیلوهرتز و ضریب وظیفه 10٪ تولید می شود

            چندتا سوال :
            1 . ضریب وظیفه چیه ؟
            2 . برای راه اندازی سروو موتور به فرکانس چند و ضریب وظیفه چند نیاز داریم ؟
            3 . وقتی میکرو به این دستورات رسید یک موج PWM تا چه مدتی ایجاد می کند ؟ نیازی به قرار دادن دستورات توی حلقه نیست ؟

            برنامه :

            AT91C_BASE_PMC->PMC_PCER=(1<<AT91C_ID_PWMC);

            AT91C_BASE_PIOA->PIO_PDR=0x1;
            AT91C_BASE_PIOA->PIO_MDER=0x1;
            AT91C_BASE_PIOA->PIO_ASR=0x1;

            AT91C_BASE_PWMC_CH0->PWMC_CMR=0x202;
            AT91C_BASE_PWMC_CH0->PWMC_CPRDR=250;
            AT91C_BASE_PWMC_CH0->PWMC_CDTYR=25;
            AT91C_BASE_PWMC->PWMC_ENA=1;





            با سپاس
            http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

            دیدگاه


              #7
              پاسخ : راه اندازی واحد PWM در AT91SAM7X256

              سلام
              AT91C_BASE_PMC->PMC_PCER=(1<<AT91C_ID_PWMC);
              این خط برای فعال کردن کلاک واحد pwm هست.
              AT91C_BASE_PIOA->PIO_PDR=0x1;
              AT91C_BASE_PIOA->PIO_MDER=0x1;
              AT91C_BASE_PIOA->PIO_ASR=0x1;
              این سه خط برای این می باشد که سیگنال pwm0 را بر روی pa0 فعال کنید و در دسترس باشد، می باشد که اینطور که از برنامه مشخص است این برنامه برای سری 7s می باشد.
              AT91C_BASE_PWMC_CH0->PWMC_CMR=0x202;
              این خط کلاک ورودی به pwm را mck/4 در نظر میگیرد و همچنین نحوه شمارش تایمر pwm به صورت left Aligned می باشد، پلاریته آغازین pwm در سطح یک می باشد، رجیستر pwm_cupd به عنوان مقدار جدید D.C. محسوب می شود.
              AT91C_BASE_PWMC_CH0->PWMC_CPRDR=250;
              این رجیستر هم با توجه به محاسبات و فرکانس خروجی pwm بدست می آید که رابطه مستقیم با فرکانس pwm دارد.
              AT91C_BASE_PWMC_CH0->PWMC_CDTYR=25;
              این رجیستر هم مربوط به D.C. می باشد و توسط این رجیستر می توان مقدار D.C. را تعیین نمود. که باید مقداری بین 0 تا pwm_cprd را داشته باشد.
              AT91C_BASE_PWMC->PWMC_ENA=1;
              این رجیستر هم برای فعال کردن pwm می باشد که با توجه به مقداری که در آن قرار داده اید pwm0 فعال می شود.
              هیچ نیازی نیست که آنها در حلقه for قرار دهید یکبار که اینها اجرا شوند شکل موج pwm مورد نظر تولید می شود. و در هرجای برنامه که نیاز بود می توانید مقدار D.C. را تغییر دهید.

              دیدگاه


                #8
                پاسخ : راه اندازی واحد PWM در AT91SAM7X256

                راستش هنوز pwm سخت افزاری رو راه ننداختم ! ولی کاره زیادی نداره
                تا موقعی هم که نیاز به فرکانس و دییوتی سایکل ما ثابت باشه نیازی به تغییری در رجیستر های pwm نیستش
                بزار یه نگاه کنم شاید سمپلی داشته باشم براش
                سروو ها معمولا یک فرکانسی حدودا 40 50 هرتزی لازم دارن که با تغییر duty cycle زاویه شافت رو تغییر میده

                دیدگاه


                  #9
                  پاسخ : راه اندازی واحد PWM در AT91SAM7X256

                  با سلام

                  خیلی خیلی ممنون از پاسخ هایتان

                  اگر لطف کنید و به سوال های زیر هم پاسخ دهید خیلی خیلی ازتون متشکر می شوم
                  1 . آقای حامد AT91 شما فرمودید که این برنامه برای سری 7S می باشد ، من می خواهم برای سری 7X استفاده کنم ، چطوری برنامه رو تغییر دهم
                  2 . left Aligned چیست ؟
                  3 . پلاریته آغازین چیست ؟
                  4 . راستی یک فرمول توی کتاب "مرجع کامل میکروکنترلر های ARM" هست ، برای تولید فرکانس بین 40 تا 50 چگونه باید از فرمول استفاده کنم ؟
                  5 . ضریب وظیفه چیه ؟
                  6 . آیا فرکانس و ضریب وظیفه ربطی به duty cycle نداره ؟

                  با سپاس
                  http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

                  دیدگاه


                    #10
                    پاسخ : راه اندازی واحد PWM در AT91SAM7X256

                    اگر لطف کنید و هرچه زودتر پاسخ دهید ممنون می شوم

                    با سلام

                    خیلی خیلی ممنون از پاسخ هایتان

                    اگر لطف کنید و به سوال های زیر هم پاسخ دهید خیلی خیلی ازتون متشکر می شوم
                    1 . آقای حامد AT91 شما فرمودید که این برنامه برای سری 7S می باشد ، من می خواهم برای سری 7X استفاده کنم ، چطوری برنامه رو تغییر دهم
                    2 . left Aligned چیست ؟
                    3 . پلاریته آغازین چیست ؟
                    4 . راستی یک فرمول توی کتاب "مرجع کامل میکروکنترلر های ARM" هست ، برای تولید فرکانس بین 40 تا 50 چگونه باید از فرمول استفاده کنم ؟
                    5 . ضریب وظیفه چیه ؟
                    6 . آیا فرکانس و ضریب وظیفه ربطی به duty cycle نداره ؟

                    با سپاس
                    http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

                    دیدگاه


                      #11
                      پاسخ : پاسخ : راه اندازی واحد PWM در AT91SAM7X256

                      نوشته اصلی توسط Soodi
                      اگر لطف کنید و هرچه زودتر پاسخ دهید ممنون می شوم

                      با سلام

                      خیلی خیلی ممنون از پاسخ هایتان

                      اگر لطف کنید و به سوال های زیر هم پاسخ دهید خیلی خیلی ازتون متشکر می شوم
                      1 . آقای حامد AT91 شما فرمودید که این برنامه برای سری 7S می باشد ، من می خواهم برای سری 7X استفاده کنم ، چطوری برنامه رو تغییر دهم
                      2 . left Aligned چیست ؟
                      3 . پلاریته آغازین چیست ؟
                      4 . راستی یک فرمول توی کتاب "مرجع کامل میکروکنترلر های ARM" هست ، برای تولید فرکانس بین 40 تا 50 چگونه باید از فرمول استفاده کنم ؟
                      5 . ضریب وظیفه چیه ؟
                      6 . آیا فرکانس و ضریب وظیفه ربطی به duty cycle نداره ؟

                      با سپاس
                      سلام
                      طبق کتاب "مرجع کامل میکروکنترلرهای ARM سری AT91" انتشارات نص
                      1. اگر جدول 4-14 صفحه 130 کتاب را ببینید PWM0 را می توان از PA0 در حالت A در سری 7S در خروجی قرار دهید. برای سری 7X پیوست 3 صفحه 519 و 520 راببینید. PWM0 را می توان از PB19 در حالت A ویا از PB27 در حالت B خروجی قرار دهید. پس برای PB19 اون سه خط از برنامه رجیسترهای PIO به صورت زیر تغییر می کند.

                      کد:
                      AT91C_BASE_PIOB->PIO_PDR = (1<<19);
                      AT91C_BASE_PIOB->PIO_MDER = (1<<19);
                      AT91C_BASE_PIOB->PIO_ASR = (1<<19);

                      2. شکل 9-4 صفحه 232 را ببین فرمول محاسبه دوره تناوب هم در این حالت در پایین آن نوشته شده است. همچنین شکل 9-7 را ببین قسمت پایینش برای این حالت می باشد.
                      3. در این مورد هم در شکل 9-7 معلوم هست CPOL=0 یا CPOL=1 فرقش را در شکل بهتر متوجه میشوید.
                      4. مثلا در مثال 9-1 صفحه 244 فرکانس ورودی PWM را MCK/4 در نظر گرفته و برای فرکانس 48KHZ مقدار رجیستر CPRD را بدست آورده است.
                      5و6. D.C. همون ضریب وظیفه هست دیگه. به بیان ساده ضریب وظیفه می شود: نسبت مدت زمان 1 بودن سیگنال در یک دوره تناوب به کل دوره تناوب سیگنال.

                      دیدگاه


                        #12
                        پاسخ : راه اندازی واحد PWM در AT91SAM7X256

                        [glow=red,2,300]اگر لطف کنید و زودتر پاسخ دهید ممنون می شوم من زمان زیادی ندارم[/glow]

                        سلام

                        خیلی خیلی ممنون بالاخره موفق شدم سروو موتور رو راه اندازی کنم
                        الان با تغییر مقدار CDTYR بین اعداد 160 تا 170 سروو موتور تا یه حدی بیشتر نمیچرخه !!!
                        یکم مقادیر رو تغییر دادم ولی دیگه اصلا کار نکرد !!!

                        ****** الان خودم نمودونم چیکار کردم ، اگر یکی از دوستان لطف کند و این مبحث کار با رجیستر های PWM و هر کدام چکار می کند رو به *زبان ساده برای من توضیح بدهد خیلی خیلی متشکر می شوم چون الان گیج شدم ، کتاب رو هم که می خونم گیج تر می شوم چون خیلی پیچونده و مباحث تخصصی فرکانس و موج و ... ها تویش هست !!!!!

                        با سپاس
                        http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

                        دیدگاه


                          #13
                          پاسخ : راه اندازی واحد PWM در AT91SAM7X256

                          با سلام خدمت شما دوست عزیز (soodi)من تمام این تاپیک رو خوندم به نظر من شما الان با توضیحات اقای حامد at91 باید کاملا رجیسترهای pwm رو یادگرفته باشین من با خوندن کتاب انتشارات نص (اقای پورخاجه) تونستم pwm راه اندازی کنم و باهاش یک موتور dc رو راه اندازی کنم و کاملا هم سرعتش تحت کنترل بود نکته مهم تو pwm اینه که شما بدونی فرکانس و ضریب وظیفه هردو توی کنترل سرعت موثرند اما شما باید با توجه به موتور و مقدار سرعتی که میخوای کنترل کنی یک مقدار فرکانس رو انتخاب کنی بعدش با تغییر ضریب وظیفه سرعت رو کنترل کنی این دو مورد رو هم که رجیسترهاش رو میدونی . به نظر من الان مشکل شما با میکرو کنترلر نیست و شما لازم که بیشتر راجع به طرز کار سرو موتورها اطلاعات بدست بیاری .امیدوارم موفق باشی

                          دیدگاه


                            #14
                            پاسخ : راه اندازی واحد PWM در AT91SAM7X256

                            سلام
                            یه سوال دیگر
                            برای تغییر فرکانس باید مقدار CPRDR رو تغییر دهم که با فرمول موجود در کتاب بدست می آید و فرکانس میکرو هم 48 مگا هرتز در نظر میگیریم
                            ولی توی فرمول اول یک چیز رو نفهمیدم این که چرا توی مخرج در 4 ضرب شده است ، این 4 چیست ؟

                            راستی : از فرمول دوم چه استفاده ای میشود ؟

                            راستی 2 : برای لطفا پست بالایی من رو مطالعه کنید

                            با سپاس خیلی فراوان
                            http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

                            دیدگاه


                              #15
                              پاسخ : راه اندازی واحد PWM در AT91SAM7X256

                              سلام

                              دوستان کارم گیره
                              لطفا دوتا پست بالا رو مطالعه نمایید
                              http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

                              دیدگاه

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