دستورات تایمر کانتر 3 به زبان بیسیک BASIC

دستورات تایمر کانتر 3

دستورات تایمر کانتر 3 به زبان بیسیک BASIC

این تایمر – کانتر دارای امکاناتی دیگر مانند مد compare و مد capture و خروجی pwm می باشد.

پیکر بندی تایمر کانتر 3 به عنوان تایمر در زبان بیسیک BASIC

این تایمر 16 بیتی بوده پس حداکثر مقدار شمارش آن تا 65535 خواهد بود.

1/8/64/256/1024 : مقادیری که می توان برای تقسیم فرکانس میکرو استفاده کرد

با دستور بالا تایمر – کانتر 3 به عنوان یک تایمر به میکرو معرفی می شود. میزان فرکانس کار این تایمر از رابطه زیر بدست می آید:

فعال و روشن کردن تایمر کانتر 3 در زبان بیسیک BASIC

در هنگام برنامه نویسی این دو دستور را حتما با هم به کار برید تا میکرو تایمر را روشن کند.

غیر فعال کردن تایمر کانتر 3 در زبان بیسیک BASIC

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

نکته : با خاموش کردن timer3 مقدار شمارش شده صفر نخواهد شد و با روشن کردن دوباره آن ادامه شمارش انجام خواهد شد.

نوشتن و خواندن تایمر کانتر 3 در زبان بیسیک BASIC

نکته : مقدار تایمر در رجیستری به نام timer3 قرار گرفته است که می توان به این رجیستر مقدار داد تا تایمر از آن مقدار شروع به شمارش کند و یا مقدار آن را در متغیری که برای انجام عملیاتی لازم دارید بریزید. نوع متغیر var باید word باشد.

وقفه تایمر کانتر 3 در زبان بیسیک BASIC

پرچم سریزی تایمر 3 به نام ovf3 بوده و همانطور که گفته شد با رسیدن مقدار تایمر به عدد 65535 (مقدار timer3 برابر صفر می شود) این پرچم 1 شده و می توان از آن به عنوان پرش به یک زیر برنامه استفاده کرد و در زیر برنامه استفاده کرد و در زیر برنامه با return بازگشت. در این دستور باید اول پرچم را فعال سازی و بعد با دستور ovf3 on در صورت یک شدن ovf3 به برچسب زیر برنامه پرش کرد.

نکته : فراموش نشود برای کار با هر وقفه ای اول باید وقفه کلی enable interrupts را فعال کرد.

مثال اول :

مثال دوم :

نکته : در مثال بالا تایمر هر بار تا مقدار 65000 شمرده و با هر بار سریز شدن به زیر برنامه رفته و مقدار اولیه 535 را می گیرد تا دوباره 65000 بشمارد. چون فرکانس کار تایمر در هر 4us یک واحد اضافه می شود پس تایمر در هر 65000 * 4us یعنی هر 260 ms سرریز می شود.

پیکر بندی تایمر کانتر 3 به عنوان کانتر در زبان بیسیک BASIC

با این دستور کانتر 3 پیکر بندی شده و با اعمال پالس به پایه t3 مکرو یک واحد به رجیستر counter3 اضافه می شود. این کانتر 16 بیتی بوده پس حداکثر مقدار شمارش آن تا 65535 خواهد بود ( پالس ورودی بعدی کانتر را صفر می کند ).

Edge : گزینه rising برای حساس بودن پایه به لبه بالارونده و گزینه falling برای حساس بودن پایه به لبه پایین رونده

فعال و روشن کردن تایمر کانتر 3 در زبان بیسیک BASIC

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

نکته : برای روشن و خاموش کردن کانتر در جاهای مختلف برنامه از start counter3 استفاده نمایید.

غیر فعال کردن کانتر 3 در زبان بیسیک BASIC

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

نکته : با خاموش کردن counter3 مقدار شمارش شده صفر نخواهد شد و با روشن کردن دوباره آن ادامه شمارش انجام خواهد شد.

نوشتن و خواندن کانتر 3 در زبان بیسیک BASIC

نکته : مقدار کانتر در رجیستری به نام counter3 قرار گرفته است که می توان به این رجیستر مقدار داد تا کانتر از آن مقدار شروع به شمارش کند و یا مقدار آن را در متغیری که برای انجام عملیاتی لازم دارید بریزید. متغیر var باید از نوع WORD باشد.

وقفه کانتر 3 در زبان بیسیک BASIC

نکته : مقدار کانتر در رجیستری به نام COUNTER3 قرار گرفته است که می توان به این رجیستر مقدار داد تا کانتر از آن مقدار شروع به شمارش کند و یا مقدار آن را در متغیری که برای انجام عملیاتی لازم دارید بریزید. متغیر VAR باید از نوع WORD باشد.

وقفه کانتر 3 در زبان بیسیک BASIC

