اطلاعیه

Collapse
No announcement yet.

تست سرعت پینها (حل شد)

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

    تست سرعت پینها (حل شد)

    با سلام خدمت دوستان و اساتید گرامی،

    . یه هدربورد STM32F103RET6 موجود در فروشگاه سایت رو گرفتم و برای تست سرعت یه برنامه نوشتم که یه پین رو on و بلافاصله off کنه بعد از این کار فرکانس اون پین رو میگیرم حدود 342khz و هر کاری میکنم بالاتر از اون نمیره :angry: انتظار داشتم حداقل سرعتش تا یک مگا هرتز برسه
    حالا سوال اینجاست که برنامه ای که من نوشتم اشتباهه یا سرعت پینها همینقدره؟ کسی تا حالا سرعت پینها رو تست کرده ؟ احتمالش هست به خاطر استفاده از peripheral میکرو سرعت پایین بیاد یعنی برای استفاده حداکثر ار سرعت مجبور باشیم اسمبلی بنویسیم؟
    کد برنامه من اینه:(کامپایلر هم gcc و ide هم eclipse هستش)
    کد:
    // This file is part of the GNU ARM Eclipse distribution.
    // Copyright (c) 2014 Liviu Ionescu.
    //
    
    // ----------------------------------------------------------------------------
    
    #include <stdio.h>
    #include "diag/Trace.h"
    #include <stm32f10x_conf.h>
    #include "stm32f10x_gpio.h"
    #pragma GCC diagnostic push
    #pragma GCC diagnostic ignored "-Wunused-parameter"
    #pragma GCC diagnostic ignored "-Wmissing-declarations"
    #pragma GCC diagnostic ignored "-Wreturn-type"
    
    
    int main(int argc, char* argv[])
    {
    
      uint8_t i;
      GPIO_InitTypeDef GPIO_Conf;
    
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    
      GPIO_Conf.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12;
      GPIO_Conf.GPIO_Mode = GPIO_Mode_Out_PP;
      GPIO_Conf.GPIO_Speed = GPIO_Speed_50MHz;
      GPIO_Init(GPIOB, &GPIO_Conf);
    
    
    
    
     // Infinite loop
     while (1)
      {
    
    
    	
    	 GPIO_SetBits(GPIOB, GPIO_Pin_0);
    
    	 GPIO_ResetBits(GPIOB, GPIO_Pin_0)
    
      }
     return 0;
    }
    
    #pragma GCC diagnostic pop
    ممنون بابت جواب دادن به سوال
    گل سرخ گل سرخ است و خار , خار . نه خار بد است و نه گل سرخ خوب . اگر انسان از روي زمين محو شود , گلها آنجا خواهند بود و خارها نيز آنجا . اما ديگر كسي نيست كه بگويد گلهاي سرخ خوبند و خارها بد !

    #2
    پاسخ : تست سرعت پینها

    سلام
    من تست کردم البته با فعال کردن plll و سرعت 72mhz
    نهایت سرعت به 4.3mhz رسید
    محک

    دیدگاه


      #3
      پاسخ : تست سرعت پینها

      نوشته اصلی توسط mahank
      سلام
      من تست کردم البته با فعال کردن plll و سرعت 72mhz
      نهایت سرعت به 4.3mhz رسید
      سلام ممنون که جواب دادید سرعت میکرو من هم 72 مگ هستش به نظر شما مشکل از چیه؟
      گل سرخ گل سرخ است و خار , خار . نه خار بد است و نه گل سرخ خوب . اگر انسان از روي زمين محو شود , گلها آنجا خواهند بود و خارها نيز آنجا . اما ديگر كسي نيست كه بگويد گلهاي سرخ خوبند و خارها بد !

      دیدگاه


        #4
        پاسخ : تست سرعت پینها

        معادل اسمبلیش رو ببین تو دیباگر
        ببین چندتا دستور هست
        اونو بهینه کن
        هميشه به ياد خدا باش !

        دیدگاه


          #5
          پاسخ : تست سرعت پینها

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

          دیدگاه


            #6
            پاسخ : تست سرعت پینها

            نوشته اصلی توسط DDR3
            معادل اسمبلیش رو ببین تو دیباگر
            ببین چندتا دستور هست
            اونو بهینه کن
            +1
            دقیقا مشکل همینه.
            اینی که این دوستمون نوشته زیاد میشه.

            شما mojtaba.asgari
            بهتره برنامه تون این باشه:


            [code=c]

            #include <stdio.h>
            #include "diag/Trace.h"
            #include <stm32f10x_conf.h>
            #include "stm32f10x_gpio.h"
            #pragma GCC diagnostic push
            #pragma GCC diagnostic ignored "-Wunused-parameter"
            #pragma GCC diagnostic ignored "-Wmissing-declarations"
            #pragma GCC diagnostic ignored "-Wreturn-type"


            int main(int argc, char* argv[])
            {

            uint8_t i;
            GPIO_InitTypeDef GPIO_Conf;

            RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

            GPIO_Conf.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12;
            GPIO_Conf.GPIO_Mode = GPIO_Mode_Out_PP;
            GPIO_Conf.GPIO_Speed = GPIO_Speed_50MHz;
            GPIO_Init(GPIOB, &GPIO_Conf);




            // Infinite loop
            while (1)
            {



            GPIOB->ODR ^= GPIO_Pin_0;

            }
            return 0;
            }

            #pragma GCC diagnostic pop[/code]

            البته سرعت GPIOها زیاد نیست. واسه چی می خوای تستش کنی؟
            مهم نیست که.
            برنامه رو تست کن و خبرمون بده که راهش انداختی و برات کار میکنه.

            دیدگاه


              #7
              پاسخ : تست سرعت پینها

              ممنون جناب روح الامین
              سرعت پینها برام مهمه میخواستم توی کار های آینده ( ارسال پالس به کنترلر میکرو استپ ) استفاده کنم حس میکنم سرعت برنامه ام خیلی کمه و زیادی از سخت افزار جداست و هر دستور چند ده سیکل طول میکشه :cry2:. از eclipse استفاده میکنم اون دستوری که تغییر دادید رو نداره فکر کنم برم سمت keil بهتر باشه نظر شما چیه؟
              شما کدوم کامپایلر رو پیشنهاد میکنید که کدش به سخت افزار نزدیکتر باشه یعنی با خود ریجستر ها کار کنه؟
              اسمبلی چی ؟ ابزار توسعه به زبان اسمبلی میشناسید؟
              ببخشید من زیاد سوال میپرسم
              گل سرخ گل سرخ است و خار , خار . نه خار بد است و نه گل سرخ خوب . اگر انسان از روي زمين محو شود , گلها آنجا خواهند بود و خارها نيز آنجا . اما ديگر كسي نيست كه بگويد گلهاي سرخ خوبند و خارها بد !

              دیدگاه


                #8
                پاسخ : تست سرعت پینها

                نوشته اصلی توسط mojtaba.asgari
                ممنون جناب روح الامین
                سرعت پینها برام مهمه میخواستم توی کار های آینده ( ارسال پالس به کنترلر میکرو استپ ) استفاده کنم حس میکنم سرعت برنامه ام خیلی کمه و زیادی از سخت افزار جداست و هر دستور چند ده سیکل طول میکشه :cry2:. آرم رو تازه شروع کردم و از eclipse استفاده میکنم اون دستوری که تغییر دادید رو نداره فکر کنم برم سمت keil بهتر باشه نظر شما چیه؟
                شما کدوم کامپایلر رو پیشنهاد میکنید که کدش به سخت افزار نزدیکتر باشه یعنی با خود ریجستر ها کار کنه؟
                اسمبلی چی ؟ ابزار توسعه به زبان اسمبلی میشناسید؟
                ببخشید من زیاد سوال میپرسم
                این روش اصولی واسه کنترل موتور نیست. بهتره در مورد تایمرهای پیشرفته و عالی میکروت مطالعه کنی.
                حس نکن، برنامه ات خیلی بزرگه. یعنی چی دستور رو نداره؟ میشه بگی پس چطور به ریجسترها مقدار میدی؟ شما تست کردی؟ ارور داد؟ روی کدوم بخشش ارور داد؟ کدومو نداشت؟
                Keil خیلی خوبه.
                سوالتون بی معنیه. یعنی چی؟
                با همون کامپایلرت هم واسه اسمبلی می تونی کد بنویسی.

                دیدگاه


                  #9
                  پاسخ : تست سرعت پینها

                  این دستور رو نداره :
                  کد:
                   GPIOB->ODR ^= GPIO_Pin_0;
                  برنامه خیلی بزرگه اول که بدون اضافه کردن هیچ کدی کامپایل میکردم سایز فایل هگز ۴ کیلو بایت بود بعد که دستور روشن خاموش کردن پین رو اضافه کردم شد ۱۳ کیلوبایت :surprised:
                  قبلا با ۱۵ کیلوبایت کد PIC ال سی دی گرافیکی تک رنگ و پرینتر سریال و مموری کارت رو همزمان راه انداخته بودم حالا اگه این برنامه سنگین نیست این همه کد چیه؟

                  اضافه شده در تاریخ :
                  بلاخره تونستم 3.7 مگ کلاک بگیرم البته با اسمبلی حجم کد هم 2 کیلو شد

                  اضافه شده در تاریخ :
                  نوشته اصلی توسط Rohalamin
                  این روش اصولی واسه کنترل موتور نیست. بهتره در مورد تایمرهای پیشرفته و عالی میکروت مطالعه کنی.
                  حس نکن، برنامه ات خیلی بزرگه. یعنی چی دستور رو نداره؟ میشه بگی پس چطور به ریجسترها مقدار میدی؟ شما تست کردی؟ ارور داد؟ روی کدوم بخشش ارور داد؟ کدومو نداشت؟
                  Keil خیلی خوبه.
                  سوالتون بی معنیه. یعنی چی؟
                  با همون کامپایلرت هم واسه اسمبلی می تونی کد بنویسی.
                  فکر کنم شما اصلا متوجه موضوع نشدید
                  گل سرخ گل سرخ است و خار , خار . نه خار بد است و نه گل سرخ خوب . اگر انسان از روي زمين محو شود , گلها آنجا خواهند بود و خارها نيز آنجا . اما ديگر كسي نيست كه بگويد گلهاي سرخ خوبند و خارها بد !

                  دیدگاه


                    #10
                    پاسخ : تست سرعت پینها

                    نوشته اصلی توسط mojtaba.asgari
                    ...
                    فکر کنم شما اصلا متوجه موضوع نشدید
                    کدوم؟

                    دیدگاه


                      #11
                      پاسخ : تست سرعت پینها (حل شد)

                      eclipse رو نذاشتن که باهاش برای ARM برنامه بنویسین.
                      در شروع کار از توابع CMSIS استفاده نکنین تنبل می شین.
                      اون دستور تو KEIL هست.

                      دیدگاه

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