اطلاعیه

Collapse
No announcement yet.

مشکل تاخیر با دستور Getadc(0)

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

    مشکل تاخیر با دستور Getadc(0)

    سلام بر دوستان
    من در یک حلقه do loop دستورای نوشتم. این وسط لازم است همزمان از مبدل انالوگ به دیجیتال Getadc(0) استفاده کنم. اما متاسفانه تاخیری در حدود 200 میکرو ثانیه ایجاد میشه. و کار را خراب میکنه. من نمیخوام چنین تاخیری داشته باشم
    چه کار باید کنم. ؟؟؟
    برام مهمه دوستان. اگه پیشنهادی دارین راه حلی است راهنمایی بفرمایید ممنون میشم.

    #2
    پاسخ : مشکل تاخیر با دستور Getadc(0)

    سلام<br>
    این تاخیر به خاطر زمان تبدیل adc اتفاق میوفته و راه فراری نداره <br>
    فرکانس کلاک میکرو رو ببر روی آخرش اگر بازم تاخیر مشکل ساز میشه میکرو رو بذار کنار و از میکرو های xmega استفاده کن یا بهتر از اون از arm استفاده کن

    دیدگاه


      #3
      پاسخ : مشکل تاخیر با دستور Getadc(0)

      نوشته اصلی توسط mehrannohtanipour نمایش پست ها
      سلام بر دوستان
      من در یک حلقه do loop دستورای نوشتم. این وسط لازم است همزمان از مبدل انالوگ به دیجیتال Getadc(0) استفاده کنم. اما متاسفانه تاخیری در حدود 200 میکرو ثانیه ایجاد میشه. و کار را خراب میکنه. من نمیخوام چنین تاخیری داشته باشم
      چه کار باید کنم. ؟؟؟
      برام مهمه دوستان. اگه پیشنهادی دارین راه حلی است راهنمایی بفرمایید ممنون میشم.

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

      دیدگاه


        #4
        پاسخ : مشکل تاخیر با دستور Getadc(0)

        نوشته اصلی توسط نو رسیده نمایش پست ها
        با سلام
        توابع سطح بالا مثل این معمولا هر بار برای خوندن مبدل میان تمام اون بخش رو کانفیگ میکنن، در حالیکه تا زمانی که میکرو روشنه یه بار کانفیگ کافیه.
        بهتره adc رو رجیستری بخونین. اینطوری بخش زیادی از این تاخیر حذف میشه.
        سلام. متوجه نشدم. یعنی چی ریجیستری بخونمش؟ میشه توضیح بدید .ممنون

        دیدگاه


          #5
          پاسخ : مشکل تاخیر با دستور Getadc(0)

          نوشته اصلی توسط mehrannohtanipour نمایش پست ها
          سلام. متوجه نشدم. یعنی چی ریجیستری بخونمش؟ میشه توضیح بدید .ممنون
          سلام
          منظور جناب نو رسیده این هستش که مستقیم با رجیسترها کار کنید. تا حدودی هم درست فرمایش میکنن. این توابع معمولا طوری نوشته میشن که سطح ایمنی بالایی داشته باشن، به خاطر همین معمولا کمی سنگین هستن.
          البته به نظر من این مقدار تاخیر کمی زیاده! فکر کنم مشکل جای دیگس.
          ببینید یکی از راه هایی که به بهینه شدن برنامه کمک میکنه، استفاده از وقفه هستش. البته بستگی داره برنامه اتون دقیقا به چه شکلی باشه و چه کاری بخواد انجام بده. اگر توضیحات کامل تری بدید، مطمئنا میشه بهتر راهنمایی کرد.

          دیدگاه


            #6
            پاسخ : مشکل تاخیر با دستور Getadc(0)

            نوشته اصلی توسط mehrannohtanipour نمایش پست ها
            سلام. متوجه نشدم. یعنی چی ریجیستری بخونمش؟ میشه توضیح بدید .ممنون

            تابع GETADC در واقع یک ماکرو هست که برای راحتی کاربر چند عملیات مربوط به تنظیمات و خوندن ADC رو با هم انجام میده و انجام اینکارها زمان اجرای دستور رو طولانی میکنه و طبعا تو کارهای حرفه ای ممکنه مشکلاتی ایجاد کنه.
            در صورتیکه در واقع نیازی نیست که تنظیمات هم هر بار انجام بشه بلکه مورد نظر شما فقط خوندن ADC هست.
            بنا بر این بهتره بجای استفاده از این دستور، با استفاده از روش مقدار دهی رجیسترهای مربوط به ADC، بعد از بوت یکبار تنظیمات رو انجام بدین و داخل حلقه تون فقط مقدار بخونین تا زمان اضافی از دست ندین.
            اگه باز هم نیاز به سرعت بیشتری داشتین میتونین پروسه رو از روی فایل LST و اسمبلی چک کنین و ببینین چه عملیاتی قابل حذف هست تا سرعت بیشتر بشه.
            کمترین توقع از یک فرد تحصیلکرده، دانستن املای صحیح کلمات است.

            دیدگاه

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