نمایش نتایج: از 1 به 7 از 7
Like Tree3 لایک
  • 1 Post By siib
  • 1 Post By magmagmary
  • 1 Post By magmagmary

موضوع: عملکرد تابع ()millis

  1. #1
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229

    عملکرد تابع ()millis

    دوستان سلام
    اونقدی که من دستگیرم شد این تابع millis میاد زمان رو بر حسب میلی ثانیه از زمان راه افتادن آردوینو اندازه میگیره ، اندازه گیری هم به این صورته که موج پله ای از کریستال 16 مگا هرتزی آردوینو توسط میکرو دریافت میشه و هر 16 هزار نوسان رو یک میلی ثانیه میشمره
    حالا سوال من اینه که این شمارش توسط میکرو همیشه انجام میشه یا بقیه کارهایی که میکرو انجام میده میتونن این شمارش رو مختل کنن؟
    بعد اینکه به نظر میاد اگه میکرو مشغول بشه و نشمره تعداد میلی ثانیه های شمرده شده از زمان واقعی کمتر باشن اما من که امتحان کردم طی یک ساعت این تابع مقدارش از زمان واقعی 4000 میلی ثانیه بیشتر شد

    کلا ممنون میشم در این مورد توضیح کاملی ازائه بدین
    لایک کردن

  2. #2
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    به این لینک یه سری بزنید
    https://learn.adafruit.com/multi-tas...lis-for-timing
    لایک کردن

  3. #3
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    به این لینک یه سری بزنید
    https://learn.adafruit.com/multi-tas...lis-for-timing
    سعی من این بود که بپرسم این تابع چجوری کار میکنه ، بیشتر پیرو همون پستی که مربوط به "قابلیت آردوینو در انجام همزمان چند کار"
    1-و اینکه به عنوان مثال میکرو در حال انجام یه حلقه تکرار برای پیدا کردن مقدار بهینه یه مساله غیرخطی عدد صحیح باشه (زمان انجام حلقه نسبتا زیاد باشه) بعد که از حلقه اومد بیرون اون زمانی که میکرو داشته مساله رو حل میکرده تابع millis زمان رو شمرده یا نه؟ (اگه شمرده چجوری شمرده ، با وقفه؟)
    2-آیا اینکه millis زمانی بیشتر از زمان واقعی رو برمیگردونه دلیلش اینه که فرکانش کریستال بیشتر از 16 مگا هرتزه؟

  4. #4
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    ؟
    ملت توضیحی ندارن؟

  5. #5
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط siib نمایش پست ها
    سعی من این بود که بپرسم این تابع چجوری کار میکنه ، بیشتر پیرو همون پستی که مربوط به "قابلیت آردوینو در انجام همزمان چند کار"
    1-و اینکه به عنوان مثال میکرو در حال انجام یه حلقه تکرار برای پیدا کردن مقدار بهینه یه مساله غیرخطی عدد صحیح باشه (زمان انجام حلقه نسبتا زیاد باشه) بعد که از حلقه اومد بیرون اون زمانی که میکرو داشته مساله رو حل میکرده تابع millis زمان رو شمرده یا نه؟ (اگه شمرده چجوری شمرده ، با وقفه؟)
    2-آیا اینکه millis زمانی بیشتر از زمان واقعی رو برمیگردونه دلیلش اینه که فرکانش کریستال بیشتر از 16 مگا هرتزه؟
    طبق مطالعاتی که من کردم همه جا گفتن اگر دقیقا دنبال زمان به شدت دقیق هستی اصلا سراغ millis نرید چون بین N-1 تاN+1 تغییر می کنه . اینجا خیلی کامل تر توضیح داده
    http://forum.arduino.cc/index.php?topic=46351.0

  6. #6
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    طبق مطالعاتی که من کردم همه جا گفتن اگر دقیقا دنبال زمان به شدت دقیق هستی اصلا سراغ millis نرید چون بین N-1 تاN+1 تغییر می کنه . اینجا خیلی کامل تر توضیح داده
    http://forum.arduino.cc/index.php?topic=46351.0
    بله ، اما اون مثالی که زده و گفته 5 ثانیه رو براش 6 ثانیه میشمره ، من اون مشکل رو نداشتم برای من شمردن درست انجام میشد و کم کم از مقدار واقعی فاصله میگرفت یعنی برای مثال تا n=900 زمان درست بود بعد از اون یکی از مقدار واقعی بیشتر شد و در زمان 1800 باز یکی بیشتر شد و نهایتا بعد از 1 ساعت (n=3600) ، چهار تا بیشتر از مقدار واقعی بود
    با این همه سوال بیشتر در مورد نحوه شمارش هست نه دقتش
    این TCNT جدا از پروسسور اصلی کار میکنه؟ یعنی فقط کارش شمردنه؟
    اگه جدا باشه پس کلا خطای شمارش میتونه مستقل از سنگینی یا سبکی برنامه باشه (شرایط محیطی رو جوری تنظیم کنیم که فرکانس نوسان ساز داخلی تغییرات زیادی نداشته باشه)

  7. #7
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط siib نمایش پست ها
    بله ، اما اون مثالی که زده و گفته 5 ثانیه رو براش 6 ثانیه میشمره ، من اون مشکل رو نداشتم برای من شمردن درست انجام میشد و کم کم از مقدار واقعی فاصله میگرفت یعنی برای مثال تا n=900 زمان درست بود بعد از اون یکی از مقدار واقعی بیشتر شد و در زمان 1800 باز یکی بیشتر شد و نهایتا بعد از 1 ساعت (n=3600) ، چهار تا بیشتر از مقدار واقعی بود
    با این همه سوال بیشتر در مورد نحوه شمارش هست نه دقتش
    این TCNT جدا از پروسسور اصلی کار میکنه؟ یعنی فقط کارش شمردنه؟

    اگه جدا باشه پس کلا خطای شمارش میتونه مستقل از سنگینی یا سبکی برنامه باشه (شرایط محیطی رو جوری تنظیم کنیم که فرکانس نوسان ساز داخلی تغییرات زیادی نداشته باشه)

    اینجا یه سری توضحات داده:
    Questions about millis()
    لایک کردن

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO