اطلاعیه

Collapse
No announcement yet.

کارایی اجرای دستورات

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

    کارایی اجرای دستورات

    سلام
    [s]بعد از اینکه مشکل من در این تاپیک http://www.eca.ir/forum2/index.php?topic=95438.0 حل نشد. من تصمیم گرفتم به همان کلاک 52 مگاهرتز کفایت کنم( تو 56 مگاهرتز پایداری نداشت) . فقط امیدوارم Adc و dac مشکل پرفورمنس نداشته باشند. [/s](مشکل کلاک حل شد.)اما موضوعی که نظرم را جلب کرد اینه که در همان برنامه چشمک زن تاپیک بالا با فرکانس 52 مگاهرتز خروجی 2.16666 مگاهرتز داشتم یعنی هر بار اجرای حلقه 12 سیکل طول می کشد. به نظر شما این زیاد نیست؟کامپایلر هم iar هست و بهینه سازی ماکزیمم سرعت هست.
    کد:
     while(1){
      if(flg=='t'){
      
       GPIOC_ODR_bit.ODR1=0;
       flg='f';
      }
      else{
       GPIOC_ODR_bit.ODR1=1;
       flg='t';
      }
     }

    #2
    پاسخ : کارایی اجرای دستورات

    با بررسی بیشتر متوجه شدم کلاک پورت ها را نصف کلاک سیستم گذاشته بودم با با تصحیح آن سیکل مورد نیاز از 12 به 9 کاهش می یابد.

    دیدگاه


      #3
      پاسخ :عملکرد تایمر 6

      برای یادگیری تایمر از تایمر 6 که عملکرد ساده ای دارد شروع کردم. برنامه ساده ای نوشتم که البته از اینتراپت استفاده نکردم (هنوز نمی دونم تو IAR چطور برای stm32 روتین وقفه بنویسم.)
      کلاک هسته برابر 72 مگاهرتز
      کلاک تایمر برابر 36 مگاهرتز
      کد:
       RCC_CFGR_bit.PPRE1=4;
      
       RCC_APB1ENR_bit.TIM6EN=1;
       TIM6_CR1_bit.ARPE=1;
       TIM6_CR1_bit.UDIS=0;
       TIM6_CR1_bit.URS=0;
       TIM6_CR1_bit.OPM=0;
       TIM6_DIER=0;
       TIM6_PSC=500;
       TIM6_ARR=500;
       TIM6_CR1_bit.CEN=1;
       flg='f';
       while(1){
        if(TIM6_SR==1){
         TIM6_SR=0;
         if(flg=='t')flg='f';
         else flg='t';
        }
        if(flg=='t'){
        
         GPIOC_ODR=1;
        }
        else{
         GPIOC_ODR=2;
        }
       }
      نمی دانم چرا تایمر بعد از چند ثانیه از کار می افتد.

      دیدگاه


        #4
        پاسخ : عملکرد تایمر 6

        نکته جالب اینه که بعد از تغییر تو تنظیمات اولیه و پروگرم کردن و همچنین بعد از اینکه مدت طولانی (درحد چند دقیقه ) تغذیه قطع هست ببیشترین زمان کارکرد را داره (بیشتر از یک دقیقه) ولی بعد از اولین توقف وقتی ریست می کنم در حد دو یا سه ثانیه بیشتر کار نمی کنه. :eek: حتی وقتی چند ثانیه تغذیه را قطع می کنم. :eek:

        دیدگاه


          #5
          پاسخ :عملکرد تایمر 6

          نکته جالبتر اینکه وقتی به ریست کردن علاقه بیشتری نشون میدم .خودبخود سویچ می کنه رو کلاک داخلی و pll را بیخیال می شه. :eek: چقدر هوشمنده این میکرو :biggrin:

          دیدگاه


            #6
            پاسخ : کارایی تایمر8

            فعلا مشکل از کار افتادن تایمر حل شده.
            ایراد کار از آن جایی بوده که من قبلا کریستال را عوض کرده بودم و 24مگاهرتز گذاشته بودم. کریستال را عوض کردم و 8 مگاهرتز گذاشتم. الان 10 دقیقه ای هست میکرو داره با کلاک 72 مگاهرتز کار می کنه. قدم بعدی استفاده از اینتراپت هستش(بعد از یکم اورکلاک بازی).

            دیدگاه


              #7
              پاسخ : اورکلاک

              میکرو رو تا فرکانس 128 مگاهرتز اورکلاک کردم ، برنامه همان برنامه قبلی.
              دمای هوا 29 درجه
              رطوبت هوا: خیلی درصد :mrgreen:
              دمای بدنه میکرو:38 درجه
              فعلا که خوب داره کار می کنه.

              دیدگاه

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