اطلاعیه

Collapse
No announcement yet.

روش محاسبه تایمر و چنتا سوال دیگه؟

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

    #16
    پاسخ : روش محاسبه تایمر و چنتا سوال دیگه؟


    اگه از تایمر 16bit استفاده میکنید باید بجای FF مقدار FFFF را بگذارید
    1micro saniye هم 1راتقسیم بر فرکانس میکرو میکنی تا زمان کاری میکرو بدست بیاد
    مقدار زمانی ککه از تایمر میخوای را در طرف راست مساوی میگذاری
    بعد به صورت آزمون و خطا مقداری را به (مقدار اولیه) و (پیش مقسم) میگذاری
    یا میتونی از برنامه fast AVR استفاده کنی انجا بهتر و اسن تر میتوانی زمان های مختلفی را بدست بیاوری و اگر مشکلی توی مقدارات باشه بهت میگه
    موفق باشی
    ایا این روش برای محاسبه یه زمان مثلا 200ms یا(5KHz ) درسته؟
    اگه مد تایمر نرمال باشه و کلاک تایمر هم 500KHz باشه
    اول 500کیلو رو در 200 میلی ضرب میکنیم عددی که بدست می یاد مقدار شمارش تایمر است که مدت زمان 200 میلی ثانیه طول می کشه
    حالا اگه مقدار FF یا FFFF رو از این عدد کم کنیم مقدار ریجیستر TCNTn بدسن می یاد (راستش من اینجوری محاسبه می کردم اگه اشتباست بگید؟)

    ذکات علم یاد دادنه ....

    دیدگاه


      #17
      پاسخ : روش محاسبه تایمر و چنتا سوال دیگه؟

      دوست عزیز شما از برنامه fast AVR استفاده کن راحت تری
      راسیاتش من خیلی وقته با این فرمول کار نکردم فقط یک بار ازش استفاده کردم

      دیدگاه


        #18
        پاسخ : روش محاسبه تایمر و چنتا سوال دیگه؟

        دوست عزیز شما از برنامه fast AVR استفاده کن راحت تری
        راسیاتش من خیلی وقته با این فرمول کار نکردم فقط یک بار ازش استفاده کردم
        میشه بگید چطوری با fast AVR کار کنم
        در ضمن اگه بخوام با pwm یه فرکانسه خاصی با یه دیوتی سایکل مشخص شده ایی درست کنم چه راه حلی داره؟
        ذکات علم یاد دادنه ....

        دیدگاه


          #19
          پاسخ : روش محاسبه تایمر و چنتا سوال دیگه؟

          یه سوال دیگه میشه بگید این رابطه برای محاسبه فرکانس PWM درسته؟
          ( Fpwm=Fclk/2 N*(top+1
          F clk فرکانس کلاک میکرو
          N ضریب تقسیم کلاک میکرو
          top هم مقداریه که تو ریجیستر OCR1A میریزیم
          اگه مد تایمر1 باشه: Mode: Fast PWM top=OCR1A
          اگه اشتباه درستشو لطف کنید بگید؟
          ذکات علم یاد دادنه ....

          دیدگاه


            #20
            پاسخ : روش محاسبه تایمر و چنتا سوال دیگه؟

            نوشته اصلی توسط majid.4206
            یه سوال دیگه میشه بگید این رابطه برای محاسبه فرکانس PWM درسته؟
            ( Fpwm=Fclk/2 N*(top+1
            F clk فرکانس کلاک میکرو
            N ضریب تقسیم کلاک میکرو
            top هم مقداریه که تو ریجیستر OCR1A میریزیم
            اگه مد تایمر1 باشه: Mode: Fast PWM top=OCR1A
            اگه اشتباه درستشو لطف کنید بگید؟

            بله درسته

            دیدگاه


              #21
              پاسخ : روش محاسبه تایمر و چنتا سوال دیگه؟

              نوشته اصلی توسط majid.4206
              دوست عزیز شما از برنامه fast AVR استفاده کن راحت تری
              راسیاتش من خیلی وقته با این فرمول کار نکردم فقط یک بار ازش استفاده کردم
              میشه بگید چطوری با fast AVR کار کنم
              در ضمن اگه بخوام با pwm یه فرکانسه خاصی با یه دیوتی سایکل مشخص شده ایی درست کنم چه راه حلی داره؟


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

              دیدگاه


                #22
                پاسخ : روش محاسبه تایمر و چنتا سوال دیگه؟

                یه سوال دیگه میشه بگید این رابطه برای محاسبه فرکانس PWM درسته؟
                ( Fpwm=Fclk/2 N*(top+1
                بله درسته
                ولی یه مشکلی که داره تو این رابطه نمیشه دیوتی سایکل رو تنظیم کرد(شایدم من بلد نیستم :angry
                چون برای فرکانسای مختلف که می خوام درست کنم مقدار ( top ( OCR1A رو تغیر می دم .
                اگه بخوام DC رو تغیر بدم کدوم رجیسترو باید کمو زیاد کنم (TCNT1 ؟؟) درسته؟

                شما برنامه fastAVR را در اختیار دارید؟
                راستش هنوز نصب نکردم . ایا فقط برای محاسبه تایمر از این برنامه استفاده می شه؟
                ذکات علم یاد دادنه ....

                دیدگاه


                  #23
                  پاسخ : روش محاسبه تایمر و چنتا سوال دیگه؟

                  سلام ................

                  من این بحث رو دنبال میکردم منتهی از بابی خیلی شرمندم که نتونستم پاسخ بدم ..

                  ببینید اساس کار PWM چیه؟ (فرض کنید مد رو همون مدل Fast گرفتیم .. ) برای پاسخ به این سوال باید ببینیم این مد جزو کدوم واحد تقسیم بندی میشه .. خب واحد که مشخصه؛ تایمر .. اما توی خود واحد تایمر چه رجیستری نقش ایفا میکنه؟ TCNT .. یعنی اون شمارنده ی هشت بیتی که موید تایمر ما هست، با بارگذاری مقادیر شمارش شده در رجیستر TCNT وضعیت شمارش رو نشون میده .. حالا هنگامی که تایمر سرریز میشه؛ به این معنا هست که این رجیستر از 0 تا 255 بارگذاری شده و با تولید یک رقم نقلی (که در محیط نرم افزار با تولید یک وقفه ی Ovf به معنای Over Flow نمایان میشه..) به حالت اولیه ی خودش (که همون Down باشه ..) بر میگرده و در اصطلاح ریست میشه ..

                  تا اینجا ما یه شمارنده داریم که با لیبل گذاری و مبنا قرار دادن واقعه ای به نام سرریز شدن؛ زمانبندی خودش رو ایجاد میکنه .. یعنی چی؟ یعنی اینکه میتونیم با استفاده از این سرریز شدن ها مبنای زمانی خودمون رو تنظیم کنیم .. اما PWM چیه؟ اصل PWM بحث میکنه بر روی تولید شکل موج پالس با DC های متفاوت .. حالا این DC (منظور همون Duty Cycle هست..) ها از چه طریقی به دست میان؟ چطور میتونیم اونهارو کنترل کنیم؟ و چند تا سوال دیگه میشن اساس بحث ما در این پست ..

                  میدونیم که برای PWM رجیستری وجود داره به نام OCR .. این رجیستر کارش چیه؟ یک عدد برای مقایسه با رجیستر TCNT .. حالا جریان این مقایسه چیه؟ TCNT که علی الدوام داره افزایش پیدا میکنه؛ به مقدار TOP میرسه و در نهایت ریست میشه .. اما اگه ما مقدار OCR رو انتخاب کنیم؛ به این معناست که از واحد تایمر خواستیم که عمل قیاس رو انجام بده و نتایج این قیاس رو روی پایه ی OC نمایش بده .. خب الان یک سوال پیش میاد و اون اینکه این مد که داره یه جورایی شبیه CTC میشه؟ امــا باید گفت که بحث کماکان ادامه داره .. این قیاس به طریق خاصی در خروجی اعمال میشه .. یعنی چی؟ یعنی پالس از سطح 0 شروع میشه (اگه inverted باشه..) و هنگامی که به مقدار OCR تنظیم شده توسط ما، رسید؛ یک Transition رخ میده که سطح رو به 1 تغییر وضعیت میده .. این ماندگاری در سطح 1 تا زمانی ادامه پیدا میکنه که TCNT به مقدار Top خودش برسه یا به عبارتی ریست بشه .. (البته در پالس بعد..)

                  پس متوجه شدیم که تنظیم OCR رابطه ی مستقیم داره با Duty Cycle و شمارش TCNT .. حالا یک مثال .. فرض کنید شما OCR رو تنظیم کردی با مقداری برابر 128 .. چه اتفاقی میوفته؟ Duty Cycle پالس شما میشه 50% .. حالا اینجا دو تا بحث پیش میاد .. یکی اینکه فرکانس PWM چطور به دست میاد و دیگری هم اینکه DC قضیه اش چیه؟ مورد دوم رو که در طول مطالب بالا گفتیم اما اگه بخوایم یه جمعبندی کلی مجدد داشته باشیم میتونیم بگیم که : د محاسبه ی DC مهم تنظیم OCR هست که در ادامه منتهی میشه به قیاس اون با TCNT .. اگه بخوایم براش رابطه ای متصور بشیم میتونیم بگیم که : مدت زمان ON بودن تقسیم بر مدت زمان ON بودن+ مدت زمان OFF بود در یک دوره ضربدر 100 .. اما در مورد کلاک PWM .. رابطه ای که خود ATMEL برای اون نوشته همه چیز رو بیان میکنه .. این رابطه از این قراره .. فرکانس PWM برابر است با فرکانس I/O بخش بر PRESCALER * 256 .. این فرمول البته برای مد FAST هست و برای مد PHC اون عدد 256 میشه 510 .. با خود CodeVision هم میشه برنامش رو نوشت .. امیدوارم مطالب براتون تکراری نبوده باشه .. موفق باشید ..
                  دوستان! مدتی کمتر به سایت میام ..

                  دیدگاه


                    #24
                    پاسخ : روش محاسبه تایمر و چنتا سوال دیگه؟

                    سلام
                    قبل از هر چیز عید شما مبارک
                    من این بحث رو دنبال میکردم منتهی از بابی خیلی شرمندم که نتونستم پاسخ بدم
                    باید عرض کنم شما خیلی خیلی لطف دارین (دشمنتون شرمنده)
                    اول ازتون ممنونم که اینقدر موشکافانه قضیه رو توضیح دادین
                    راستش من اصل قضیه رو فهمیدم چیه (مد نرمال .مد CTC . مد fast pwm . مد hp pwm ) ولی یه جاهایشو مشکل دارم
                    مثلا تو همین رابطه ای که فرمودید
                    فرکانس PWM برابر است با فرکانس I/O بخش بر PRESCALER * 256 .
                    ایا مقدار TCNTn یا TOP همون 256 هستش ؟ یا بستگی به انتخاب مد تو قسمت code vizard داره؟
                    منظورم اینه:
                    1 . PWM TOP = 0xFF
                    2 . PWM TOP = 0x1FF
                    3 . PWM TOP = 0x03FF
                    4 . PWM TOP = ICR1
                    5 . PWM TOP = OCR1A

                    حالا اگه همون TCNTn باشه تو انتخاب مد fast pwm کدومشونو انتخاب کنم ؟ اصلا چه فرقی با هم دارن(از نظر بیتی نه)؟
                    لطف میکنید یه توضیح کلی روشون بدید مخصوصا 4و5 ؟
                    اگه بخوام یه فرکانسی رو (مثلا 120Hz ) بسازم کدوم مد رو انتخاب کنم ؟ تو رابطش چی بزارم؟

                    البته ببخشید اینهمه سوال میکنم :redface:
                    ممنون میشم جواب بدین
                    ذکات علم یاد دادنه ....

                    دیدگاه


                      #25
                      پاسخ : روش محاسبه تایمر و چنتا سوال دیگه؟

                      راستش من اینجوری فرکانسه 128Hz رو بدست اوردم ببینید درسته؟
                      فقط نمیشه DC رو تنظیم کرد
                      http://persiandrive.net/559169
                      ذکات علم یاد دادنه ....

                      دیدگاه


                        #26
                        پاسخ : روش محاسبه تایمر و چنتا سوال دیگه؟

                        سلام ...................

                        ایا مقدار TCNTn یا TOP همون 256 هستش ؟ یا بستگی به انتخاب مد تو قسمت code vizard داره؟
                        این رجیستر و وضعیتی که داره حاکی از این مطلبه که شما از تایمر 16 بیتی استفاده میکنید (مثلا توی ATmega64 تایمر یک و سه 16 بیتی هستن..) حالا چط.ری در لایه ی رجیستری این اتفاق میوفته .. دو تا رجیستر 8 بیتی رو در کنار هم قرار میدن و یک واحد رجیستر 16 بیتی برای تایمر میسازن .. نوع کارشون هم اینطوریه که یکی H و دیگری هم L به اون معنا که یک بایت پر ارزش داریم و یک بایت کم ارزش .. در CPU هم هنگام استفاده از اینها از یه رجیستر موقت TEMP برای بارگذاری استفاده میشه .. پس طبیعتا دیگه حالت Top این تایمر 256 نیست بلکه مقدار اون FFFF هست ..

                        نکته ی دیگه اینکه تایمر یک و سه (در مگا 64 بر فرض..) در این حالت چند تا خروجی OC دارن که به واسطه ی لیبل گذاری A و B شناخته میشن .. مقادیری هم که میشه برای اون در هنگام تولید DC متصور شد، طبیعتا از صفر هست تا FFFF .. یعنی دستمون برای تولید DC متنوع، بیشتره ..

                        حالا اگه همون TCNTn باشه تو انتخاب مد fast pwm کدومشونو انتخاب کنم ؟ اصلا چه فرقی با هم دارن(از نظر بیتی نه)؟
                        همونطور که در بالا اشاره کردم از نظر بیتی قبلا با 8 بیت کار میکردیم و الان شده 16 بیت .. حالا اگه شما مد Fast رو انتخاب کنید یا PHC فرقی در محدودیت انتخاب نداره و تنها از نظر رزولوشن تولید Duty cycle دستتمون بازتر خواهد بود ..

                        در مورد کنترل Duty Cycle هم که فرمودین؛ باید از طریق تغییرات OCR اقدام کنید به این معنا که اگه اونرو در روند برنامه تغییر بدید؛ پالس خروجیتون هم از نظر عرض مفید؛ دچار تغییرات ساختاری میشه و این به اون معناست ولتاژ میانگین (موثر..) پالستون رو تغییر دادید .. موفق باشید ..
                        دوستان! مدتی کمتر به سایت میام ..

                        دیدگاه


                          #27
                          پاسخ : روش محاسبه تایمر و چنتا سوال دیگه؟



                          شما برنامه fastAVR را در اختیار دارید؟
                          راستش هنوز نصب نکردم . ایا فقط برای محاسبه تایمر از این برنامه استفاده می شه؟
                          [/quote]


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

                          دیدگاه


                            #28
                            پاسخ : روش محاسبه تایمر و چنتا سوال دیگه؟

                            [quote=majid.4206]
                            یه سوال دیگه میشه بگید این رابطه برای محاسبه فرکانس PWM درسته؟
                            ( Fpwm=Fclk/2 N*(top+1
                            بله درسته
                            ولی یه مشکلی که داره تو این رابطه نمیشه دیوتی سایکل رو تنظیم کرد(شایدم من بلد نیستم :angry
                            چون برای فرکانسای مختلف که می خوام درست کنم مقدار ( top ( OCR1A رو تغیر می دم .
                            اگه بخوام DC رو تغیر بدم کدوم رجیسترو باید کمو زیاد کنم (TCNT1 ؟؟) درسته؟



                            شما برای اینکه بخواهید در طول انجام تایمر مقدار را مدام تغییر بدهید
                            باید از مد CTC استفاده کنید.
                            که مقدار TOP آن مقداری هست که شما تعیین میکنید
                            که مقداری را که میخواهید را در OCR قرار میدهید که در هنگام تطبیق مقدار OCR با TCNT تایمر مقدار TOP را مشخص میکنید
                            در این صورت Duty Cycle تغییر کرده

                            دیدگاه


                              #29
                              پاسخ : روش محاسبه تایمر و چنتا سوال دیگه؟

                              با سپاس از تمامی دوستان
                              بالا خره به یه نتایجی رسیدم تونستم با fast pwm فرکانسای مختلف وDC مختلف بسازم از تمامی دوستان که به من کمک کردن
                              در فهمیدن این مطلب ممنونم

                              ذکات علم یاد دادنه ....

                              دیدگاه


                                #30
                                پاسخ : روش محاسبه تایمر و چنتا سوال دیگه؟

                                سلام خدمت دوستان
                                یهه سوال در مورد رجیستر TCNT داشتم (تایمر 1)
                                فرکانس میکرو 8MHz
                                کلاک تایمر = تقسیم بر 8 ( 1KHz )
                                اگه هربار که تایمر ovf شد، بیایم و TCNT رو مساوی 1000- بذاریم، چجوری زمان های یک میلی ثانیه ای تولید می کنه؟
                                چه اتفاقی می افته؟ چجوری اضافه میشه؟ هر چند وقت یکبار اضافه می شه؟ زمان های دیگه رو بخوام درست کنم چجوری میشه درست کرد؟ مثلا با تایمر 0 بخوام یه میلی ثانیه بسازم چجوریه؟ اگه فرکانس میکرو رو 16 MHz کنم چه فرمولی می خواد؟
                                ببخشید سوالام زیاد شد. خیلی ممنون بابت وقت گذاشتنتون.
                                همیشه کامل توضیح بدهیم تا جواب کامل بگیریم.
                                لطفا برای تشکر روی دکمه تشکر بزنید و بخاطر این پست نزنید که تایپیک شلوغ نشود
                                تایپیک های من:
                                حل تمام مشکلات atmega128a (eca.ir)
                                آموزش کار با سایت (eca.ir)

                                دیدگاه

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