اطلاعیه

Collapse
No announcement yet.

مشکل با سرعت آرم

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

    مشکل با سرعت آرم

    با سلام دوستان من یه مشکل عجیبی برخوردم لطفا یکی راهنمایی کند خیلی ممنون. مشکل اینه که:
    من سرعت هسته آرم AT91sam7x256 را تنظیم کردم طبق دیتا شیت بعد در خروجی که بیشتر از چند کیلوهرتز نمیتونم خروجی بگیرم گذشته از این سرعت هسته هم از 10MHz بالاتر نمیره .
    این مطالب رو هم اینطوری فهمیدم طبق دیتا شیت
    AT91C_BASE_CKGR->CKGR_MOR = 0xF01;
    AT91C_BASE_CKGR->CKGR_PLLR = 0x2703FF0;
    AT91C_BASE_PMC->PMC_MCKR = 0x3;
    AT91C_BASE_PMC->PMC_SCER = 0x1;
    با این دستور باید 48MHz سرعت داشته باشم بالاترین سرعتی هم که تست کردم

    AT91C_BASE_CKGR->CKGR_PLLR = 0x51E3FF0; که باید 100MHz سرعت بده بیشتر از اینم هنگ میکنه حالا برای یه تابع ساده مثل زیر
    do{
    j++;
    } while(j<dlyus);
    ;
    که هر بار مرورش باید یه سیکل یا نهایتا دو سیکل طول بکشد باید برای 0.1 ثانیه حد اقل باید حدود 2,500,000 تکرار داشته باشم در صورتی که فقط با حدود 190000 بار تکرار تقریبا به این عدد میرسم که تقریبا 12 تا 40 برابر کمتره و اگه سر انگشتی حساب کتاب کنیم 48/12=4 یعنی سیستم باسرعت 4MHz داره کار میکنه خیلی ور رفتم دیگه هنگ کردم لطفا یکی راهنمایی کند. در ضمن روی پورت خروجی هم در حد چند کیلو هرتز که سیگنال ایجاد میکنی دیگه کار نمیکند . اونم خیلی ساده با برنامه زیر
    *AT91C_PIOA_SODR = 0x00000137; // PA.0 to be set
    delay_us(100000);
    *AT91C_PIOA_CODR = 0x00000137; // PA.0 to be cleared
    delay_us(100000);
    انجام میدم هیچ پیچیدگی هم در کار نیست از 7 یا 8 کیلو هرتز که بالا تر میره سرعت سیگنال پایه پورت خروجی PA0 هنگ میکنه دیگه سیگنال نمیده برای تست پایه هم از یه فرکانس متر تا 100 کیلوهرتزی استفاده کردم .
    من جایی را اشتباه رفتم یا آرم همینه خواهشا یکی راهنمایی کند
    جدیدترین ویرایش توسط hheidari2001; ۰۱:۳۲ ۱۳۹۷/۰۴/۰۴.

    #2
    پاسخ : مشکل با سرعت آرم

    سلام دوست عزیز
    کد زیر که به زبان c نوشته شده رو ملاحظه کنید
    کد:
    [FONT=Yekan]do [/FONT]{
    a++;
    [FONT=Yekan]}while(a<b);[/FONT]
    بافرض این که متغیر a و b از نوع char هستند کد اسمبلی کد بالا به این صورت در میاد
    کد:
    [FONT=Yekan]    [/FONT][FONT=Yekan]SBIW R28,2
    [/FONT]_0xA:
        LDD  R30,Y+1
        SUBI R30,-LOW(1)
        STD  Y+1,R30
         LD   R30,Y
        LDD  R26,Y+1
        CP   R26,R30
    [FONT=Yekan]    [/FONT][FONT=Yekan]BRLO _0xA[/FONT]
    کد اسمبلی بسیار به زبان ماشین ( زبان ماشین ساده ترین کدبرنامه نویسی هست و در واقع تمامی کد هایی که نوشته میشه در نهایت به کد ماشین ترجمه میشه و
    روی میکرو ریخته میشه ) نزدیک هست یعنی تقریبا میشه گفت به ازای هر دستور اسمبلی یک دستور ماشین داریم .
    بعضی مواقع برای بعضی دستور ها هر کد اسمبلی معادل 2 و شاید 3 تا کد ماشین باشه

    حالا شما بیا بشمار که کد زبان c که نوشتید تقریبا چند تا دستور ماشین رو تشکیل میده
    کدهایی که تو حلقه اجرا میشن حدود 7 تا دستور اسمبلی هست که میشه گفت برای اجرای یک دور حلقه while تقریبا 7 کلاک لازم هست نه یک یا دو سیکل . . .
    کدها براساس قسمت کد اسمبلی کدویژن استخراج شده که خودتون هم میتونید تست کنید

    موفق باشید
    آرزوی سرافرازی برای ایران عزیز . . .


    دیدگاه


      #3
      پاسخ : مشکل با سرعت آرم

      خیلی ممنون از راهنمایی
      البته اختلاف بیشتر از این حرفهاست با توجیه شما 7 به دو داریم که تقریبا بازهم حدود 3 تا هفت برابر کمتره خوب با توجه به صحبت شما که کاملا هم منطقیه میشه حدس زد که مابقی افت زمان هم که کم نیست برای فعال و غیر فعال کردن پورت باشه سوال دومم پس لطفا در این مورد هم راهنمایی بفرمایید سرعت خروجی پورتهای آرم چقدر است .
      سه مورد مشکل وجود دارد اگر لطف کنید پاشخ بدید ممنون میشم.
      1- من RTX رو فعال کردم و با استفاده از سیمولاتور آن تست کردم زمان بندی که کیل در سیمولیشن میده کلا متفاوته میشه علت را توضیح بدهید.
      2- مثلا همین AT91sam7x256 با jtag با سرعت 4MHz لینک میشه این سرعت روی پورته دیگه پس چرا اینقد سرعت تست من کمه؟
      3- یه جا خوندم که پینهای آرم رو هم میشه توی چهار وضعیت open drain-bi directional-pushpull-input تنظیم کرد ولی هرچی لایبراری و دیتا شیت رو نگاه کردم نتونستم پیدا کنم میشه توی این مورد هم راهنمایی کنید
      متشکرم

      دیدگاه


        #4
        پاسخ : مشکل با سرعت آرم

        نوشته اصلی توسط hheidari2001 نمایش پست ها
        خیلی ممنون از راهنمایی
        البته اختلاف بیشتر از این حرفهاست با توجیه شما 7 به دو داریم که تقریبا بازهم حدود 3 تا هفت برابر کمتره خوب با توجه به صحبت شما که کاملا هم منطقیه میشه حدس زد که مابقی افت زمان هم که کم نیست برای فعال و غیر فعال کردن پورت باشه سوال دومم پس لطفا در این مورد هم راهنمایی بفرمایید سرعت خروجی پورتهای آرم چقدر است .
        سه مورد مشکل وجود دارد اگر لطف کنید پاشخ بدید ممنون میشم.
        1- من RTX رو فعال کردم و با استفاده از سیمولاتور آن تست کردم زمان بندی که کیل در سیمولیشن میده کلا متفاوته میشه علت را توضیح بدهید.
        2- مثلا همین AT91sam7x256 با jtag با سرعت 4MHz لینک میشه این سرعت روی پورته دیگه پس چرا اینقد سرعت تست من کمه؟
        3- یه جا خوندم که پینهای آرم رو هم میشه توی چهار وضعیت open drain-bi directional-pushpull-input تنظیم کرد ولی هرچی لایبراری و دیتا شیت رو نگاه کردم نتونستم پیدا کنم میشه توی این مورد هم راهنمایی کنید
        متشکرم
        دوست عزیز حقیقتش من خودم چند روز هست که کار رو با آرم شروع کردم و با یه هدر برد LPC1768 دارم کار میکنم ببینیم چی میشه . . .
        اون عدد 7 که گفتم یه حدود بود ممکنه این عدد به 10 افزایش پیدا کنه شما ببین اون دستورات اسمبلی هر کدوم چند تا دستور ماشین میشه . . .
        1_من با کیل ورژن 4 دارم کار میکنم و از RTX اطلاع ندارم . . .
        2_سرعت پورت ها به تنظیم فرکانس کاری خود GPIO مرتبط هست . تو تنظیم تاخیر ها دقت کنید شاید یه جایی برداشت شما از مسئله اشتباه باشه
        3_اگه تو توابع نیست برید سراغ کار با رجیستر ها و البته پیگیر باشید که باتوابع چطور امکان پذیر هست
        مثلا تو LPC1768 رجیستر PINMODE تنظیم میکنه که پایه پول آپ باشه یا . . . که در کل شامل 4 حالت میشه .

        اطلاعاتم متاسفانه در همین حد بود
        امیدوارم که تونسته باشم کمکی کرده باشم

        موفق باشید
        آرزوی سرافرازی برای ایران عزیز . . .


        دیدگاه


          #5
          پاسخ : مشکل با سرعت آرم

          متشکرم جناب مجیدی
          ببینید مشکل اصلی من از اینجا شروع شده که یک رشته عدد با حجم زیاد رو میخام پردازش کنم سرعت پردازش بالا احتیاج دارم با میکرو خانواده avr مگا 8 و 16 و32 و at89c4051 , at ,89s51 و pic 16f84, 16f877 تست گرفتم نمیتونن توی زمان لازم برام محاسبه کنن ( البته میتونم از نظر تئوری مثلا کارو تقسیم کنم با چهار تا مگا 16 و پروسس رو بگیرم) بعد اومدم سراغ آرم با آرم خیلی کار نکرده بودم قبلا در حد چشمک زن و adc ... بعد خیلی ناامیدم کرده
          انگاری برم سراغ همون avr به چهار تا فکر کنم بهتره ببینید
          این برنامه رو هم با ATmega16 و هم با AT91sam7x256 تست گرفتم مگا 16 فرکانس کلاکش 16MHz بوده و فرکانس کاری آرم 48MHz در این حالت هردو با یه سرعت کار کردن
          برداشت من اینه که یا من از آرم اصلا سر در نمیآرم یا اینکه همینه فقط با رم بالاتر
          اینم برنامه

          while (1)
          {
          i++;
          if(i>10000)
          {
          i=0;
          j++;
          }
          if(j>100)
          {
          j=0;
          y++;
          sprintf(lcd_buff,"y=%d",y);
          lcd_gotoxy(0,0);
          lcd_puts(lcd_buff);
          }


          }


          سایت رو هم مطالعه کردم تا حدودی جناب سپاس یار" با عرض پوزش جناب spman بعدا فهمیدم اشتباه کردم دو باره ویرایش شده" در یکی از مقالاتشون راجب آرم فرمودن قد20 تا مگا 16 سرعت پروسس داره این دقیقا چیزیه که من لازم دارم حالا 20 تا نه 5تا مگا 16 برام پروسس کنه خواهشا یکی راهنمایی کنه چجوری میتونم این کارو بکنم ویا اگه پیشنهاد کلی دیگری برام دارید لطفا راهنمایی بفرمایید.
          جدیدترین ویرایش توسط hheidari2001; ۲۳:۳۶ ۱۳۹۷/۰۴/۰۴.

          دیدگاه


            #6
            پاسخ : مشکل با سرعت آرم

            نوشته اصلی توسط hheidari2001 نمایش پست ها
            متشکرم جناب مجیدی
            ببینید مشکل اصلی من از اینجا شروع شده که یک رشته عدد با حجم زیاد رو میخام پردازش کنم سرعت پردازش بالا احتیاج دارم با میکرو خانواده avr مگا 8 و 16 و32 و at89c4051 , at ,89s51 و pic 16f84, 16f877 تست گرفتم نمیتونن توی زمان لازم برام محاسبه کنن ( البته میتونم از نظر تئوری مثلا کارو تقسیم کنم با چهار تا مگا 16 و پروسس رو بگیرم) بعد اومدم سراغ آرم با آرم خیلی کار . . . . .
            خواهش میکنم
            میکروی آرمی که دارید کار میکنید چندان پردازش بالایی نداره
            برای پردازش قدرتمند در هسته های cortex-m3 من میکروی lpc1768 رو بهتون پیشنهاد میکنم که تا فرکانس 100 مگاهرتز به خوبی کار میکنه و با توجه به واحد MIPS که برابر 1.25 هست
            میشه گفت که در ثانیه 125 میلیون دستور العمل ماشین رو پردازش میکنه که پردازش کمی نیست
            برای پردازش های سنگین تر هم میتونید از آرم های با هسته های بالاتر مثل CORTEX-M4 استفاده کنید که تو فروشگاه هم موجود هست STM32f405RGT6
            میکرویی که شما داری کار میکنید ضعیفترین میکروی آرم در هسته CORTEX-M3 هست . . .
            ضمنا یه مسئله توجه داشته باشید که برای اجرای بعضی توابع باید مقدار تاخیر لحاظ بشه حالا اگه AVR باشه چون سرعتش پایینه نمیخواد تاخیر رو داشته باشه
            اما اگه آرم باشه باید تاخیر رو لحاظ کنه
            مثلا برای کار با ال سی دی کاراکتری یه حداقل ماندگاری سطح ( 0 یا 1 ) داریم یعنی مثلا فلان پین کنترلی ال سی دی باید حداقل 400 نانوثانیه 1 بمونه حالا اگه میکرو
            آرم باشه با فرکانس مثلا 100 مگا باید بعد از 1 کردن همینطور منتظر بمونه تا 400 نانوثانیه بگذره بعد کارهای دیگه رو انجام بده . این مسئله وقتی بارها و به دفعات زیاد انجام
            بشه تو سرعت نهایی تاثیر بسزایی داره .
            شما کاری که انجام میدی ابتدا مطمئن شو که فرکانس میکرو اون مقدار که باید باشه هست بعدش دیگه مابقی کارا رو انجام بده . . .
            از به کار بردن توابعی که ذاتا کند هستند یعنی باید آروم آروم تغییرات رو انجام بدن ( توضیح دادم ) سعی کن پرهیز کنی
            آرزوی سرافرازی برای ایران عزیز . . .


            دیدگاه


              #7
              پاسخ : مشکل با سرعت آرم

              بله صحیح می فرمایید پروتکل اجرای دستور و ارسال دیتای LCD را میشناسم اگه اشتباه نکنم 42 میلی ثانیه برا راه اندازی 10 میلی ثانیه برای ریست 1 میلی ثانیه برای پاک کردن و 12 میکرو ثانیه برای ارسال دیتا با توجه به اینکه چهاربیتی بسته شده میشه 24 میکروثانیه حداقل که میگیریم 30 میکروثانیه که من هردو لایبراری lcd.h رو هم برای avr و هم arm چک کردم هردو 30 میکروثانیه دیلی را دارند طبیعی هم هست با اطمینان هم میگم که حتی AT89c51 که با کلاک1/12 کار میکنه هم این تاخیرو میخواد واگر در لایبراری ارائه نشود تصویر در lcd نمیاد. به غیر از این مطالب همانطور که در برنامه نوشته شده پس از کانتر حدود 1000000 که در عمل حدود یک ثانیه هست یک بار تابع lcd اجرا میشود و 30 میکروثانیه دیلی داریم تقریبا میشه 0.003% درصد خطا که کاملا قابل چشم پوشی است بله قبول دارم که تابع delay دو میکرو حدود کمی با هم خطا دارن اگر بد بین باشم و مگا 16 تاخیر 24 میکرو ثانیه بده و آرم 30 میشه 25% خطا از خطای کل که در این مورد خاص میشه0.00075 درصد خطا که فکر کنم بشه ازش چشم پوشی کرد.
              دوستان کسی در سایت با خود at91 sam و سیستم RTX کار کرده لطفا راهنمایی فرمایید. یه نکته یادم رفت لایبراری آرم تابع چاپ عدد داشت و به همین خاطر از کتابخانه stdio.h استفاده نکردم ولی avr بیچاره نداشت که ناچارا از stdio.h استفاده شده فکر کنم اینجا تومسابقه به نفع آرم شده که از لحاظ فنی یه اوانس به آرم داده شد.
              جدیدترین ویرایش توسط hheidari2001; ۲۱:۴۱ ۱۳۹۷/۰۴/۰۴.

              دیدگاه


                #8
                پاسخ : مشکل با سرعت آرم

                ضمن عرض ادب و احترام
                تو حلقه بی نهایت اگه از If بخوایم دایم برای مقایسه کردن ,استفاده کنیم, خودش باعث کندی برنامه میشه...
                الان تو این برنامه هی میکرو شما باید منتظر باشه که ببینه, I به 10000 رسید یا نه
                مشابه این مسله تو تاپیک زیر هم بود که تصور پایین بودن سرعت میکرو شده بود..
                دوستان من میخوام با میکرو با زدن کلید خیلی سریع واکنش نشون بده و حالا یه ال ای دی رو ست کنه فرکانس رو هم تا 8 بردم اما فرقی با یک نکرد برنامه رو هم خیلی کوتاه و بهینه کردم اما اون چیزی که میخوام نیست کسی تجربه داره ممنون میشم کمک کنین


                پیشنهادی که دارم, برای این برنامه از تایمر/کانتر میکرو استفاده کنید.....

                دیدگاه


                  #9
                  پاسخ : مشکل با سرعت آرم

                  متشکرم ولیکن لطفا به سوالاتم هم توجه فرمایید برنامه ها فقط برای تستند و نتیجه پس لطفا در مورد سوالات پاسخ بفرمایید باتشکر فراوان
                  قطعا از نظر من آرم خیلی قویتره و البته از نظر خیلیها هم همینطوره که قاعدتا هم نظر صحیحی است ولی نتیجه تست من برعکس نظرم شده این سوال منه که روش صحیح برنامه نویسی در آرم و اطلاعات بهتری در باره کارکرد آنها پس لطفا در مورد استدلال برنامه ها و زمانبندی آنها که مورد سوال بنده نیست پاسخ نفرمایید ( البته در این تاپیک) با تشکر فراوان
                  جدیدترین ویرایش توسط hheidari2001; ۲۳:۵۲ ۱۳۹۷/۰۴/۰۴.

                  دیدگاه


                    #10
                    پاسخ : مشکل با سرعت آرم

                    یه چیز جدیدی فهمیدم
                    SAM7X256
                     256 Kbytes of Flash Memory
                     1024 pages of 256 bytes
                     Fast access time, 30 MHz single-cycle access in Worst Case conditions
                     Page programming time: 6 ms, including page auto-erase
                     Page programming without auto-erase: 3 ms
                     Full chip erase time: 15 ms
                     10,000 write cycles, 10-year data retention capability
                     16 lock bits, each protecting 16 sectors of 64 pages
                     Protection Mode to secure contents of the Flash
                     64 Kbytes of Fast SRAM
                     Single-cycle access at full speed
                    این مطلب را دیتا شیت اعلام کرده که بر اثر این اعلام به نظر میرسه اگر میکرو آرم در حالت بدون kernel وبه عبارتی تک پروسس فعال بشه( نمیدونم این جمله درست است یا نه چرا که به نظر میاد تک هسته ای باشه) در بیشترین حالت 30MHz سرعت بده که خوب وقتی سرعت چیپ پایین باشه احتمالا این فرکانس به 16 میرسد و طبیعتا نتایجش با avr mega 16 نزدیک میشود. حال نمیدونم این استدلال درسته یا نه؟

                    دیدگاه


                      #11
                      پاسخ : مشکل با سرعت آرم

                      مثل اینکه نظر فنی تری وجود ندارد اگر راهنمایی و روش اجرای بهتری سراغ دارید لطفا منتظرم.
                      آیا کار با RTX سرعت بالاتری ایجاد میکنه یا نه اگر در فروم کسی موجود است که با sam7 کار کرده لطفا پاسخ بدید بیخودی وقت نذارم برم سراغ کار دیگری

                      دیدگاه


                        #12
                        پاسخ : مشکل با سرعت آرم

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

                        دیدگاه

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