آموزش تایمر در میکروکنترلرهای WCH | تنظیمات و کاربردها - قسمت نهم آموزش CH32

blog
۱۴۰۳-۱۱-۲۱
6 دقیقه

واحد Timer در میکروکنترلر WCH

با سلام، در این قسمت از آموزش‌ها میریم سراغ مبحث کاربردی تایمرها، در این قسمت از آموزش فقط تایمر رو در مدهای مختلف راه‌اندازی می‌کنیم و سپس میریم سراغ قسمت NVIC یا همون وقفه خودمون و بعد از اون با استفاده از تایمر به CPU وقفه میدیم، در ادامه این آموزش بریم سراغ ساختار تایمرهای داخل میکرو های WCH،با من همراه باشید.

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

این میکرو به‌طورکلی سه نوع تایمر دارد،Advance یا پیشرفته،General purpose یا همه‌منظوره و basic یا پایه، هر کدوم استفاده خاص خود شوند دارن ولی خب در برخی موارد میشه جای یکدیگر آنهارو استفاده کرد؛ چون بعضی اشتراکات با هم دارن، مثلاً هر سه تایمر میتونن یک عددی رو داخل کانتر بر اساس مقسم و فرکانس  و اتوریلودرشون پر کنن، پس اینجا فرقی نمیکنه از کدوم استفاده بکنید؛ اما باید این مسئله در نظر داشته باشید که بعضاً محدودیت تعداد تایمر هست، پس سعی کنید برای کارهای ساده مثل شمردن و محاسبه زمان و کارهای ساده سراغ تایمرهای basic برید و برای کارهایی که سخت‌افزار تایمر سنگین‌تری میخواد سراغ تایمرهای بالاتری مثل ادونس و همه‌منظوره برید، برخی ویژگی‌های آنها در دیتاشیت آی سی گفته شده:

قابلیت‌های تایمر ادونس

قابلیت‌های تایمر ادونس

قابلیت‌های تایمر همه‌منظوره

قابلیت‌های تایمر همه‌منظوره

تایمر بیسیک

تایمر بیسیکخب تایمر بیسیک رو که گفتیم، تایمر ادونس که همه‌کاره اس تقریباً و تایمر همه‌کاره همه ویژگی‌های تایمر بیسیک رو دارد با این فرق که بخش Compare/Capture رو دارد که جلوتر بهشون می‌رسیم؛ ولی خب تایمر ادونس همه بخش هارو دارد و در برنامه‌نویسی فرقی با بیسیک ندارد پس ما این آموزش ها رو با تایمر ادونس میریم جلو. در این آموزش انتظار میره که شما مفاهیم و کارکرد یک تایمر میکروکنترلر رو بشناسید، در این آموزش‌ها بیشتر در مورد کدها و قابلیت‌های خود میکرو صحبت می‌کنیم.

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

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

الان فرکانس کاری میکروی من 96MHz هست که از کلاک خارجی تعیین می‌شود، به‌صورت پیش‌فرض کریستال خارجی رو 8 مگاهرتز در نشر میگیرد،اگر مال شما مقدار دیگری داشت SYSCLK_FREQ_HSE رو از کامنت در بیاورید و مقدار کریستال خود را به هرتز وارد کنید.

اگر هم کریستال خارجی روی برد  نداشتید گزینه‌هایی که در انتهای آنها HSI قرار دارد تا انتخاب کنید تا از اسیلاتور داخلی استفاده کند، اسیلاتور داخلی دقیق نیست اگر کار شما وابسته با تایم هست و یا با پریفرالی کار می‌کنید که تایم وابسته هست سعی کنید از کریستال خارجی استفاده کنید، دقیق نبودن این کلاک روی دقیق نبودن تایمرها نیز اثر مستقیم دارد.

و با استفاده از توابع RCC کلاک تایمر خود را تأمین کنید.

خب پس از اطمینان از کلاک ورودی تایمر الان میتونیم فرکانس موردنظر خود را تعیین کنیم.

محاسبه فرکانس تایمر

محاسبه فرکانس تایمر

محاسبه دوره تناوب تایمر

 

محاسبه دوره تناوب تایمر

محاسبه فرکانس PWM

محاسبه فرکانس PWM

محاسبه DutyCycle تایمر

محاسبه DutyCycle تایمر

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

مقادیر ARR و Prescaler این تایمر 16 بیتی هست،پس نهایت عددی ک میتواند داخل آن بزارید 2 به توان 16 یا به عبارتی 65535 هست.این ریجستر ها از مقدار منفی پشتیبانی نمیکنند.

با همین چند خط کد بالا تایمر ما شروع به شمردن بر اساس تنظیماتی که برای انجام دادیم می‌کند.

از این طریق هم می‌توانید مقدار شمارش شده را بخوانید TIM2->CNT

این رجیستر توانایی نوشتن در آن نیز دارد می‌توانید برای دادن مقدار پیش‌فرض یا مقدار جدید از این طریق اقدام کنید

TIM2->CNT = 10

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

PWM در تایمر هااول‌ازهمه از داخل دیتاشیت پایه‌های متناظر با کانال‌های خروجی تایمرمون رو پیدا می‌کنیم.

من از پایه B6 و B7 استفاده کرده‌ام که کانال 1 و کانال 2 تایمر 4 هست.

پایه‌های GPIO رو خروجی می‌کنیم.

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

کد کانفیگش به این صورت هست:

فعال‌سازی تایمر 4

شما از این طریق میتونید بازه دیوتی‌سایکل تایمرتون رو تغییر بدید

TIMX->CH1CVR = XX

باید توجه داشته باشید که این بازه باید کوچک‌تر مساوی با ATRLR باشد و از صفر بزرگ‌تر، مثلاً اگر ATRLR ما 250 بود بازه 0 تا 100 درصد PWM ما میشود 0 تا 250 شما مجاز نیستید عدد بزرگ تر از مقدار ATRLR به مقایسه گر نسبت بدهید،زیرا عملکرد PWM مختل میشود و باید به بازه مجاز خود برگردد.

حالت کاری بعدی تایمر به‌صورت Input Capture می‌باشد که برای کانفیگ کردنش به‌صورت زیر عمل می‌کنیم:

همان‌طور که از اسمش پیداست این دفعه کانال تایمرمون باید به‌صورت ورودی تعریف شود، پس تنظیمات GPIO آن را انجام می‌دهیم.

انتخاب کانال ورودی.

مقدار فیلترهای ورودی تایمر  که باز ان از 0 تا 0x0f هست.

لبه کلاک رو روی بالارونده تنظیم می‌کنیم.

مقسم Input capture هست که مقادیر 1 و و4 و8 رو دارد.

اعمال تنظیمات انجام شده

اگر همه مراحل رو درست رفته باشید برای هر یک از بخش‌های تایمر باید خروجی دلخواه رو گرفته باشید.

بخش Input capture

بخش Input capture

بخش PWM و Counter

کدهای کامل بخش PWM و Counter

 

کد کامل بخش IC

در قسمت بعدی میریم سراغ وقفه‌ها و در قسمت بعد با تایمر هم وقفه ایجاد می‌کنیم، تا قسمت بعد خدانگه‌دارتان.

اطلاعات
0
0
لینک و اشتراک
profile

عرفان رفیعی

متخصص الکترونیک

erixson.elc@gmail.com

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند.
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد.
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند.
family

دیدگاه ها

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله