اطلاعیه

Collapse
No announcement yet.

محاسبه OCR در تایمر

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

    محاسبه OCR در تایمر

    سلام

    هرچی سرچ کردم در این مورد چیزی پیدا نکردم!

    واسه تولید یه فرکانس خاص، چطوری باید مقدار OCR رو بدست بیاریم؟!

    یه جا خوندم که نوشته بود از این فرمول: OCR0=( (CRYSTAL/fer)/2 ) - 1

    مثلا برای فرکانس 40 کیلو هرتز با کریستال 8 مگ میشه 99 دسیمال. ولی برای فرکانس 5 کیلو هرتز میشه: 799

    مگه نباید مقدار OCR کمتر از 256 باشه؟! اگه اینطوریه پس این فرمول جواب نمیده!

    از چه راهی محاسبه کنم؟!

    ممنونم
    http://ceworld.ir/images/ads/dornablogcom_ads.gif

    #2
    پاسخ : محاسبه OCR در تایمر

    من متوجه منظورت نمیشم!! مگه OCR فرکانس رو مشخص می کنه؟؟!!
    چیکار میخوای بکنی؟؟
    https://www.linkedin.com/in/mohammadhosseini69

    http://zakhar.blog.ir

    دیدگاه


      #3
      پاسخ : محاسبه OCR در تایمر

      فرض کن که کریستالت 8 مگ هست و میخوای رو پایه OC0 میکرو یه فرکانس 5 کیلوهرتز درست کنی. خوب باید OCR0 رو یه مقداری بهش بدی واسه این کار!

      در حالت CTC این مقدار چطوری محاسبه میشه؟! :sad:

      http://ceworld.ir/images/ads/dornablogcom_ads.gif

      دیدگاه


        #4
        پاسخ : محاسبه OCR در تایمر

        بعبارت ساده تر: میخواهیم با کریتال 8 مگ، فرکانس 5 کیلوهرتز یا هر فرکانس دیگه ای رو پایه OC0 ایجاد کنیم. در مد CTC

        چه کنیم؟!
        http://ceworld.ir/images/ads/dornablogcom_ads.gif

        دیدگاه


          #5
          پاسخ : محاسبه OCR در تایمر

          آهان! مد CTC
          pwm تو ذهنم بود! داشتم فکر می کردم که OCR پهنای پالس رو تغییر میده!

          این فرمولی که گفتی اشتباه! چون تقسیم فرکانسی تایمر رو در نظر نگرفته! یعنی تایمر با چه کسری از فرکانس کلاک میشمره؟؟
          تو فرمولت باید تقسیم به N یعنی تقسیم فرکاتسی منبع فرکانس تایمر رو اضافه کنی. (قبل از منهای 1). n هم که میدونی میتونه 1 ، 8 ، 64 ، 256 ، 1024 باشه.

          در اینصورت اگه OCR بیشتر از 255 شد باید تقسیم فرکانسی رو تغییر بدی. اگه بازم نشد باید کریستال رو تغییر بدی

          موفق باشی
          https://www.linkedin.com/in/mohammadhosseini69

          http://zakhar.blog.ir

          دیدگاه


            #6
            پاسخ : محاسبه OCR در تایمر

            ضمنا بیت های CS00 و CS01 و CS02 از رجیستر TCCR0 ، منبع فرکانس تایمر صفر رو مشخص میکنه.
            اینم حالت های مختلفش :
            https://www.linkedin.com/in/mohammadhosseini69

            http://zakhar.blog.ir

            دیدگاه


              #7
              پاسخ : محاسبه OCR در تایمر

              نوشته اصلی توسط محمد حسینی
              ضمنا بیت های CS00 و CS01 و CS02 از رجیستر TCCR0 ، منبع فرکانس تایمر رو مشخص میکنه.
              اینم حالت های مختلفش :
              آره عزیز اینو میدونم!

              ولی سر فرمولاش گیر کردم!

              میشه لطف کنی و فرمول بدست آورن عدد OCR0 رو از رو فرکانس و فرمول بدست آوردن فرکانس OCR0 رو از رو عددش بنویسی واسم؟! :redface:

              گفتی که اگه عدد بزرگتر از 255 بود، یا فرکانس تغییر کنه یا کلاک تایمر! خوب وقتیکه برنامه در حال اجراست، چطوری میشه بصورت داینامیک این کار رو کرد؟! یعنی اصلا اصولی هست؟!
              http://ceworld.ir/images/ads/dornablogcom_ads.gif

              دیدگاه


                #8
                پاسخ : محاسبه OCR در تایمر

                نوشته اصلی توسط behnam_kh2002
                آره عزیز اینو میدونم!
                شرمنده! من چارکرتم هستم!

                نوشته اصلی توسط behnam_kh2002
                میشه لطف کنی و فرمول بدست آورن عدد OCR0 رو از رو فرکانس و فرمول بدست آوردن فرکانس OCR0 رو از رو عددش بنویسی واسم؟! :redface:
                فرمول بدست آوردن فرکانس : (این فرمول رو تو کتاب ره افروز نوشته)

                f=(clk)/(2.N.(1+OCR)


                فرمول OCR هم از رو همین بدست میاد دیگه...

                نوشته اصلی توسط behnam_kh2002
                گفتی که اگه عدد بزرگتر از 255 بود، یا فرکانس تغییر کنه یا کلاک تایمر! خوب وقتیکه برنامه در حال اجراست، چطوری میشه بصورت داینامیک این کار رو کرد؟! یعنی اصلا اصولی هست؟!
                مگه می خوای فرکانس رو تو برنامه تغییر بدی؟
                خوب آره! تا موقعی که OCR درست بدست میاد که مشکلی نیست. اگه نه تقسیم فرکانسی رو تغییر میدی. چرا اصولی نباشه! ولی خوب کلاک رو نیمشه... از همون اول باید یه طوری انتخابش کنی که همه رنج فرکانست رو بتونی با اون بدست بیاری
                https://www.linkedin.com/in/mohammadhosseini69

                http://zakhar.blog.ir

                دیدگاه


                  #9
                  پاسخ : پاسخ : محاسبه OCR در تایمر

                  نوشته اصلی توسط محمد حسینی
                  شرمنده! من چارکرتم هستم!
                  دشمنت شرمنده... بزرگواری...

                  نوشته اصلی توسط محمد حسینی
                  فرمول بدست آوردن فرکانس : (این فرمول رو تو کتاب ره افروز نوشته)

                  f=(clk)/(2.N.(1+OCR)


                  فرمول OCR هم از رو همین بدست میاد دیگه...
                  درسته و فرمول بدست آوردن عدد OCR میشه:


                  OCR0=( ( (CRYSTAL / fer) / N ) / 2 ) - 1


                  واسه فرکانس 40 کیلوهرتز عدد OCR شد 11.5 با فرکانس 8 مگ و prescale 8

                  ایا عدد اعشاری هم قابل قبول هست؟! یا باید روند بشه؟!

                  نوشته اصلی توسط محمد حسینی
                  مگه می خوای فرکانس رو تو برنامه تغییر بدی؟
                  خوب آره! تا موقعی که OCR درست بدست میاد که مشکلی نیست. اگه نه تقسیم فرکانسی رو تغییر میدی. چرا اصولی نباشه! ولی خوب کلاک رو نیمشه... از همون اول باید یه طوری انتخابش کنی که همه رنج فرکانست رو بتونی با اون بدست بیاری
                  فرکانس که تغییری نمیکنه تو برنامه! ولی میخوام طوری باشه که راحت بتونم هر فرکانسی رو که خواستم تو برنامه بدست بیارم! یعنی موندم چطوری باشه که از همون اول همه فرکانس هام درست دربیاد؟!

                  مثلا الان با کریستال 8 مگ و prescaler 8، نمیتونم فرکانس 1 کیلوهرتز درست کنم! چون عدد OCR بزرگتر از 255 هست! :angry:
                  http://ceworld.ir/images/ads/dornablogcom_ads.gif

                  دیدگاه


                    #10
                    پاسخ : محاسبه OCR در تایمر

                    نه فکر نمی کنم عدد اعشاری بشه.
                    الان حسابی خوابم گرفته! نمی فهمم دیگه مشکل کجاست! تا فردا...
                    https://www.linkedin.com/in/mohammadhosseini69

                    http://zakhar.blog.ir

                    دیدگاه


                      #11
                      پاسخ : محاسبه OCR در تایمر

                      نوشته اصلی توسط محمد حسینی
                      نه فکر نمی کنم عدد اعشاری بشه.
                      الان حسابی خوابم گرفته! نمی فهمم دیگه مشکل کجاست! تا فردا...
                      فرکانس سیستم 8 مگ و prescaler = 8



                      OCR0=( ( (CRYSTAL / fer) / N ) / 2 ) - 1 ---> OCR0=( ( (8000000 / 40000) / 8 ) / 2 ) - 1 = 11.5

                      http://ceworld.ir/images/ads/dornablogcom_ads.gif

                      دیدگاه


                        #12
                        پاسخ : محاسبه OCR در تایمر

                        دوستان کسی نظری نداره؟!!!
                        http://ceworld.ir/images/ads/dornablogcom_ads.gif

                        دیدگاه


                          #13
                          پاسخ : محاسبه OCR در تایمر

                          در مد CTC فرکانس خروجی طبق گفته datasheet از رایطه :

                          که Fclk_IO همان Fsys می باشد.
                          بگذارعشق خاصیت تو باشد نه رابطه خاص تو باکسی
                          موفقیت پیش رفتن است نه به نقطه ی پایان رسیدن
                          نلسون ماندلا

                          دیدگاه


                            #14
                            پاسخ : محاسبه OCR در تایمر

                            بله محمد جان، این درسته! ولی الان موندم که آیا در مد CTC، رجیستر OCR0 میتونه یه مقدار اعشاری بگیره؟! چیزی که تو 2-3 ارسال قبل هم گفتم!
                            http://ceworld.ir/images/ads/dornablogcom_ads.gif

                            دیدگاه


                              #15
                              پاسخ : محاسبه OCR در تایمر

                              نوشته اصلی توسط behnam_kh2002
                              بله محمد جان، این درسته! ولی الان موندم که آیا در مد CTC، رجیستر OCR0 میتونه یه مقدار اعشاری بگیره؟! چیزی که تو 2-3 ارسال قبل هم گفتم!
                              نه خوب نمی تونه بگیره. چون یه دلیلش اینه که این رجیستر باید با TCNT مقایسه یشه و مقدار اون هم که فقط صحیح می باشد. شما باید به جای 11.5 ، 12 یا 11 قرار بدی.
                              بگذارعشق خاصیت تو باشد نه رابطه خاص تو باکسی
                              موفقیت پیش رفتن است نه به نقطه ی پایان رسیدن
                              نلسون ماندلا

                              دیدگاه

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