پرچم سریزی کانتر به نام ovf3 بوده و همان طور که گفته شد با رسیدن مقدار کانتر به عدد 65535 و با ورود یک پالس دیگر (مقدار counter3 برابر صفر می شود) این پرچم 1 شده و می توان از آن به عنوان پرش به یک زیر برنامه استفاده کرد و در زیر برنامه با return بازگشت. در این دستور باید اول پرچم را فعال سازی و بعد با دستور on ovf3 در صورت یک شدن ovf3 به برچسب زیربرنامه پرش کرد.

نکته : فراموش نشود برای کار با هر وقفه ای اول باید وقفه کلی enable interrupts را فعال کرد.

مثال اول :

مثال دوم :

پیکر بندی کانتر 3 به همراه مد مقایسه ای در زبان بیسیک BASIC

نکته : اگر نوشتن دستور در یک خط مقدور نبود با علامت _ به خط بعد بروید.

با کانتر 3 که آشنا شدهاید با ورودی پالس به پایه t3 و نوع اعمالی که با edge قابل تنظیم است کانتر شورع به شمارش می کند. این تایمر قابلیتی دارد که با رسیدن مقدار کانتر به عددی دلخواه که در درون رجیستر های دو بایتی compare 3 a و compare3 b می توان قرار داد خروجی دو پایه oc3a و oc3b را به دلخواه تغییر وضعیت داد.

Edge : گزینه rising برای حساس بودن پایه به لبه بالارونده و گزینه falling برای حساس بودن پایه t3 به لبه پایین رونده

Calear timer : مقدار 1 برای زمانی که بخواهید محتوای کانتر 3 در زمان تطابق و برابری با رجیستر ها پاک شود.

Compare a , b : در این قسمت گزینه هایی را در اختیار دارید که می توان عکس العمل خروجی های oc3a و oc3b در زمان تطابق را تغییر داد و clear برای صفر شدن در زمان تطابق و گزینه set برای یک شدن و toggle برای معکوس شدن و disconnect برای قطع شدن این پایه ها در زمان تطابق می تواند باشند.

فعال و غیر فعال کردن کانتر 3 در مد مقایسه ای

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

پیکر بندی تایمر 3 به همراه مد مقایسه ای

تایمر 3 را هم می توان در این مد استفاده کرد و کاملا شبیه به حالت استفاده از کانتر می باشد و تنها در این حالت مقدار درون timer3 با رجیستر compare3 a , b مقایسه می شود.

فعال و غیر فعال کردن تایمر 3 در مد مقایسه ای

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

نوشتن و خواندن رجیسترهای مد مقایسه ای

نکته: متغیر var از نوع word است.

وقفه کانتر و تایمر در مد مقایسه ای در زبان بیسیک BASIC

شما می توانید زمانی که مقدار counter3 یا timer3 با مقدار رجیسترهای مد مقایسه ای (compare3 a,b) تطابق پیدا کردند ه صورت وقفه به یک زیر برنامه بروید و عملی را انجام دهید.

پیکر بندی تایمر کانتر 3 در مد pwm

تایمر – کانتر 3 دارای دو خروجی pwm است , که پایه های oc3a و oc3b هستند. دو رجیستر برای قرار گیری مقدار pwm خروجی وجود دارد که به نام های pwm3a و pwm3b هستند. که می توان از این دو رجیستر خواند و یا در آنها نوشت.

Pwm = 8 / 9 10 : این مد می تواند به صورت 8 یا 9 یا 10 بیتی پیکر بندی شود. فرکانس کار pwm در بیت های مختلف به صورت زیر است:

نکته : f.osc فرکانس کار میکروکنترلر می باشد.

Compare a/b pwm = این گزینه ها نوع تغییرات سیگنال pwm را مشخص می کند که در حالت clear up در حالتی که رجیستر pwm بیشترین مقدار خود را دارد به همان نسبت خروجی بیشترین پهنای خود ( موج ) را خواهد داشت و بلعکس.

حالت clear down , در حالتی که رجیستر pwm بیشترین مقدار خود را دارد به همان نسبت خروجی کمترین پهنای خود ( صفر ولت ) را خواهد داشت و بلعکس.

حالت disconnect خروجی آن مد قطع می شود.

نوشتن و خواندن رجیسترهای مد pwm

نکته : متغیر var از نوع byte در حالت 8 بیتی است و از نوع word در حالت 9 بیتی و 10 بیتی است.

نکته : برای فعال کردن pwm باید دستورات enable timer 3 و start timer3 را حتما استفاده کنید.

 اطلاعات پروژه

 رمز فایل : www.electronics98.com (این مطلب فاقد فایل جهت دانلود است)

 نویسنده : فرهاد اکبری

 تاریخ انتشار : 24 سپتامبر 2014

 شرایط و قوانین ثبت دیدگاه

 فارسی بنویسید و از کیبورد فارسی استفاده کنید.

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

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

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