آموزش تایمر در آردوینو | رویدکت

آموزش تایمر در آردوینو

  •   شما اینجا هستید :
  •   جمعه, ۱۹ مرداد ۱۳۹۷
  •   آموزش, بلاگ, سخت‌افزار
  •   محمد مسعود ساکی زادی
  •   بدون دیدگاه
  •   18
  • در آردوینو ما از یک‌زبان سطح بالا استفاده می‌کنیم زیاد به جزئیات دستورات توجه نمی‌کنیم. برای مثال اگر تابه‌حال در آردوینو دستورات tone, delay و. را استفاده کرده باشید احتمالاً اطلاع ندارید که این دستورات از تایمرهای میکروکنترلر استفاده می‌کنند.

    تایمر در آردوینو چیست و چه کاربردی دارد؟

    تایمر در آردوینو یک بخش سخت‌افزاری است که وظیفه‌ی آن همان‌گونه که از اسم آن پیداست اندازه‌گیری زمان می باشد.

    انواع تایمر در آردوینو

    در آردوینو Uno که دارای هسته‌ی ATmega328 به‌عنوان میکروکنترلر است، ۳ عدد تایمر/کانتر وجود دارد. Timer0 و Timer1 و Timer2.

    Timer0 و Timer2 تایمر/کانتر هایی ۸  بیتی هستند و می‌توانند تا ۲۵۵ را بشمارند.

    و تایمر Timer1 هم یک تایمر/کانتر ۱۲ بیتی به‌حساب می‌آید که توانایی شمارش تا ۶۵۵۳۵ را داراست.

    به‌عنوان نمونه از این تایمر در کتابخانه‌ی سروو موتور استفاده‌شده.

    در سری mega شش عدد تایمر وجود دارد که تایمرهای Timer3, Timer4, Timer5 تایمرهایی ۱۶ بیتی هستند.

    تایمر یک و در سری مگا تایمرهای ۱ و ۳ و ۴ و ۵ تایمرهایی با شمارش بالا هستند و کاربرد زیادی دارند.

    همانند AVR، تمامی این تایمر/کانترها دارای ریجستر های خاص TCNTx، TIMSKx و. هستند که می‌شود با تعیین مقدار آن‌ها را تنظیم کرد، ولی چون ممکن است برای کاربرهای آردوینو خیلی ورود به جزئیات مطلوب نباشد با استفاده از کتابخانه‌ی تایمر در آردوینو ادامه‌ی مطلب را پیش می‌گیریم.

    این کتابخانه را می‌توانید از لینک زیر دریافت کنید:

    ArduinoTimer library

    این کتابخانه فایل‌های سر عنوان زیر را دارد  و اگر تمایل دارید از هرکدام از تایمرها استفاده کنید باید فایل سر عنوان همان کتابخانه را صدا بزنید.

    بیشتر بخوانید :   آموزش راه‌اندازی دات ماتریس با آردوینو + ماژول max7219

     

    از این کتابخانه می‌توانید به‌عنوان شمارنده یا تایمر با کمک تابع‌های زیر استفاده کنید.

    تابع‌های کتابخانه‌ی تایمر در آردوینو:

    initialize/microseconds

    فراخوانی این تابع الزامی هست و ورودی این تابع برحسب میکروثانیه باید نوشته شود.

    کمترین مقدار ورودی تابع ۱ میکروثانیه و بیشترین مقدار آن ۸۳۸۸۴۸۰ میکروثانیه است که نشان از رزولوشن بالا در مقداردهی این کتابخانه است.

    مثال:

     

    setPeriod/microseconds

    با کمک این تابع می‌توانید سیکل‌های متفاوتی را از زمان برای برنامه مشخص کنید.

    مثلاً دوره زمانی ۳ ثانیه برای شمارش در تایمر یک به این شکل تعریف می‌شود:

     

    stop()

    برای توقف شمارش استفاده می‌شود:

     

    resume()

    مثلاً در برنامه می‌خواهیم که مدت‌زمان خاصی شمارش انجام نشود، در این زمان از تابع Stop استفاده می‌کنیم؛ و پس از گذشت چند خط از برنامه، تمایل داریم که شمارش دوباره از سر گرفته شود، در این زمان از تابع resume استفاده می‌کنیم.

     

    این تابع مقدار شمارنده رو صفر نمی‌کند و مقدار شمارش‌شده را ادامه می‌دهد.

    restart()

    این تابع برخلاف resume مقدار شمارش‌شده را صفر می‌کند و مجدداً شمارش را انجام می‌دهد.

     

    pwm/pin, val

    با این تابع pwm برای پایه‌ی موردنظر کانفیگ می‌شود.

    pinپایه‌ای که قراراست سیگنال PWM روی آن قرار بگیرد.

    valمقدار duty cycle را مشخص می‌کند. همانند آموزش PWM و تابع analogWrite، مقدار ۰ تا ۱۰۲۳ می‌گیرد.

    بیشتر بخوانید :   برنامه‌نویسی STM8 با زبان آردوینو در محیط IAR

    مثال:

     

    setPwmDuty/pin, val

    pinپایه‌ای که قراراست سیگنال PWM روی آن قرار بگیرد.

    valمقدار duty cycle را مشخص می‌کند. همانند آموزش PWM و تابع analogWrite، مقدار ۰ تا ۱۰۲۳ می‌گیرد.

     

    disablePwm/pin

    اگر از تابع‌های setPwmDuty و pwm استفاده کردید می‌توانید توسط این تابع، pwm را غیرفعال کنید و در این حالت پایه به حالت نرمال ورودی/خروجی برمی‌گردد.

    attachInterrupt/function

    در این تابع می‌توانیم از وقفه استفاده کنیم.

    به این شکل که تابع وقفه‌ای که برای عمل سرریز شدن تایمر نوشتیم را به برنامه معرفی می‌کنیم تا اجرا شود.

     

    detachInterrupt

    این تابع هم برای غیرفعال کردن attachInterrupt استفاده می‌شود.


  • 1 Star2 Stars3 Stars4 Stars5 Stars (1 رای, متوسط: 5٫00 از 5)
    Loading...
  •   نویسنده
  • محمد مسعود ساکی زادی
  • در حال نویسندگی با عشق و علاقه در رویدکت
  • دیدگاه بگذارید

    اولین نفری باشید که دیدگاه میگذارد

    Notify of
    avatar
    wpDiscuz

      عضویت در خبرنامه

    ×