input capture تایمر stm32

Input capture is a method of dealing with input signals in an embedded system.

Embedded systems using input capture will record a timestamp in memory when an input signal is received. It will also set a flag indicating that an input has been captured. This allows the system to continue executing without interruption while an input is being received while still having the capability to trigger events based on the exact time when the input was received.

The corresponding capability to trigger an output at a specified time, based on a timestamp in memory, is called output compare.

There are many programmable interrupt controllers that provide dedicated input capture pins and a programmable counter along with it. These pins generate interrupts to the controller, which then executes an interrupt service routine. The interrupts can be programmed to occur at the rising or falling edge of the input signal, depending on requirements.

[ویکی پدیا]

مثال: کلید را به B0 وصل میکنیم و این پایه را pull down  داخلی میکنیم. از کانال ۳ تایمر ۳ به عنوان input capture استفاده میکنیم.

تنظیمات و اتصالات lcd را نیز انجام میدهیم.

تایمر ۱ms ایجاد میکنیم.

در خط اول مقدار کانتر نمایش داده می شود و با زدن کلید مقدار کانتر در لحظه ی فشردن کلید را در خط دوم نمایش می دهیم.

چون کلاک ما ۱۶MHz بود, prescaler را ۱۵۹۹۹ قرار دادیم تا تایمر کانتر به میلی ثانیه بشمرد.

وقفه را فعال می کنیم.

کد:

تابع call back را به main.c اضافه میکنیم تا زمانی که تایمر ۳ وقفه تولید میکند(یعنی مقدار کانتر به ۱۰۰۰۰ رسیده است), مقدار کانتر را ۰ کنیم.

این کد را هم داخل تابع main قرار میدهیم:

 

zeta
izeta.ir@gmail.com

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد.