اطلاعیه

Collapse
No announcement yet.

تولید پالس PWM بر روی پایه دلخواه بدون استفاده از تایمر در مد PWM

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

    تولید پالس PWM بر روی پایه دلخواه بدون استفاده از تایمر در مد PWM

    من نیاز به یه زیر برنامه دارم که توش با تغییر مقدار یه متغیر از 0 تا 255 پالس PWM خروجی تغییر کنه. فرکانس هم خیلی مهم نیست مثلا یک کیلوهرتز خوبه.
    میخوام بدون استفاده از تایمر در مد PWM این کارو بکنم.

    #2
    پاسخ : تولید پالس PWM بر روی پایه دلخواه بدون استفاده از تایمر در مد PWM

    سلام دوست عزیز

    منظورتون اینکه میخواین بدون استفاده از هیچ تایمری حتی برای خود pwm ، یه موج pwm طراحی کنید که دیوتی سایکلش قابل تغییر باشه

    مثلا با یه ولوم دیوتی رو تغییر بدین؟

    با چه زبانی؟

    سعی کنید سوالاتتون رو واضح بیان کنید.
    [glow=red,2,300]گرد هم آمدن شروع است.با هم ماندن پيشرفت است.با هم کار کردن موفقيت است.[/glow]
    [img width=98 height=100]http://s3.picofile.com/file/7407857311/icon3.png[/img]

    دیدگاه


      #3
      پاسخ : تولید پالس PWM بر روی پایه دلخواه بدون استفاده از تایمر در مد PWM

      روی یک و نهایت 2 پایه از میکروت میتونی انجام بدی
      با یک دیلی ساده و 1 و 0 کردن پینت
      ولی اولا دقیق نیست
      دوما فرکانس زیادی نمیتونی بگیری(1 کیلو میده)
      سوما میکروت دائما درگیره
      هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
      بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
      میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

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

      دیدگاه


        #4
        پاسخ : تولید پالس PWM بر روی پایه دلخواه بدون استفاده از تایمر در مد PWM

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

        دیدگاه


          #5
          پاسخ : تولید پالس PWM بر روی پایه دلخواه بدون استفاده از تایمر در مد PWM

          دوست من این کار خیلی سادست.

          کافی شما یکی از تایمرها رو تو مد pwm راه اندازی کنی و وقفه ی مقایسش (Compare Match Interrupt) رو نیز فعال کنی.

          در این حالت با هر بار برابر شدن مقدار رجیستر TCNT با بافر رجیستر OCR یک وقفه رخ میده که شما میتونی تو زیر روال اون وقفه هر عملیاتی که خواستی اعم از جابجایی وضعیت پایه های هر یک از پورت ها اقدام کنی.

          با اینکار علاوه بر داشتن pwm روی یایه ی OC میتونی pwm رو رو هر کدوم از پایه ها خواستی داشته باشی .
          [glow=red,2,300]گرد هم آمدن شروع است.با هم ماندن پيشرفت است.با هم کار کردن موفقيت است.[/glow]
          [img width=98 height=100]http://s3.picofile.com/file/7407857311/icon3.png[/img]

          دیدگاه


            #6
            پاسخ : تولید پالس PWM بر روی پایه دلخواه بدون استفاده از تایمر در مد PWM

            نوشته اصلی توسط حمیدجان
            دوست من این کار خیلی سادست.
            کافی شما یکی از تایمرها رو تو مد pwm راه اندازی کنی و وقفه ی مقایسش (Compare Match Interrupt) رو نیز فعال کنی.
            در این حالت با هر بار برابر شدن مقدار رجیستر TCNT با بافر رجیستر OCR یک وقفه رخ میده که شما میتونی تو زیر روال اون وقفه هر عملیاتی که خواستی اعم از جابجایی وضعیت پایه های هر یک از پورت ها اقدام کنی.
            با اینکار علاوه بر داشتن pwm روی یایه ی OC میتونی pwm رو رو هر کدوم از پایه ها خواستی داشته باشی .
            تایمر 1 برای تولید پالس PWM ه درسته؟ بوسیله پیکر بندی این تایمر میشه 2تا پالس PWM با مقادیر دلخواه تو پایه های OC1A و OC1B تولید کنیم. حالا اگه بخوایم این پالسها تو پایه های دیگه ای از میکرو هم ظاهر بشه چطوری میشه اینکارو کرد؟
            با استفاده از وقفه زمانی که تایمر سرریز بشه میتونیم یکارایی بکنیم. اما در اینجا که نمیشه. یعنی سرریز تایمر اصلا چه ربطی به پالس PWM داره؟
            من اصلا متوجه نشدم باید چیکار کنم میشه بیشتر توضیح بدید؟ بسکام هم بلدم.

            دیدگاه


              #7
              پاسخ : تولید پالس PWM بر روی پایه دلخواه بدون استفاده از تایمر در مد PWM

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

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

              دیدگاه


                #8
                پاسخ : تولید پالس PWM بر روی پایه دلخواه بدون استفاده از تایمر در مد PWM

                نوشته اصلی توسط n340
                با سرریز شدن تایمر می تونی توی اینتراپت ایجاد شده پین مورد نظر رو خاموش و روشن کنی
                من فکر نمیکنم اینطوری بشه. ببین تایمر 1برای تولید PWM. این تایمر همزمان میتونه 2تا پالس PWM تولید کنه. اگه طبق گفته شما از سرریزی تایمر بخواهیم اینکارو بکنیم تایمر برا کدوم پالس PWM داره سرریز میشه؟
                من یه فکری برا رفع این مشکل به نظرم رسیده آزمایش میکنم جواب داد بهتون میگم.

                دیدگاه


                  #9
                  پاسخ : تولید پالس PWM بر روی پایه دلخواه بدون استفاده از تایمر در مد PWM

                  فدات شم:

                  من کی گفتم از وقفه ی سر ریز تایمر باید استفاده کنی من اینو گفتم:
                  نوشته اصلی توسط حمیدجان
                  کافی شما یکی از تایمرها رو تو مد pwm راه اندازی کنی و وقفه ی مقایسش (Compare Match Interrupt) رو نیز فعال کنی.
                  دوست خوبمون گفتن:
                  نوشته اصلی توسط n340
                  با سرریز شدن تایمر می تونی توی اینتراپت ایجاد شده پین مورد نظر رو خاموش و روشن کنی
                  نباید از وقفه ی سر ریز استفاده کرد باید حتما از وقفه ی مقایسه (Compare Match Interrupt) استفاده کرد.

                  کی گفته فقط میتونی از تایمر 1 برای تولید pwm استفاده کنی.
                  نوشته اصلی توسط Tabandokht
                  تایمر 1 برای تولید پالس PWM ه درسته؟
                  در اکثر مدلهای avr منظورم (atmega) از هر سه تایمر 0 ، 1 و 2 میتونی برای تولید موج pwm استفاده کنی.


                  مراحل تولید یه موج pwm روی تمام پایه های میکرو به این صورته:

                  یکی از تایمرها رو تو مد pwm راه اندازی میکنی و وقفه ی مقایسش (Compare Match Interrupt) رو نیز فعال میکنی.

                  در این حالت با هر بار برابر شدن مقدار رجیستر TCNT با بافر رجیستر OCR یک وقفه رخ میده که شما در زیر روال اون

                  وقفه( وقفه ی مقایسه ) وضعیت تمام پین های پورت های میکرو رو با دستور (PORTx=~PORTx) که در اینجا به جای x
                  اسم پورت رو میذاری بر عکس میکنی .

                  این کار دقیقا مثل Toggle کردن پایه ی OC که میکرو این کار رو خودش به صورت اتوماتیک انجام میده.

                  به همین سادگی هیچ چیز دیگه ای هم لازم نداره.
                  [glow=red,2,300]گرد هم آمدن شروع است.با هم ماندن پيشرفت است.با هم کار کردن موفقيت است.[/glow]
                  [img width=98 height=100]http://s3.picofile.com/file/7407857311/icon3.png[/img]

                  دیدگاه


                    #10
                    پاسخ : تولید پالس PWM بر روی پایه دلخواه بدون استفاده از تایمر در مد PWM

                    یعنی اگر بسته به انتخاب نوع خروجی روی OC1A یا OC1B یعنی معکوس بودن یا نبودن CLEARUP یا CLEARDOWN با مقایسه لاجیک پایه ها
                    در حقیقت ON OC1B LABEL یا ON OC1A LABEL بعد از اتمام یک پریود برنامه به LABEL میرود
                    بعدا یه جمله قشنگ مینویسم

                    دیدگاه


                      #11
                      پاسخ : تولید پالس PWM بر روی پایه دلخواه بدون استفاده از تایمر در مد PWM

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

                      ببخشید من متوجه نشدم.
                      [glow=red,2,300]گرد هم آمدن شروع است.با هم ماندن پيشرفت است.با هم کار کردن موفقيت است.[/glow]
                      [img width=98 height=100]http://s3.picofile.com/file/7407857311/icon3.png[/img]

                      دیدگاه


                        #12
                        پاسخ : تولید پالس PWM بر روی پایه دلخواه بدون استفاده از تایمر در مد PWM

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

                        دیدگاه


                          #13
                          پاسخ : تولید پالس PWM بر روی پایه دلخواه بدون استفاده از تایمر در مد PWM

                          نوشته اصلی توسط شازده
                          من یه فکری برا رفع این مشکل به نظرم رسیده آزمایش میکنم جواب داد بهتون میگم.
                          :wow: :eek: :wow:

                          خواستم یه چیزی گفته باشم.

                          دیدگاه


                            #14
                            پاسخ : تولید پالس PWM بر روی پایه دلخواه بدون استفاده از تایمر در مد PWM

                            من یه فکری برا رفع این مشکل به نظرم رسیده آزمایش میکنم جواب داد بهتون میگم.


                            :wow: :eek: :wow:

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

                            دیدگاه


                              #15
                              پاسخ : تولید پالس PWM بر روی پایه دلخواه بدون استفاده از تایمر در مد PWM

                              نوشته اصلی توسط شهرام کشت پور
                              یعنی اگر بسته به انتخاب نوع خروجی روی OC1A یا OC1B یعنی معکوس بودن یا نبودن CLEARUP یا CLEARDOWN با مقایسه لاجیک پایه ها
                              در حقیقت ON OC1B LABEL یا ON OC1A LABEL بعد از اتمام یک پریود برنامه به LABEL میرود
                              دوست عزیز اون قسمت برنامه ای که نوشتم مربوط بود به زبان C.

                              برای تولید موج pwm باید حتما بعد از هر بار برابر شدن مقدار رجیستر TCNT با بافر رجیستر OCR که در این حالت یک وقفه رخ میده وضعیت قبلی موج Toggle بشه که برای پایه ی OC این کار به صورت اتوماتیک انجام میشه در صورتی که مد Toggle رو فعال کرده باشیم.
                              اما برای بقیه ی پایه ها باید از دستور (PORTx=~PORTx) استفاده کنیم.
                              [glow=red,2,300]گرد هم آمدن شروع است.با هم ماندن پيشرفت است.با هم کار کردن موفقيت است.[/glow]
                              [img width=98 height=100]http://s3.picofile.com/file/7407857311/icon3.png[/img]

                              دیدگاه

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