اپلیکیشن زینگ | باربری آنلاین
زینگ - سامانه جامع حمل و نقل

تماس تلفنی

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

تماس تلفنی

دانلود زینگ

جستجو
عضویت در سامانه صادرات، واردات، تجارت
گروه بازرگانی هومان پویان

آموزش PWM در کدویژن ( تایمر و وقفه):
قبل از پرداختن به آموزش PWM در کدویژن، با تایمر آشنا می شویم. ما هر روز از تایمر استفاده می کنیم. ساده ترین آن را می توانید روی مچ دست خود مشاهده کنید.

کدویژن4

یک ساعت ساده ثانیه ها، دقیقه ها و ساعت های سپری شده در یک روز معین (در مورد ساعت های دوازده ساعته، از نیم روز گذشته) را زمان بندی می کند.

تایمرهای میکروکنترلرهایی مانند AVR نیز کار مشابهی را انجام می دهند و فاصله زمانی معینی را اندازه گیری می کنند.

تایمر AVR در ساده ترین حالت یک ثَبات (رجیستر) است. تایمرها به طور کلی دارای وضوح 8 یا 16 بیت هستند. بنابراین یک تایمر 8 بیتی 8 بیت عرض یا پهنا دارد و می تواند مقداری بین 0 تا 255 را در خود نگه دارد.

اما این رجیستر دارای یک ویژگی جادویی است: مقدار آن به طور خودکار با نرخ از پیش تعیین شده (توسط کاربر) افزایش/کاهش می یابد. این همان کلاکِ (ساعت) تایمر است و این عملیات نیازی به مداخله CPU ندارد.

تایمر چیست؟

تایمرهای AVR بسیار کاربردی و کارآمد هستند، زیرا به صورت ناهمزمان با هسته اصلی AVR اجرا می شوند.

به بیان ساده تر، تایمرها مدارهای جداگانه ای روی تراشه میکروکنترلر هستند که می توانند از طریق رجیسترهای کنترل و شمارش، مستقل از برنامه اصلی اجرا شوند و چیزی به نام تایمر وقفه ایجاد کنند. تولید PWM در کدویژن را به سادگی می توان برای میکروکنترلر AVR انجام داد.

وقفه چیست؟
قبل از یادگیری تایمرها باید مفهوم وقفه را بدانید، زیرا تایمرها عمدتاً از طریق وقفه با CPU تعامل دارند. مفهوم وقفه در ارتباط با میکروکنترلرها شبیه به مفهوم وقفه در زندگی روزمره ما است: فرض کنید شما این آموزش را می خوانید و ناگهان تلفن همراه شما زنگ می زند.

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

از جایی که خواندنتان قطع شد، ادامه می دهید و این دقیقاً همان کاری است که وقفه در MCU انجام می دهد. وقتی MCU برنامه ای را اجرا می کند، اگر چیزی نیاز به توجه فوری داشته باشد، وقفه ای در آن کار ایجاد می شود و اجرای برنامه فعلی در آن زمان متوقف می ماند و وقفه مدیریت می شود.

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

دو نوع وقفه وجود دارد:

  • وقفه سرریز (Overflow Interrupt).
  • وقفه تطبیق مقایسه (Compare Match Interrupt).

وقفه سرریز:
وقفه سرریز هر زمان که رجیستر تایمر سرریز می شود، یعنی به حداکثر مقدار خود می رسد (در این مورد، 255 یا در حالت هگزادسیمال، FFh) ایجاد می شود.

وقفه سرریز

برای استفاده از وقفه سرریز، ابتدا باید فرکانس ساعت خود را تعیین کنید. سپس کادر تأیید "overflow interrupt" را که در برگه Timers در CodeWizard AVR ظاهر می شود، علامت بزنید (توجه: از قسمت "Timer value" می توان مقدار اولیه تایمر را تنظیم کرد.

به طور پیش فرض روی 0 تنظیم شده است). اکنون وقتی فایل تولید می شود، متوجه می شوید که یک تابع در کد ظاهر می شود:

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

از این وقفه می توان برای اندازه گیری فواصل زمانی بزرگ تر از یک چرخه استفاده کرد. به عنوان مثال، فرض کنید یک LED متصل به پین 0 پورت A است و می خواهید با فرکانس 0٫5 هرتز با استفاده از وقفه های سرریز چشمک بزند.

از آنجا که فرکانس سیستم 8 مگاهرتز است، می توانید سرعت ساعت مناسبی را مثلاً FCPU/1024 تنظیم کنید (به Prescalar نگاه کنید) و سپس این کار را به صورت زیر انجام دهید:

این تابع هر بار که وقفه سرریز فراخوانی می شود، متغیر "count" را افزایش می دهد و هنگامی که زمان مناسب سپری می شود، مقدار PORTA.0 را تغییر می دهد.

وقفه تطبیق مقایسه:
هرگاه مقدار تایمر برابر با یک مقدار معین از پیش تعیین شده باشد، یک وقفه مقایسه ای توسط تایمر صادر می شود. این مقدار از پیش تعریف شده در رجیستری ذخیره می شود که به عنوان رجیستر مقایسه خروجی (Output Compare Register) شناخته می شود.

وقفه تطبیق مقایسه توسط CTC، Fast-PWM و Phase correct PWM modes of a timer (شکل زیر را ببینید).

وقفه تطبیق مقایسه

برای استفاده از وقفه تطبیق مقایسه، کادر تأیید "compare match interrupt" را که در برگه Timers در CodeVision Wizard ظاهر شده است، علامت بزنید. مقدار OCR را در مقدار Compare value در اعداد هگزادسیمال تنظیم کنید.

اکنون وقتی فایل خود را تولید می کنید، متوجه می شوید که یک تابع در کد ظاهر می شود:

اکنون می توانید کدی را که هر بار وقفه تطبیق مقایسه ایجاد می کند، اجرا کنید:

کشتیرانی
حمل زمینی
وانت
حمل هوایی
نظر شما
نام و نام خانوادگی:

شماره تماس (نمایش داده نمی شود):

کد امنیتی: captcha

متن پیام: (نظر شما پس از بررسی منتشر خواهد شد)


مطالب مرتبط:
مخفی کردن >>