ببینید دوست عزیز،
یه تایمر که یه پورت خروجی بیشتر که نداره، داره؟
نهایتا شما بتونی تایمر رو روی مقدار دلخواه تنظیم کنی و توی رویه وقفه دوتا پین رو های یا لاو بکنی.
توضیحات اضافه:
همونطور که rozeh گفت، دنبال فانکشن جنراتور باش
اما برای اینکه کمی راه بیفتی توضیحات زیر رو بخون:
برای شبیه سازی پروژه ی بسیار ساده
ابتدا یک وقفه ی خارجی تعریف کن و یک کلید فشاری بهش وصل کن
یک متغیر تعریف کن از نوعunsigned char یعنی 8 بیتی بدون علامت
هربار که این کلید فشرده میشه
در زیر برنامه ی وقفه، یکی به این متغیر اضافه کن
زمانی هم که شد 255، صفرش کن
یکی از تایمرهای 8 بیتی میکرو رو فعال کن
فرکانس تایمر رو زیاد بالا نگیر فعلا
(میتونی 16 بیتی هم فعال کنی
اگه 16 بیتی بود متغیری که در بالا تعریف کردی
از نوع unsigned int یعنی 16 بیتی بدون علامت بذارش)
وقفه ی تایمر هم فعال کن
تایمر رو در مود top to FF (ویا top to FFFF) بذار
هربار که کلید فشرده میشه
متغیری که در بالا تعریف کرده بودی رو
درون TCNT مربوط به تایمرت بریز
یکی از پورت های میکرو رو به عنوان خروجی تعریف کن
مثلا PD.0 رو.
درون وقفه ی تایمر در هر بار که رخ میده
اگه PD.0 برابر با 1 هستش، 0 بکنش
اگه PD.0 برابر با 0 هستش، 1 بکنش
(به عبارتی تاگلش بکن toggle)
خب حالا مصدوم آماده ست
من میخوام از طریق pwm یه شکل موج با فرکانس متغیر و دیوتی سایکل ثابت ایجاد کنم، کسی میدونه میشه همین روش رو با خروجی pwm و با تغییر TCNT و ثابت نگهداشتن OCR انجام داد؟ به اینصورت که بسته به نیاز هر بار مقدار TCNT تغییر کنه و از طریق خروجی PWM پالس بده..شدنیه؟ یا اینکه چون مقدار TCNT باید تغییر کنه غیرممکنه؟
من میخوام از طریق pwm یه شکل موج با فرکانس متغیر و دیوتی سایکل ثابت ایجاد کنم، کسی میدونه میشه همین روش رو با خروجی pwm و با تغییر TCNT و ثابت نگهداشتن OCR انجام داد؟ به اینصورت که بسته به نیاز هر بار مقدار TCNT تغییر کنه و از طریق خروجی PWM پالس بده..شدنیه؟ یا اینکه چون مقدار TCNT باید تغییر کنه غیرممکنه؟
1: اللهم صل علی محمد و آل محمد و عجل فرجهم و ...
2: دانش بهتره یا ثروت؟ بدون شعور هیچکدوم!
3: دلا معاش چنان کن که گر بلغزد پای *** فرشتهات به دو دست دعا نگه دارد (حافظ)
دیدگاه