SlideShare a Scribd company logo
1 of 63
‫کانتر‬ ‫و‬ ‫تایمر‬
‫هشت‬ ‫فصل‬‫هشت‬ ‫فصل‬
8-18-1‫کانتر‬ ‫و‬ ‫تایمر‬ ‫عملکرد‬ ‫تئوری‬‫کانتر‬ ‫و‬ ‫تایمر‬ ‫عملکرد‬ ‫تئوری‬
•‫تشکیل‬ ‫هم‬ ‫سر‬ ‫پشت‬ ‫فل پ‬ ‫فلیپ‬ ‫تعدادی‬ ‫از‬ ‫که‬ ‫است‬ ‫شمارنده‬ ‫همان‬ ‫تایمر‬
.‫است‬ ‫شده‬
•‫منظم‬ ‫فواصل‬ ‫و‬ ‫ثابت‬ ‫فرکانس‬ ‫با‬ ‫شمارنده‬ ‫به‬ ‫شده‬ ‫وارد‬ ‫ساعت‬ ‫پالس‬ ‫اگر‬
.‫کرد‬ ‫استفاده‬ ‫آن‬ (‫)تایمر‬ ‫سنجی‬ ‫زمان‬ ‫کاربرد‬ ‫از‬ ‫توان‬ ‫می‬ ‫باشد‬
•‫نامنظم‬ ‫فواصصل‬ ‫بصا‬ ‫خارجصی‬ ‫های‬ ‫رویداد‬ ‫شمارش‬ ‫برای‬ ‫شمارنده‬ ‫از‬ ‫اگصر‬
.‫شود‬ ‫می‬ ‫استفاده‬ ‫آن‬ (‫)کانتر‬ ‫شمارندگی‬ ‫کاربرد‬ ‫از‬ ‫شود‬ ‫استفاده‬
8-28-2‫صفر‬ ‫کانتر‬ / ‫تایمر‬‫صفر‬ ‫کانتر‬ / ‫تایمر‬
•‫در‬ ‫صفر‬ ‫تایمر‬AVR:‫است‬ ‫نوع‬ ‫سه‬ ‫بر‬ ‫ها‬
•‫بیتی‬ ‫هشت‬ ‫ساده‬ ‫عملکرد‬
•‫بیتی‬ ‫هشت‬ ‫پیشرفته‬ ‫عملکرد‬
•‫بیتی‬ ‫شانزده‬ ‫پیشرفته‬ ‫عملکرد‬
8-38-3‫در‬ ‫صفر‬ ‫کانتر‬ /‫تایمر‬‫در‬ ‫صفر‬ ‫کانتر‬ /‫تایمر‬‫بیتی‬ ‫هشت‬ ‫ساده‬ ‫حالت‬‫بیتی‬ ‫هشت‬ ‫ساده‬ ‫حالت‬
•‫شمارنده‬ ‫خروجی‬ ‫همچنین‬ ، ‫است‬ ‫ورودی‬ ‫بیت‬ ‫هشت‬ ‫دارای‬ ‫شمارنده‬ ‫این‬
‫مقدار‬ ‫حداکثر‬ ‫دارای‬ ‫و‬ ‫بوده‬ ‫بیت‬ ‫هشت‬ ‫دارای‬ ‫نیز‬)255(FFH. ‫است‬
•‫مقدار‬ ‫به‬ ‫رسیدن‬ ‫از‬ ‫پس‬)255(FFH‫مقدار‬ ‫به‬ ‫خروجی‬ ،00H‫می‬ ‫بر‬
‫شمارنده‬ ‫حالت‬ ‫این‬ ‫در‬ . ‫شود‬ ‫می‬ ‫فعال‬ ‫نیز‬ ‫شمارنده‬ ‫سرریز‬ ‫بیت‬ ‫و‬ ‫گردد‬
. ‫کند‬ ‫می‬ ‫شمارش‬ ‫بال‬ ‫به‬ ‫رو‬
•‫که‬ ‫داشت‬ ‫توجه‬ ‫نکته‬ ‫این‬ ‫به‬ ‫باید‬ ‫کانتر‬ ‫صورت‬ ‫به‬ ‫شمارنده‬ ‫استفاده‬ ‫جهت‬
‫پالس‬ ‫تناوب‬ ‫دوره‬ ‫یصک‬ ‫برابر‬ ‫حداقصل‬ ‫بایصد‬ ‫خارجصی‬ ‫پالصس‬ ‫دو‬ ‫بیصن‬ ‫زمان‬
‫ساعت‬CPU. ‫باشد‬
8-48-4‫صفر‬ ‫تایمر/کانتر‬ ‫به‬ ‫مربوط‬ ‫رجیسترهای‬‫صفر‬ ‫تایمر/کانتر‬ ‫به‬ ‫مربوط‬ ‫رجیسترهای‬
•‫های‬ ‫بیت‬ ‫کمک‬ ‫به‬CS00,CS01,CS02: ‫داد‬ ‫انجام‬ ‫را‬ ‫زیر‬ ‫عملیات‬ ‫توان‬ ‫می‬
•1.‫کانترصفر‬ /‫تایمر‬ ‫کردن‬ ‫فعال‬ ‫غیر‬ ‫یا‬ ‫فعال‬ .
•2.‫صفر‬ ‫کانتر‬ /‫تایمر‬ ‫ساعت‬ ‫پالس‬ ‫فرکانس‬ ‫تعیین‬ .
•3‫ورودی‬ ‫پالس‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫شمارنده‬ ‫عنوان‬ ‫به‬ ‫صفر‬ ‫کانتر‬ /‫تایمر‬ ‫دادن‬ ‫قرار‬ .
‫پایه‬ ‫به‬T0.
•‫رجیستر‬TCNT0.‫است‬ ‫شمارنده‬ ‫شمارشگر‬ ‫رجیستر‬
‫بیت‬TOV0‫از‬TIFR:(‫صفر‬ ‫کانتر‬ /‫تایمر‬ ‫سرریز‬ ‫)پرچم‬
•.‫شود‬ ‫می‬ ‫یک‬ ‫بیت‬ ‫این‬ ‫تایمر‬ ‫سرریز‬ ‫با‬
•‫وقفه‬ ‫اجرای‬ ‫هنگام‬ ‫همچنین‬ .‫نمود‬ ‫پاک‬ ‫را‬ ‫آن‬ ‫توان‬ ‫می‬ ‫بیت‬ ‫این‬ ‫در‬ ‫یک‬ ‫نوشتن‬ ‫با‬
‫بیت‬ ،‫مربوطه‬TOV0.‫شد‬ ‫خواهد‬ ‫پاک‬ ‫افزار‬ ‫سخت‬ ‫توسط‬ ‫خودکار‬ ‫بصورت‬
‫بیت‬TOIE0‫از‬TIMSK(‫صفر‬ ‫کانتر‬ /‫تایمر‬ ‫سرریز‬ ‫وقفه‬ ‫ساز‬ ‫)توانا‬
•‫وقتصی‬TOIE0‫بیت‬ ‫و‬ ‫شود‬ ‫یصک‬I‫رجیستر‬ ‫در‬ (‫سصراسری‬ ‫وقفصه‬ ‫سصاز‬ ‫)فعال‬
SREG.‫شد‬ ‫خواهد‬ ‫فعال‬ ‫صفر‬ ‫کانتر‬ /‫تایمر‬ ‫سرریز‬ ‫وقفه‬ ‫باشد‬ ‫فعال‬ ‫نیز‬
•‫بیت‬ ‫که‬ ‫هنگامی‬TOV0‫وقفه‬ ‫پرچم‬ ‫رجیستر‬ ‫در‬)TIFR(‫وقفه‬ ‫یک‬ ‫شود‬ ‫فعال‬
.‫شد‬ ‫خواهد‬ ‫درخواست‬
8-58-5 ‫تایمرها‬ ‫برای‬ ‫زمانبندی‬ ‫محاسبه‬ ‫نحوه‬‫تایمرها‬ ‫برای‬ ‫زمانبندی‬ ‫محاسبه‬ ‫نحوه‬
•‫مثال‬:
•‫فرض‬ ‫صا‬‫ص‬‫ب‬‫صی‬‫ص‬‫داخل‬ ‫صاز‬‫ص‬‫س‬ ‫صان‬‫ص‬‫نوس‬1MHz‫تقسیم‬ ‫صب‬‫ص‬‫ضری‬ ‫و‬N=32‫و‬
TCNT0=0AH.‫نمایید‬ ‫محاسبه‬ ‫را‬ ‫سرریز‬ ‫پرچم‬ ‫شدن‬ ‫فعال‬ ‫تا‬ ‫زمان‬ ‫،مقدار‬
•=1MHz/32‫تایمر‬ ‫ساعت‬ ‫پالس‬ ‫فرکانس‬
•=32/1MHz=32us‫شمارش‬ ‫یک‬ ‫زمان‬ ‫مدت‬
•=256–TCNT0=256-10=246‫تایمر‬ ‫سرریزشدن‬ ‫برای‬ ‫لزم‬ ‫پالس‬ ‫تعداد‬
•=246*32us=7.872 ms‫تایمر‬ ‫شمارش‬ ‫زمان‬ ‫مدت‬
•‫مثال‬:
•‫داخلصی‬ ‫سصاز‬ ‫نوسصان‬ ‫از‬ ‫اسصتفاده‬ ‫فرض‬ ‫بصا‬8MHz‫زمان‬ ‫مدت‬ ‫تولید‬ ‫برای‬
0.1ms‫صفر‬ ‫تایمر‬ ‫در‬ ‫باید‬ ‫را‬ ‫عددی‬ ‫چه‬)TCNT0(‫؟‬ ‫داد‬ ‫قرار‬N
‫برابر‬ ‫را‬8.‫نمایید‬ ‫انتخاب‬
•: ‫حل‬
=8MHz/8=1MHz‫تایمر‬ ‫ساعت‬ ‫پالس‬ ‫فرکانس‬
=1/1MHz=1us‫شمارش‬ ‫یک‬ ‫زمان‬ ‫مدت‬
0.1ms/1us=100=‫مدت‬ ‫برای‬ ‫لزم‬ ‫پالس‬ ‫تعداد‬0.1ms
=256-100=156=9CH‫برای‬ ‫لزم‬ ‫عدد‬TCNT0
•‫مثال‬
•‫خارجصی‬ ‫کریسصتال‬ ‫از‬ ‫اسصتفاده‬ ‫فرض‬ ‫بصا‬16MHz‫مدت‬ ‫تولید‬ ‫برای‬
‫زمان‬10ms‫درتایمر‬ ‫باید‬ ‫را‬ ‫عددی‬ ‫چه‬‫یک‬)TCNT1(‫داد؟‬ ‫قرار‬
•‫تقسیم‬ ‫ضریب‬ ‫انتخاب‬ ‫فرض‬ ‫با‬ : ‫حل‬)N=64)64: ‫داریم‬
=16MHz / 64‫تایمر‬ ‫ساعت‬ ‫پالس‬ ‫فرکانس‬
=64/16MHz = 4us‫شمارش‬ ‫یک‬ ‫زمان‬ ‫مدت‬
=10ms / 4us= 2500‫زمان‬ ‫مدت‬ ‫برای‬ ‫لزم‬ ‫پالس‬ ‫تعداد‬10ms
=63036=F63CH‫برای‬ ‫لزم‬ ‫عدد‬TCNT1
•‫مثال‬
% ‫کاری‬ ‫چرخه‬ ‫با‬ ‫مربعی‬ ‫موج‬ ‫یک‬ ‫که‬ ‫بنویسید‬ ‫ای‬ ‫برنامه‬50‫پایه‬ ‫روی‬PORTB.0‫)میکرو‬AT90S8515(
‫روی‬ ‫فرکانس‬ (‫صفر‬ ‫تایمر‬ ‫کمک‬ ‫)به‬ .‫نمایید‬ ‫ایجاد‬PORTB.0‫را‬ ‫داخلی‬ ‫ساز‬ ‫)نوسان‬ ‫؟‬ ‫است‬ ‫چقدر‬4MHz‫در‬
:(‫بگیرید‬ ‫نظر‬
•‫فرض‬N=8
•‫زبان‬ ‫به‬ ‫برنامه‬C
#include<90s8515.h<
Void delay();
Void main()
}
DDRB=0x01; // PORTB.0=Output
PORTB=0x00;
TCCR0=0x00; // STOP Timer 0
TCNT0=0x00; // Timer value=0
While (1)}
PORTB.0=~PORTB.0;
delay();
}
}
----------------------- - //
Void delay()}
TCCR0=0x02; // START Timer0 with f =500KHz**
While(!(TIFR & 0x02))); // Until TOV0=1
TIFR1 |= 0x02; // Clear TOV0
}
•: ‫برنامه‬ ‫شرح‬
:‫شود‬ ‫می‬ ‫انجام‬ ‫زیر‬ ‫مراحل‬ ‫فوق‬ ‫برنامه‬ ‫در‬
1‫پورت‬ .B.‫شود‬ ‫می‬ ‫تعریف‬ ‫خروجی‬ ‫بصورت‬
2‫نوشتن‬ ‫با‬ ‫را‬ ‫صفر‬ ‫تایمر‬ .TCCR0=0. ‫کنیم‬ ‫می‬ ‫متوقف‬
3‫برابر‬ ‫را‬ ‫صفر‬ ‫تایمر‬ ‫اولیه‬ ‫مقدار‬ .TCNT0=0. ‫دهیم‬ ‫می‬ ‫قرار‬
4‫ی‬ ‫حلقصه‬ ‫در‬ .for‫پایصه‬PERTB.0‫توسط‬ ‫کصه‬ ‫زمانصی‬ ‫تاخیصر‬ ‫بصا‬ ‫را‬
‫برنامه‬ ‫زیر‬delay‫کنیم‬ ‫می‬ ‫یک‬ ‫و‬ ‫صفر‬ ‫تناوب‬ ‫به‬ .‫شود‬ ‫می‬ ‫ایجاد‬
% ‫زمانی‬ ‫ی‬ ‫چرخه‬ ‫با‬ ‫مربعی‬ ‫موج‬ ‫خروجی‬ ‫در‬ ‫تا‬50.‫شود‬ ‫تولید‬
5‫برنامه‬ ‫زیر‬ ‫در‬ .delay:
‫فرکانس‬ ‫برای‬ ‫را‬ ‫صفر‬ ‫تایمر‬ ‫ساعت‬ ‫پالس‬ ‫ابتدا‬ -‫الف‬500KHz.‫میکنیم‬ ‫تنظیم‬
‫مقدار‬ ‫نوشتن‬ ‫با‬ ‫را‬ ‫کار‬ ‫این‬02H‫رجیستر‬ ‫در‬TCCR0. ‫دهیم‬ ‫می‬ ‫انجام‬
‫مقدار‬ ‫از‬ ‫شمارش‬ ‫به‬ ‫شروع‬ ‫تایمر‬ -‫ب‬00H‫تا‬FFH.‫نماید‬ ‫می‬
‫ی‬ ‫درحلقصه‬ -‫ج‬while‫منتظصر‬ ‫برنامصه‬‫مصی‬‫تایمرصفرفعال‬ ‫سصرریز‬ ‫بیصت‬ ‫تصا‬ ‫مانصد‬
.‫شود‬
‫در‬ ‫یک‬ ‫نوشتن‬ ‫با‬ ،‫صفر‬ ‫تایمر‬ ‫سرریز‬ ‫بیت‬ ‫شدن‬ ‫فعال‬ ‫از‬ ‫پس‬ -‫د‬TOV0‫را‬ ‫آن‬
.‫کنیم‬ ‫می‬ ‫پاک‬
‫مرحله‬ ‫به‬ ‫بازگشت‬ -‫ه‬4.
8-68-6‫پیشرفتصه‬ ‫بیتصی‬ ‫هشصت‬ ‫حالصت‬ ‫در‬ ‫صصفر‬ ‫تایمصر/کانتصر‬‫پیشرفتصه‬ ‫بیتصی‬ ‫هشصت‬ ‫حالصت‬ ‫در‬ ‫صصفر‬ ‫تایمصر/کانتصر‬
•‫های‬ ‫سری‬ ‫در‬ ‫پیشرفته‬ ‫بیتصی‬ ‫هشت‬ ‫عملکرد‬ ‫حالت‬ATmega‫)به‬
‫از‬ ‫غیر‬ATmega8‫و‬ATmega163.‫دارد‬ ‫قرار‬ (
•‫موارد‬ ‫به‬ ‫توان‬ ‫مصی‬ ‫مدل‬ ‫ایصن‬ ‫در‬ ‫صصفر‬ ‫تایمصر/کانتصر‬ ‫خصصوصیات‬ ‫از‬
:‫کرد‬ ‫اشاره‬ ‫زیر‬
1‫عادی‬ ‫حالت‬ ‫در‬ ‫کانتر‬ / ‫تایمر‬ .
2‫مقایسه‬ ‫حالت‬ ‫در‬ ‫کانتر‬ / ‫تایمر‬ .)CTC(
3‫حالت‬ ‫در‬ ‫کانتر‬ / ‫تایمر‬ .PWM( ‫شیب‬ ‫تک‬ ) ‫سریع‬
4‫حالت‬ ‫در‬ ‫کانتر‬ / ‫تایمر‬ .PWM(‫شیب‬ ‫)دو‬ ‫فاز‬ ‫تصحیح‬
8-78-7‫عملکرد‬ ‫مد‬ ‫در‬ ‫صفر‬ ‫کانتر‬ /‫تایمر‬ ‫به‬ ‫مربوط‬ ‫رجیسترهای‬‫عملکرد‬ ‫مد‬ ‫در‬ ‫صفر‬ ‫کانتر‬ /‫تایمر‬ ‫به‬ ‫مربوط‬ ‫رجیسترهای‬
‫بیتی‬ ‫هشت‬‫بیتی‬ ‫هشت‬
•‫خروجی‬ ‫مقایسه‬ ‫رجیستر‬)OCR0(
•‫صفر‬ ‫کانتر‬ / ‫تایمر‬ ‫رجیستر‬)TCNT0(
•‫صفر‬ ‫کانتر‬ / ‫تایمر‬ ‫کنترلی‬ ‫رجیستر‬)TCCR0(
‫رجیستر‬‫رجیستر‬TCCR0TCCR0
•‫ساعت‬ ‫پالس‬ ‫انتخاب‬ ‫های‬ ‫بیت‬)CS02,CS01,CS00(
.‫شد‬ ‫گفته‬ ‫ساده‬ ‫تایمر‬ ‫حالت‬ ‫در‬ ‫آنچه‬ ‫شبیه‬
•‫مقایسه‬ ‫تطابق‬ ‫خروجی‬ ‫حالت‬ ‫های‬ ‫بیت‬)COM01:0(:
‫پایه‬ ، ‫شود‬ ‫یک‬ ‫ها‬ ‫بیت‬ ‫این‬ ‫هردوی‬ ‫یا‬ ‫یکی‬ ‫اگصر‬OC0‫واحد‬ ‫خروجی‬ ‫به‬
‫عنوان‬ ‫به‬ ‫آن‬ ‫از‬ ‫توان‬ ‫نمی‬ ‫دیگر‬ ‫و‬ ‫شد‬ ‫خواهد‬ ‫متصل‬ ‫موج‬ ‫شکل‬ ‫تولید‬I/O
) ‫گردد‬ ‫خروجی‬ ‫باید‬ ‫پایه‬ ‫این‬ ‫حالت‬ ‫این‬ ‫در‬ .‫نمود‬ ‫استفاده‬ ‫معمولی‬DDRx(
‫جدول‬ ‫یا‬ ‫شیت‬ ‫دیتا‬ ‫به‬ ‫بیشتر‬ ‫جزییات‬ ‫برای‬8-4.‫گردد‬ ‫مراجعه‬
•‫های‬ ‫بیت‬WGM01:0:
/ ‫تایمر‬ ‫شده‬ ‫پشتیبانی‬ ‫عملکرد‬ ‫های‬ ‫حالت‬ ‫توان‬ ‫می‬ ‫بیت‬ ‫دو‬ ‫این‬ ‫توسط‬
، ‫عادی‬ ‫عملکرد‬ : ‫از‬ ‫عبارتند‬ ‫که‬ ‫را‬ ‫کانتر‬CTC ،PWM‫سریع‬
‫و‬PWM.‫نمود‬ ‫انتخاب‬ ‫را‬ ‫فاز‬ ‫تصحیح‬
‫جدول‬ ‫یا‬ ‫دیتاشیت‬ ‫به‬ ‫بیشتر‬ ‫جزییات‬ ‫برای‬8-5.‫گردد‬ ‫مراجعه‬
•‫خروجی‬ ‫مقایسه‬ ‫بیت‬)FOC0(:
‫کردن‬ ‫یک‬ ‫با‬FOC0‫پایه‬ ‫وضعیت‬OC0‫آن‬ ‫تنظیمات‬ ‫به‬ ‫توجه‬ ‫با‬
.‫کند‬ ‫می‬ ‫تغییر‬ ‫تطابق‬ ‫لحظه‬ ‫شبیه‬
‫خروجی‬ ‫مقایسه‬ ‫پرچم‬ ‫ولی‬)OCF0(‫ای‬ ‫وقفه‬ ‫و‬ ‫شد‬ ‫نخواهد‬ ‫فعال‬
‫و‬ ‫رجیستر‬ ‫هییچ‬ ‫بر‬ ‫تاثیری‬ ‫کیل‬ ‫در‬ ‫بییت‬ ‫.این‬ ‫شود‬ ‫نمیی‬ ‫تولیید‬ ‫نییز‬
.‫گذارد‬ ‫نمی‬ ‫پرچمی‬
8-88-8‫عادی‬ ‫حالت‬ ‫در‬ ‫صفر‬ ‫/کانتر‬ ‫تایمر‬‫عادی‬ ‫حالت‬ ‫در‬ ‫صفر‬ ‫/کانتر‬ ‫تایمر‬
•‫جهت‬ .‫اسیت‬ ‫عادی‬ ‫حالیت‬ ‫کانتیر‬ / ‫تایمیر‬ ‫عملکرد‬ ‫حالیت‬ ‫تریین‬ ‫سیاده‬
‫رجیستر‬ ‫مقدار‬ ‫رسیدن‬ ‫از‬ ‫پس‬ ‫و‬ ‫بوده‬ ( ‫)افزایشی‬ ‫بال‬ ‫به‬ ‫رو‬ ‫شمارش‬
TCNT0‫بیه‬TOP‫مقدار‬ ‫از‬ ‫دوباره‬BOTTOM‫به‬ ‫شروع‬
‫سرریز‬ ‫پرچم‬ ‫و‬ ‫نموده‬ ‫شمارش‬TOV0‫تایمر‬ ‫)در‬ .‫شد‬ ‫خواهد‬ ‫فعال‬
8‫بیتی‬TOP=0xFF‫و‬BOTTOM=0x00(‫است‬
‫شکل‬8-6‫عادی‬ ‫حالت‬ ‫در‬ ‫تایمر‬ ‫عملکرد‬
8-98-9‫حالت‬ ‫در‬ ‫کانترصفر‬ / ‫تایمر‬ ‫عملکرد‬‫حالت‬ ‫در‬ ‫کانترصفر‬ / ‫تایمر‬ ‫عملکرد‬))CTCCTC((
•‫مد‬ ‫عملکرد‬CTC‫مقدار‬ ‫حداکثر‬ ‫که‬ ‫تفاوت‬ ‫این‬ ‫با‬ ‫است‬ ‫عادی‬ ‫مد‬ ‫مشابه‬ ‫کامل‬
‫جای‬ ‫به‬ ‫شمارش‬0xFF‫رجیستر‬ ‫در‬ ‫موجود‬ ‫عدد‬ ،OCR0.‫است‬
•‫رجیستر‬ ‫مقدار‬ ‫تغییر‬OCR0‫باید‬ ‫است‬ ‫شمارش‬ ‫حال‬ ‫در‬ ‫تایمر‬ ‫که‬ ‫زمانی‬ ‫در‬
‫حالیت‬ ‫کیه‬ ‫زیرا‬ ، ‫شود‬ ‫انجام‬ ‫احتیاط‬ ‫بیا‬CTC‫نمی‬ ‫مضاعیف‬ ‫بافیر‬ ‫دارای‬
‫رجیستر‬ ‫در‬ ‫موجود‬ ‫مقدار‬ ‫تغییر‬ ‫با‬ ‫زیرا‬ . ‫باشد‬OCR0‫تغییر‬ ‫مقایسه‬ ‫مبنای‬
‫رجیستر‬ ‫از‬ ‫کمتر‬ ‫جدید‬ ‫مقدار‬ ‫که‬ ‫است‬ ‫ممکن‬ ‫و‬ ‫کند‬ ‫می‬TCNT0‫و‬ ‫باشد‬
.‫برود‬ ‫دست‬ ‫از‬ ‫مقایسه‬
•‫یک‬ ‫وقفه‬ ‫بودن‬ ‫فعال‬ ‫صورت‬ ‫در‬ ‫تطابق‬ ‫لحظه‬ ‫در‬ ، ‫شمارش‬ ‫مابین‬ ‫چنانچه‬
.‫شود‬ ‫می‬ ‫ایجاد‬ ‫مقایسه‬ ‫وقفه‬
‫شکل‬8-8‫حالت‬ ‫در‬ ‫صفر‬ ‫کانتر‬ / ‫تایمر‬ ‫توسط‬ ‫موج‬ ‫شکل‬ ‫تولید‬ ‫نحوه‬CTC
‫مضاعف‬ ‫بافر‬‫مضاعف‬ ‫بافر‬
•‫مقدار‬ ‫تغییر‬ ‫زمان‬ ‫در‬ ‫اشتباه‬ ‫از‬ ‫جلوگیری‬ ‫برای‬OCR0‫به‬ ‫رجیستر‬ ‫این‬
.‫رود‬ ‫می‬ ‫کار‬ ‫به‬ ‫مضاعف‬ ‫بافر‬ ‫صورت‬
•‫در‬ ‫جدید‬ ‫مقدار‬ ‫نوشتن‬ ‫با‬ ،‫شمارش‬ ‫هنگام‬ ‫در‬ ‫که‬ ‫صورت‬ ‫بدین‬OCR0‫آن‬
‫اصلی‬ ‫رجیستر‬ ‫داخل‬ ‫مقدار‬OCR0‫بافر‬ ‫یک‬ ‫در‬ ‫بلکه‬ ، ‫شود‬ ‫نمی‬ ‫بار‬
‫نام‬ ‫همان‬ ‫به‬ ‫دیگر‬)OCR0(‫رسیدن‬ ‫هنگام‬ ‫در‬ ‫و‬ ‫شده‬ ‫ذخیره‬TCNT0
‫اصیلی‬ ‫رجیسیتر‬ ‫در‬ ‫جدیید‬ ‫مقدار‬ ‫قلیه‬ ‫مقدار‬ ‫بیه‬OCR0‫و‬ ‫گردد‬ ‫می‬ ‫بار‬
‫با‬ ‫شمارش‬ ‫جدید‬ ‫دوره‬OCR0.‫شد‬ ‫خواهد‬ ‫مقایسه‬ ‫جدید‬
•‫عملکرد‬ ‫حالت‬ ‫در‬ ‫فقیط‬ ‫مضاعیف‬ ‫بافیر‬ ‫کیه‬ ‫اسیت‬ ‫ضروری‬ ‫نکتیه‬ ‫ایین‬ ‫ذکیر‬
PWM.‫شود‬ ‫می‬ ‫فعال‬
•‫مثال‬
‫هیر‬ ‫کیه‬ ‫بنویسیید‬ ‫ای‬ ‫برنامیه‬1ms‫پایه‬oc0 ( PORTB.4‫در‬ATmega64‫را‬ (
. ( ‫صفر‬ ‫تایمر‬ ‫مقایسه‬ ‫عملکرد‬ ‫کمک‬ ‫به‬ )‫نماید‬ ‫مکمل‬
‫سیستم‬ ‫ساعت‬ ‫پالس‬ ‫فرکانس‬ ‫فرض‬ ‫با‬ : ‫حل‬8MHz:
#include <mega64.h<
Void main()}
DDRB=0X10 ; //PORTB.4(OC0)=OUTPUT
TCNT0=0x0 //Value Timer0=00H
OCR0= 0x7C //OCRO=124
TCCR0=0x1C // f= 125KHz,MODE CTC,OC0=Toggle
//and START Timer 0
While(1);
}
•‫مثال‬
‫پاییه‬ ‫کیه‬ ‫بنویسیید‬ ‫ای‬ ‫برنامیه‬oc0 ( PORTB.4‫در‬ATmega64‫توسط‬ (FOC0
.‫شود‬ ‫مکمل‬
:‫حل‬
#include <mega64.h<
Void main()}
DDRB=0X10 ; //PORTB.4(OC0)=OUTPUT
While(1)}
TCCR0=0x90 ; //FOC0=1 ,OC0 = Toggle
}
}
8-108-10‫حالت‬ ‫در‬ ‫تایمر/کانترصفر‬ ‫عملکرد‬‫حالت‬ ‫در‬ ‫تایمر/کانترصفر‬ ‫عملکرد‬PWMPWM
( ‫شیب‬ ‫تک‬ ) ، ‫سریع‬( ‫شیب‬ ‫تک‬ ) ، ‫سریع‬
PWM‫چیست؟‬
•‫گیر‬ ‫انتگرال‬ ‫یک‬ ‫با‬ ‫و‬ ‫بوده‬ ‫ساده‬ ‫بسیار‬ ‫مدولسیون‬ ‫این‬ ‫سازی‬ ‫آشکار‬
.‫نمود‬ ‫بازسازی‬ ‫را‬ ‫شده‬ ‫مدوله‬ ‫موج‬ ‫توان‬ ‫می‬
•‫آنالوگ‬ ‫به‬ ‫دیجیتال‬ ‫مبدل‬ ‫طراحی‬ ‫در‬ ‫روش‬ ‫این‬ ‫از‬)DAC(‫استفاده‬
.‫شود‬ ‫می‬
•‫کاربردهای‬ ‫دیگیر‬ ‫از‬PWM‫موتورهای‬ ‫دور‬ ‫کنترل‬ ‫به‬ ‫توان‬ ‫میی‬
DC,AC.‫برد‬ ‫نام‬ ... ‫و‬ ‫سوئیچینگ‬ ‫تغذیه‬ ‫منابع‬ ‫و‬
‫شکل‬‫شکل‬88--1111‫موج‬ ‫تولید‬‫موج‬ ‫تولید‬PWMPWM‫مختلف‬ ‫پهنای‬ ‫سه‬ ‫در‬‫مختلف‬ ‫پهنای‬ ‫سه‬ ‫در‬
‫شکل‬‫شکل‬88--1313‫موج‬ ‫تولید‬‫موج‬ ‫تولید‬PWMPWM‫با‬‫با‬OCR0=60OCR0=60
•‫فرکانس‬PWM:‫کرد‬ ‫محاسبه‬ ‫زیر‬ ‫رابطه‬ ‫از‬ ‫توان‬ ‫می‬ ‫را‬ ‫خروجی‬
•fpwm=fclk-I/O / N*256
8-118-11‫حالت‬ ‫در‬ ‫صفر‬ ‫تایمر/کانتر‬ ‫عملکرد‬‫حالت‬ ‫در‬ ‫صفر‬ ‫تایمر/کانتر‬ ‫عملکرد‬PWMPWM‫فاز‬ ‫تصحیح‬‫فاز‬ ‫تصحیح‬
•PWM‫تری‬ ‫پایین‬ ‫تولیدی‬ ‫فرکانیس‬ ‫دارای‬ ‫فاز‬ ‫تصیحیح‬ ‫روش‬ ‫بیه‬
‫بیه‬ ‫نسبت‬PWM‫متقارن‬ ‫به‬ ‫توجیه‬ ‫بیا‬ ‫وجود‬ ‫ایین‬ ‫باشد.بیا‬ ‫میی‬ ‫سیریع‬
‫عملکرد‬ ‫بودن‬PWM‫دور‬ ‫کنترل‬ ‫در‬ ‫بیشتر‬ ‫آین‬ ‫از‬ ، ‫فاز‬ ‫تصیحیح‬
‫شود‬ ‫می‬ ‫استفاده‬ ‫.موتور‬
•‫صفر‬ ‫تایمر‬ ‫سرریز‬ ‫پرچم‬ ‫که‬ ‫است‬ ‫این‬ ‫مهم‬ ‫نکته‬ ‫یک‬)TOV0(
‫رجیسیتر‬ ‫کیه‬ ‫شود‬ ‫میی‬ ‫فعال‬ ‫زمانیی‬TCNT0‫نه‬ ‫باشید‬ ‫صیفر‬ ‫برابر‬
FFH‫اگر‬ ‫تایمر‬ ‫کار‬ ‫به‬ ‫شروع‬ ‫زمان‬ ‫در‬ ‫که‬ ‫داشت‬ ‫توجه‬ ‫باید‬ ‫پس‬ ،
TCNT0=0.‫شد‬ ‫خواهد‬ ‫فعال‬ ‫سرریز‬ ‫پرچم‬ ، ‫باشد‬
•‫فرکانس‬PWM‫محاسبه‬ ‫قابل‬ ‫زیر‬ ‫معادله‬ ‫طبق‬ ‫فاز‬ ‫تصحیح‬ ‫حالت‬ ‫در‬
: ‫است‬
•fpwm=fclk-I/O / N*510
‫شکل‬‫شکل‬88--1818‫موج‬‫موج‬PWMPWM‫فازدر‬ ‫تصحیح‬‫فازدر‬ ‫تصحیح‬OCR0=10HOCR0=10H
‫شکل‬‫شکل‬88--1919‫حالت‬ ‫در‬ ‫صفر‬ ‫تایمر‬ ‫عملکرد‬‫حالت‬ ‫در‬ ‫صفر‬ ‫تایمر‬ ‫عملکرد‬PWMPWM
‫مضاعف‬ ‫بافر‬ ‫و‬ ‫فاز‬ ‫تصحیح‬‫مضاعف‬ ‫بافر‬ ‫و‬ ‫فاز‬ ‫تصحیح‬
8-128-12‫سه‬ ‫و‬ ‫یک‬ ‫بیتی‬ ‫کانترشانزده‬ / ‫تایمر‬‫سه‬ ‫و‬ ‫یک‬ ‫بیتی‬ ‫کانترشانزده‬ / ‫تایمر‬
•‫اشاره‬ ‫زیر‬ ‫موارد‬ ‫به‬ ‫توان‬ ‫می‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ /‫تایمر‬ ‫عملکرد‬ ‫های‬ ‫حالت‬ ‫از‬
:‫نمود‬
1‫عادی‬ ‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ /‫تایمر‬ .
2‫مقایسه‬ ‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ .)CTC(
3‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ .PWM(‫شیب‬ ‫)تک‬ ‫سریع‬
4‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ .PWM(‫شیب‬ ‫)دو‬ ‫فاز‬ ‫تصحیح‬
5‫حاللت‬ ‫در‬ ‫سله‬ ‫و‬ ‫یلک‬ ‫کانتلر‬ / ‫تایملر‬ .PWM‫)در‬ ‫فرکانس‬ ‫و‬ ‫فاز‬ ‫تصلحیح‬
‫از‬ ‫برخی‬AVR( ‫ها‬
‫کانتر‬ / ‫تایمر‬ ‫رجیستر‬TCNTx
•TCNTx‫است‬ ‫شده‬ ‫تشکیل‬ ‫بایت‬ ‫دو‬ ‫از‬ .
•‫به‬ ‫پاییلن‬ ‫و‬ ‫بال‬ ‫بایلت‬ ‫هردو‬ ‫اینکله‬ ‫از‬ ‫اطمینان‬ ‫برای‬ ‫کنترللر‬ ‫میکرو‬
‫اختیار‬ ‫در‬ ‫همزمان‬ ‫طور‬CPU‫موقت‬ ‫رجیسلتر‬ ‫یلک‬ ‫گیرد‬ ‫قرار‬
)TEMP(‫نمی‬ ‫کاربر‬ ‫اختیار‬ ‫در‬ ‫رجیستر‬ ‫گیرد.این‬ ‫می‬ ‫کار‬ ‫به‬ ‫را‬
.‫باشد‬
‫در‬ ‫نوشتن‬ ‫عملیات‬TCNTx:
•CPU‫در‬ ‫نوشتلن‬ ‫هنگام‬ ‫در‬TCNTx‫رجیستر‬ ‫در‬ ‫را‬ ‫بال‬ ‫بایلت‬ ‫ابتدا‬
‫موقت‬(TEMP)‫که‬ ‫هنگامی‬ ‫سپس‬ ‫و‬ ‫داده‬ ‫قرار‬CPU‫بایت‬ ‫در‬‫پایین‬
TCNTxL‫در‬ ‫شده‬ ‫نوشته‬ ‫بایت‬ ‫زمان‬ ‫همین‬ ‫در‬ ، ‫نویسد‬ ‫می‬TEMP
‫در‬ ‫نیلز‬TCNTxH‫در‬ ‫نوشتن‬ ‫هنگام‬ ‫گرفت.بنابرایلن‬ ‫خواهلد‬ ‫قرار‬
TCNTx‫باید‬ ‫ابتدا‬TCNTxH‫شود‬ ‫.نوشته‬
TCNT1H=a;
TCNT1L=b;
‫یا‬
TCNT1=c;
‫از‬ ‫خواندن‬ ‫عملیات‬TCNTx
•CPU‫پایین‬ ‫بایلت‬ ‫ابتدا‬ ، ‫خواندن‬ ‫هنگام‬(TCNTxL)‫در‬ ‫و‬ ‫خوانده‬ ‫را‬
‫بال‬ ‫بایت‬ ‫زمان‬ ‫همان‬(TCNTxH)‫رجیستر‬ ‫در‬TEMP.‫گیرد‬ ‫می‬ ‫قرار‬
‫هنگامیکله‬ ‫سلپس‬CPU‫مقدار‬ ‫بخواند‬ ‫را‬ ‫بال‬ ‫بایلت‬ ‫محتوای‬ ‫بخواهلد‬
TEMP‫خواند‬ ‫خواهد‬ ‫.را‬
•‫از‬ ‫خواندن‬ ‫برای‬ ‫بنابراین‬TCNTx‫باید‬ ‫ابتدا‬TCNTxL.‫شود‬ ‫خوانده‬
a=TCNT1L;
b=TCNT1H;
‫یا‬
c=TCNT1;
•‫کلی‬ ‫بطور‬CPU‫بیتی‬ ‫شانزده‬ ‫رجیسترهای‬ ‫تمام‬ ‫به‬ ‫دستیابی‬ ‫برای‬
.‫نماید‬ ‫می‬ ‫استفاده‬ ‫شده‬ ‫ذکر‬ ‫روش‬ ‫از‬
•‫به‬ ‫دسلتیابی‬ ‫العملل‬ ‫دسلتور‬ ‫دو‬ ‫مابیلن‬ ‫وقفله‬ ‫یلک‬ ‫اگلر‬TCNTx‫ایجاد‬
‫قبل‬ ‫باید‬ ‫بنابراین‬ .‫شود‬ ‫خطا‬ ‫دچار‬ ‫است‬ ‫ممکن‬ ‫دستیابی‬ ‫نتیجه‬ ، ‫شود‬
‫به‬ ‫دستیابی‬ ‫از‬TCNTx‫و‬ ‫نموده‬ ‫فعال‬ ‫غیر‬ ‫را‬ ‫سراسری‬ ‫وقفه‬ ‫ابتدا‬
.‫نمود‬ ‫فعال‬ ‫را‬ ‫آن‬ ‫دستیابی‬ ‫از‬ ‫بعد‬
sreg=SREG;
#asm(“cli”)
TCNT1=0x00FF;
SREG=sreg;
8-138-13‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ ‫خروجی‬ ‫مقایسه‬ ‫رجیسترهای‬‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ ‫خروجی‬ ‫مقایسه‬ ‫رجیسترهای‬
))OCRxC,OCRxB,OCRxAOCRxC,OCRxB,OCRxA((
‫دستیابی‬ ‫طریقه‬CPU‫به‬ ‫دستیابی‬ ‫همانند‬ ‫رجیسترها‬ ‫این‬ ‫به‬
TCNTx.‫است‬
8-148-14‫وسه‬ ‫کانتریک‬ /‫تایمر‬ ‫کنترلی‬ ‫رجیسترهای‬‫وسه‬ ‫کانتریک‬ /‫تایمر‬ ‫کنترلی‬ ‫رجیسترهای‬
))TCCRxB,TCCRxATCCRxB,TCCRxA((
•‫تایملر‬ ‫کنترل‬ ‫کار‬ ‫مجموعلا‬ ‫رجیسلتر‬ ‫دو‬ ‫ایلن‬16‫عهده‬ ‫به‬ ‫را‬ ‫بیتلی‬
‫تایمر‬ ‫در‬ ‫آنچله‬ ‫بله‬ ‫شبیله‬ ‫عملکردی‬ ‫هلا‬ ‫رجیسلتر‬ ‫ایلن‬ ‫بیتهای‬ .‫دارند‬
‫به‬ ‫بیشتلر‬ ‫توضیحات‬ ‫برای‬ .‫دارند‬ ‫شلد‬ ‫گفتله‬ ‫پیشرفتله‬ ‫بیتلی‬ ‫هشلت‬
.‫شود‬ ‫مراجعه‬ ‫دیتاشیت‬
•‫هنگامی‬ ‫داشلت‬ ‫توجله‬ ‫نکتله‬ ‫ایلن‬ ‫بله‬ ‫بایلد‬‫که‬OCXA, OCXB,
OCXC‫به‬ ‫مربوطه‬ ‫پورت‬ ‫بایستی‬ ‫شود‬ ‫می‬ ‫متصل‬ ‫خروجی‬ ‫پایه‬ ‫به‬
.‫شود‬ ‫پیکربندی‬ ‫خروجی‬ ‫صورت‬
8-158-15‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ ‫عملکرد‬‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ ‫عملکرد‬
‫عادی‬‫عادی‬))WGMx3:0=0WGMx3:0=0((
•‫این‬ ‫زیرا‬ ،‫شود‬ ‫نمی‬ ‫توصیه‬ ‫عادی‬ ‫عملکرد‬ ‫حالت‬ ‫در‬ ‫موج‬ ‫شکل‬ ‫تولید‬
‫از‬ ‫زیادی‬ ‫زمان‬ ‫املر‬CPU‫بهتری‬ ‫های‬ ‫.گزینه‬ ‫کند‬ ‫ملی‬ ‫اشغال‬ ‫را‬
.‫دارد‬ ‫وجود‬ ‫موج‬ ‫شکل‬ ‫تولید‬ ‫برای‬
‫یک‬ ‫تایمر‬ ‫خروجی‬ ‫های‬ ‫پایه‬ ‫عملکرد‬ ‫از‬ ‫ای‬ ‫نمونه‬
8-168-16‫مقایسه‬ ‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ ‫عملکرد‬‫مقایسه‬ ‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ ‫عملکرد‬))CTCCTC((
•‫جهت‬ ‫تواند‬ ‫می‬ ‫وقفه‬ ‫روال‬ ، ‫باشد‬ ‫فعال‬ ‫وقفه‬ ‫اگر‬Update‫مقدار‬ ‫نمودن‬TOP
‫تغییر‬ ‫حال‬ ‫این‬ ‫با‬ .‫رود‬ ‫کار‬ ‫به‬TOP‫در‬ ‫تایمر‬ ‫که‬ ‫هنگامی‬ ‫جدید‬ ‫مقدار‬ ‫یک‬ ‫به‬
‫حالت‬ ‫زیرا‬ ،‫شود‬ ‫انجام‬ ‫احتیاط‬ ‫با‬ ‫باید‬ ‫است‬ ‫شمارش‬ ‫حال‬CTC‫ویژگی‬ ‫دارای‬
.‫باشد‬ ‫نمی‬ ‫مضاعف‬ ‫بافر‬
8-178-17‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ ‫عملکرد‬‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ ‫عملکرد‬
PWMPWM
‫موج‬ ‫تولید‬PWM‫تایمر‬ ‫خروجی‬ ‫های‬ ‫پایه‬ ‫روی‬
8-188-18‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫کانتریک‬ / ‫تایمر‬ ‫عملکرد‬‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫کانتریک‬ / ‫تایمر‬ ‫عملکرد‬PWMPWM
(‫شیب‬ ‫)دو‬ ، ‫فاز‬ ‫تصحیح‬(‫شیب‬ ‫)دو‬ ، ‫فاز‬ ‫تصحیح‬
‫شکل‬‫شکل‬88--3030‫حالت‬ ‫تایمردر‬ ‫عملکرد‬ ‫از‬ ‫ای‬ ‫نمونه‬‫حالت‬ ‫تایمردر‬ ‫عملکرد‬ ‫از‬ ‫ای‬ ‫نمونه‬PWMPWM‫فاز‬ ‫تصحیح‬‫فاز‬ ‫تصحیح‬
‫شکل‬‫شکل‬88--3131‫موج‬ ‫خروجی‬‫موج‬ ‫خروجی‬PWMPWM‫نامتقارن‬ ‫بصورت‬‫نامتقارن‬ ‫بصورت‬
8-198-19‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫کانتریک‬ /‫تایمر‬ ‫عملکرد‬‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫کانتریک‬ /‫تایمر‬ ‫عملکرد‬PWMPWM
‫فرکانس‬ ‫و‬ ‫فاز‬ ‫تصحیح‬‫فرکانس‬ ‫و‬ ‫فاز‬ ‫تصحیح‬
•‫این‬ ‫عملکرد‬PWM‫همانند‬PWM‫موجود‬ ‫تفاوت‬ ‫.تنها‬ ‫باشد‬ ‫می‬ ‫فاز‬ ‫تصحیح‬
‫رجیسترهای‬ ‫بروزرسانی‬ ‫زمان‬ ‫در‬OCRxC,OCRxB,OCRxA. ‫است‬
‫به‬‫ب‬‫ب‬ ،‫بر‬‫ب‬‫تایم‬ ‫شمارنده‬ ‫مقدار‬ ‫به‬‫ب‬‫ک‬ ‫بی‬‫ب‬‫هنگام‬)00H)BOTTOM‫این‬ ‫بید‬‫ب‬‫رس‬
.‫شوند‬ ‫می‬ ‫بروز‬ ‫رجیسترها‬
•‫برخل ف‬PWM‫رجیسترهای‬ ‫شدن‬ ‫بروز‬ ‫بت‬‫ب‬‫عل‬ ‫به‬‫ب‬‫ب‬ ‫به‬‫ب‬‫ک‬ ‫فاز‬ ‫بحیح‬‫ب‬‫تص‬
OCRxA,B,C‫در‬TOP.‫شود‬ ‫می‬ ‫نامتقارن‬ ‫خروجی‬ ‫تولید‬ ‫به‬ ‫منجر‬
•‫در‬PWM‫در‬ ‫شدن‬ ‫بروز‬ ‫بعلت‬ ‫فرکانبس‬ ‫و‬ ‫فاز‬ ‫تصبحیح‬BOTTOM
‫شکل‬ .‫بود‬ ‫خواهد‬ ‫متقارن‬ ‫صورت‬ ‫به‬ ‫خروجی‬8-33.
‫شکل‬‫شکل‬88--3333‫موج‬ ‫متقارن‬ ‫خروجی‬‫موج‬ ‫متقارن‬ ‫خروجی‬PWMPWM‫تصحیح‬ ‫حالت‬ ‫در‬‫تصحیح‬ ‫حالت‬ ‫در‬
‫فرکانس‬ ‫و‬ ‫فاز‬‫فرکانس‬ ‫و‬ ‫فاز‬
8-208-20‫تسخیر‬ ‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫/کانتر‬ ‫تایمر‬‫تسخیر‬ ‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫/کانتر‬ ‫تایمر‬
•‫پایه‬ ‫حالت‬ ‫این‬ ‫در‬ICPx‫پایه‬ ‫کنترلرها‬ ‫میکرو‬ ‫از‬ ‫برخی‬ ‫)در‬ICx‫به‬ (
‫بال‬ ‫لبه‬ ‫در‬ ‫سیگنالی‬ ‫که‬ ‫هنگامی‬ ‫و‬ ‫شود‬ ‫می‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫ورودی‬ ‫عنوان‬
‫رجیستر‬ ‫محتوای‬ ، ‫شود‬ ‫مبی‬ ‫اعمال‬ ‫پایبه‬ ‫ایبن‬ ‫ببه‬ ‫رونده‬ ‫پاییبن‬ ‫یبا‬ ‫رونده‬
TCNTx‫تسخیر‬ ‫بایتی‬ ‫دو‬ ‫رجیستر‬ ‫در‬)ICRx(‫پرچم‬ ‫و‬ ‫گیرد‬ ‫می‬ ‫قرار‬
ICFx. ‫رود‬ ‫می‬ ‫بال‬
•.‫شود‬ ‫می‬ ‫اجرا‬ ‫نیز‬ ‫وقفه‬ ‫روال‬ ، ‫مربوطه‬ ‫وقفه‬ ‫بودن‬ ‫فعال‬ ‫صورت‬ ‫در‬
•‫گر‬ ‫مقایسبه‬ ‫خروجبی‬ ‫آبن‬ ‫و‬ ‫دارد‬ ‫وجود‬ ‫تسبخیر‬ ‫برای‬ ‫نیبز‬ ‫دیگری‬ ‫منببع‬
‫آنالوگ‬)ACO(. ‫باشد‬ ‫می‬
•‫رجیستر‬ICRx:
•‫شانزده‬ ‫رجیسترهای‬ ‫همانند‬ ‫رجیستر‬ ‫این‬ ‫در‬ ‫نوشتن‬ ‫و‬ ‫خواندن‬ ‫طریقه‬
.‫است‬ ‫قبل‬ ‫در‬ ‫شده‬ ‫تشریح‬ ‫بیتی‬
•‫رجیستر‬ ‫در‬ ‫البته‬ICRx‫به‬ ‫آن‬ ‫از‬ ‫که‬ ‫نوشت‬ ‫توان‬ ‫می‬ ‫هنگامی‬ ‫تنها‬
‫مقدار‬ ‫عنوان‬TOP.‫شود‬ ‫استفاده‬ ‫موج‬ ‫شکل‬ ‫تولید‬ ‫حالت‬ ‫در‬ ‫تایمر‬
•:‫نویز‬ ‫کاهش‬ ‫واحد‬
‫بیت‬ ‫تنظیم‬ ‫با‬ ‫واحد‬ ‫این‬ICNCx‫رجیستر‬ ‫در‬TCCRxB‫می‬ ‫فعال‬
‫پایه‬ ‫به‬ ‫سیگنالی‬ ‫هرگاه‬ ، ‫شدن‬ ‫فعال‬ ‫از‬ ‫پس‬ ‫و‬ ‫شود‬ICPx،‫شود‬ ‫وارد‬
‫برابری‬ ‫صورت‬ ‫در‬ ‫کبه‬ ‫شود‬ ‫مبی‬ ‫گرفتبه‬ ‫آبن‬ ‫از‬ ‫یکسبان‬ ‫نمونبه‬ ‫چهار‬
.‫پذیرد‬ ‫می‬ ‫انجام‬ ‫تسخیر‬ ، ‫آنها‬
•‫پایبه‬ ‫روی‬ ‫ورودی‬ ‫سبیگنال‬ ‫بنابرایبن‬ICPx‫پالس‬ ‫چهار‬ ‫برای‬ ‫بایبد‬
.‫باشد‬ ‫معتبر‬ ‫سیستم‬ ‫سیکل‬ ‫ساعت‬
•‫تسخیر‬ ‫لبه‬ ‫انتخاب‬ ‫بیت‬ ‫کمک‬ ‫به‬)ICESx(‫کرد‬ ‫انتخاب‬ ‫توان‬ ‫می‬
.‫رونده‬ ‫پایین‬ ‫لبه‬ ‫در‬ ‫یا‬ ‫دهد‬ ‫رخ‬ ‫رونده‬ ‫بال‬ ‫لبه‬ ‫در‬ ‫تسخیر‬ ‫که‬
8-218-21( ‫بیتی‬ ‫)هشت‬ ‫دو‬ ‫کانتر‬ / ‫تایمر‬( ‫بیتی‬ ‫)هشت‬ ‫دو‬ ‫کانتر‬ / ‫تایمر‬
•.‫باشد‬ ‫می‬ ‫پیشرفته‬ ‫حالت‬ ‫در‬ ‫صفر‬ ‫تایمر‬ ‫مشابه‬ ‫تایمر‬ ‫این‬ ‫عملکرد‬
•‫به‬ ‫کبه‬ ‫تفاوت‬ ‫ایبن‬ ‫.با‬ ‫اسبت‬ ‫صبفر‬ ‫تایمبر‬ ‫مشاببه‬ ‫نیبز‬ ‫آبن‬ ‫رجیسبترهای‬
‫می‬ ‫جایگزیبن‬ ‫دو‬ ‫پسبوند‬ ‫کانترهبا‬ ‫و‬ ‫هبا‬ ‫تایمبر‬ ‫در‬ ‫صبفر‬ ‫پسبوند‬ ‫جای‬
.‫شود‬
8-238-23‫خارجی‬ ‫کریستال‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫همزمان‬ ‫غیر‬ ‫عملکرد‬‫خارجی‬ ‫کریستال‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫همزمان‬ ‫غیر‬ ‫عملکرد‬
))RTC) 32.768KHzRTC) 32.768KHz
•‫کنترلرهای‬ ‫میکرو‬ ‫از‬ ‫برخی‬ ‫در‬ ‫دو‬ ‫یا‬ ‫صفر‬ ‫تایمر/کانتر‬AVR‫را‬ ‫قابلیت‬ ‫این‬
‫یا‬ ‫واقعبی‬ ‫سباعت‬ ‫عنوان‬ ‫ببه‬ ‫و‬ ‫همزمان‬ ‫غیبر‬ ‫صبورت‬ ‫ببه‬ ‫کبه‬ ‫دارنبد‬RTC
(Real Time Clock(. ‫نمایند‬ ‫عمل‬
•‫خارجی‬ ‫کریسبتال‬ ‫یبک‬ ‫کمبک‬ ‫ببه‬ ‫داخلبی‬ ‫سباز‬ ‫نوسبان‬ ‫یبک‬ ‫حالبت‬ ‫ایبن‬ ‫در‬
32.768KHz‫های‬ ‫پایه‬ ‫به‬ ‫که‬TOSC1‫و‬TOSC2‫است‬ ‫شده‬ ‫متصل‬
.‫رود‬ ‫می‬ ‫کار‬ ‫به‬ ‫تایمر‬ ‫ساعت‬ ‫پالس‬ ‫کننده‬ ‫تامین‬ ‫عنوان‬ ‫به‬
•‫کریسبتال‬ ‫از‬ ‫اسبتفاده‬ ‫برای‬ ‫داخلبی‬ ‫سباز‬ ‫نوسبان‬32.798KHz‫سازی‬ ‫بهینبه‬
‫کند‬ ‫نمی‬ ‫عمل‬ ‫خوبی‬ ‫به‬ ‫بالتر‬ ‫های‬ ‫فرکانس‬ ‫در‬ ‫و‬ ‫است‬ ‫شده‬.
‫همزمان‬ ‫غیر‬ ‫وضعیت‬ ‫رجیستر‬‫همزمان‬ ‫غیر‬ ‫وضعیت‬ ‫رجیستر‬ASSRASSR
•‫دو‬ ‫یا‬ ‫صفر‬ ‫کانتر‬ / ‫تایمر‬ ‫همزمان‬ ‫غیر‬ ‫بیت‬)ASx(:
‫بیت‬ ‫اگر‬ASx‫سیستم‬ ‫اصلی‬ ‫ساعت‬ ‫پالس‬ ‫طریق‬ ‫از‬ ‫تایمر‬ ‫باشد‬ ‫صفر‬
)CLK-I/O(،‫باشد‬ ‫یبک‬ ‫بیبت‬ ‫ایبن‬ ‫اگبر‬ ‫امبا‬ .‫شود‬ ‫مبی‬ ‫بندی‬ ‫زمان‬
‫می‬ ‫بندی‬ ‫زمان‬ (‫سباعت‬ ‫)کریسبتال‬ ‫خارجبی‬ ‫کریسبتال‬ ‫توسبط‬ ‫تایمبر‬
.‫شود‬
‫که‬ ‫وقتی‬ ‫که‬ ‫که‬ ‫داشت‬ ‫توجه‬ ‫باید‬ASx‫است‬ ‫ممکن‬ ، ‫کند‬ ‫می‬ ‫تغییر‬
‫های‬ ‫رجیستر‬ ‫محتویات‬TCCRx , OCRx , TCNTx‫خراب‬
.‫شود‬
‫دو‬ ‫یا‬ ‫صفر‬ ‫کانتر‬ / ‫تایمر‬ ‫کردن‬ ‫بروز‬ ‫بیت‬)TCNxUB(:
•‫در‬ ‫و‬ ‫کند‬ ‫مبی‬ ‫عمبل‬ ‫همزمان‬ ‫غیبر‬ ‫طور‬ ‫ببه‬ ‫کانتبر‬ / ‫تایمبر‬ ‫کبه‬ ‫هنگامبی‬
TCNTx‫که‬ ‫زمانبی‬ ‫و‬ . ‫شبد‬ ‫خواهبد‬ ‫فعال‬ ‫بیبت‬ ‫ایبن‬ ، ‫شود‬ ‫نوشتبه‬ ‫مقداری‬
TCNTx‫بیت‬ ‫این‬ ، ‫باشد‬ ‫شده‬ ‫بروز‬ ‫موقت‬ ‫سازی‬ ‫ذخیره‬ ‫رجیستر‬ ‫طریق‬ ‫از‬
.‫شود‬ ‫می‬ ‫پاک‬ ‫خودکار‬ ‫صورت‬ ‫به‬ ‫و‬ ‫افزار‬ ‫سخت‬ ‫توسط‬
•‫که‬ ‫است‬ ‫این‬ ‫نشانگر‬ ‫بیت‬ ‫این‬ ‫بودن‬ ‫صفر‬TCNTx‫یک‬ ‫با‬ ‫شدن‬ ‫بروز‬ ‫آماده‬
. ‫است‬ ‫جدید‬ ‫مقدار‬
‫های‬ ‫بیت‬OCRxUB‫و‬TCRxUB:
‫همانند‬ ‫ها‬ ‫بیت‬ ‫این‬ ‫عملکرد‬TCNxUB‫رجیستر‬ ‫برای‬ ‫ولی‬ ‫بوده‬OCRx‫و‬
TCCRx.‫کند‬ ‫می‬ ‫عمل‬
•‫رجیستر‬ ‫سبه‬ ‫ایبن‬ ‫از‬ ‫کدام‬ ‫هبر‬ ‫در‬ ‫نوشتبن‬ ‫عمبل‬ ‫اگبر‬)TCCRx , OCRx ,
TCNTx(‫بروز‬ ‫مقدار‬ ‫شود‬ ‫انجام‬ ‫باشد‬ ‫فعال‬ ‫آنها‬ ‫کردن‬ ‫بروز‬ ‫پرچم‬ ‫که‬ ‫زمانی‬ ‫در‬
.‫شود‬ ‫عمدی‬ ‫غیر‬ ‫وقفه‬ ‫یک‬ ‫بروز‬ ‫باعث‬ ‫یا‬ ‫و‬ ‫رفته‬ ‫دست‬ ‫از‬ ‫است‬ ‫ممکن‬ ‫کردن‬
•‫خواندن‬ ‫زمان‬ ‫در‬ . ‫است‬ ‫متفات‬ ‫رجیستر‬ ‫سه‬ ‫این‬ ‫خواندن‬ ‫مکانیزم‬TCNTx‫مقدار‬
‫خواندن‬ ‫زمان‬ ‫در‬ ‫و‬ ‫شده‬ ‫خوانده‬ ‫تایمر‬ ‫واقعی‬TCCRx , OCRx‫در‬ ‫واقع‬ ‫مقدار‬
.‫شود‬ ‫می‬ ‫خوانده‬ ‫موقت‬ ‫رجیستر‬
•‫مد‬ ‫در‬ ، ‫همزمان‬ ‫غیر‬ ‫حالت‬ ‫در‬ ‫کانتر‬ / ‫تایمر‬power-save‫باشد‬ ‫می‬ ‫فعال‬ ‫نیز‬
‫ازحالت‬ ‫شدن‬ ‫سرریز‬ ‫از‬ ‫پس‬ ‫و‬power-save‫فعال‬ ‫صورت‬ ‫در‬ ‫و‬ ‫شده‬ ‫خارج‬
‫حالت‬ ‫به‬ ‫دوباره‬ ‫و‬ ‫شده‬ ‫اجرا‬ ‫وقفه‬ ‫روال‬ ، ‫مربوطه‬ ‫وقفه‬ ‫بودن‬power-save‫باز‬
‫گردد‬ ‫می‬.
•‫کریستال‬ ‫از‬ ‫استفاده‬ ‫با‬32.768KHz‫تقسیم‬ ‫واحد‬ ‫که‬ ‫صورتی‬ ‫در‬ ‫و‬
‫تقسیم‬ ‫ضریب‬ ‫با‬ ‫ساعت‬ ‫پالس‬128‫مقدار‬ ‫از‬ ‫تایمر‬ ‫و‬ ‫باشد‬ ‫شده‬ ‫تنظیم‬
00H‫تا‬FFH‫به‬ ‫توان‬ ‫می‬ ‫تایمر‬ ‫سرریز‬ ‫پرچم‬ ‫از‬ .‫نماید‬ ‫شمارش‬
‫برای‬ ‫دقیق‬ ‫ای‬ ‫ثانیه‬ ‫یک‬ ‫پالس‬ ‫یک‬ ‫عنوان‬RTC. ‫نمود‬ ‫استفاده‬
•‫ساعت‬ ‫برنامه‬ ‫یک‬ : ‫مثال‬)RTC(‫همزمان‬ ‫غیر‬ ‫عملکرد‬ ‫کمک‬ ‫به‬
‫در‬ATmega64.‫بنویسید‬
#include <mega64.h>
unsigned int second,minute,hours;
void main(){
ASSR=0x08; //AS0=1
TCNT0=0x00;
TCCR0=0x05; //prescale=128
while(ASSR & 0X07); //wait until all update busy flags cleared
TIMSK=0x01; //Timer_Ovf=active
#asm(“sei”)
while(1);
}
interrupt [TIM0_OVF] void clock_isr(void) {
if(second==59){
second=0;
if(minute==59){
minute=0;
if(hours==23){
hours=0;
else{
hours++; }
else{
minute++; }
else{
second++; }
8-258-25‫خروجی‬ ‫مقایسه‬ ‫مدولتور‬‫خروجی‬ ‫مقایسه‬ ‫مدولتور‬
•‫های‬ ‫خروجی‬)or OC0A ) OC2 ,OC1C‫خروجی‬ ‫پایه‬ ‫دارای‬
‫مشترک‬)PORTB.7(‫یک‬ ‫در‬ ‫خروجی‬ ‫دو‬ ‫هر‬ ‫اگر‬ ‫و‬ .‫باشند‬ ‫می‬
.‫شود‬ ‫می‬ ‫فعال‬ ‫خودکار‬ ‫طور‬ ‫به‬ ‫مدولتور‬ ، ‫باشند‬ ‫فعال‬ ‫زمان‬
‫اگببر‬PORTB.7=1‫نوع‬ ‫از‬ ‫مدولسببیون‬ ‫باشببد‬OR‫اگر‬ ‫و‬
PORTB.7=0‫نوع‬ ‫از‬ ‫مدولسیون‬ ، ‫باشد‬AND‫است‬.
‫شکل‬‫شکل‬88--4040‫مدولسیون‬ ‫تولید‬‫مدولسیون‬ ‫تولید‬ANDAND‫و‬‫و‬OROR
‫هشت‬ ‫فصل‬ ‫پایان‬‫هشت‬ ‫فصل‬ ‫پایان‬

More Related Content

Featured

PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 

Featured (20)

Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 

Fasl 8.1

  • 1. ‫کانتر‬ ‫و‬ ‫تایمر‬ ‫هشت‬ ‫فصل‬‫هشت‬ ‫فصل‬
  • 2. 8-18-1‫کانتر‬ ‫و‬ ‫تایمر‬ ‫عملکرد‬ ‫تئوری‬‫کانتر‬ ‫و‬ ‫تایمر‬ ‫عملکرد‬ ‫تئوری‬ •‫تشکیل‬ ‫هم‬ ‫سر‬ ‫پشت‬ ‫فل پ‬ ‫فلیپ‬ ‫تعدادی‬ ‫از‬ ‫که‬ ‫است‬ ‫شمارنده‬ ‫همان‬ ‫تایمر‬ .‫است‬ ‫شده‬ •‫منظم‬ ‫فواصل‬ ‫و‬ ‫ثابت‬ ‫فرکانس‬ ‫با‬ ‫شمارنده‬ ‫به‬ ‫شده‬ ‫وارد‬ ‫ساعت‬ ‫پالس‬ ‫اگر‬ .‫کرد‬ ‫استفاده‬ ‫آن‬ (‫)تایمر‬ ‫سنجی‬ ‫زمان‬ ‫کاربرد‬ ‫از‬ ‫توان‬ ‫می‬ ‫باشد‬ •‫نامنظم‬ ‫فواصصل‬ ‫بصا‬ ‫خارجصی‬ ‫های‬ ‫رویداد‬ ‫شمارش‬ ‫برای‬ ‫شمارنده‬ ‫از‬ ‫اگصر‬ .‫شود‬ ‫می‬ ‫استفاده‬ ‫آن‬ (‫)کانتر‬ ‫شمارندگی‬ ‫کاربرد‬ ‫از‬ ‫شود‬ ‫استفاده‬
  • 3. 8-28-2‫صفر‬ ‫کانتر‬ / ‫تایمر‬‫صفر‬ ‫کانتر‬ / ‫تایمر‬ •‫در‬ ‫صفر‬ ‫تایمر‬AVR:‫است‬ ‫نوع‬ ‫سه‬ ‫بر‬ ‫ها‬ •‫بیتی‬ ‫هشت‬ ‫ساده‬ ‫عملکرد‬ •‫بیتی‬ ‫هشت‬ ‫پیشرفته‬ ‫عملکرد‬ •‫بیتی‬ ‫شانزده‬ ‫پیشرفته‬ ‫عملکرد‬
  • 4. 8-38-3‫در‬ ‫صفر‬ ‫کانتر‬ /‫تایمر‬‫در‬ ‫صفر‬ ‫کانتر‬ /‫تایمر‬‫بیتی‬ ‫هشت‬ ‫ساده‬ ‫حالت‬‫بیتی‬ ‫هشت‬ ‫ساده‬ ‫حالت‬
  • 5. •‫شمارنده‬ ‫خروجی‬ ‫همچنین‬ ، ‫است‬ ‫ورودی‬ ‫بیت‬ ‫هشت‬ ‫دارای‬ ‫شمارنده‬ ‫این‬ ‫مقدار‬ ‫حداکثر‬ ‫دارای‬ ‫و‬ ‫بوده‬ ‫بیت‬ ‫هشت‬ ‫دارای‬ ‫نیز‬)255(FFH. ‫است‬ •‫مقدار‬ ‫به‬ ‫رسیدن‬ ‫از‬ ‫پس‬)255(FFH‫مقدار‬ ‫به‬ ‫خروجی‬ ،00H‫می‬ ‫بر‬ ‫شمارنده‬ ‫حالت‬ ‫این‬ ‫در‬ . ‫شود‬ ‫می‬ ‫فعال‬ ‫نیز‬ ‫شمارنده‬ ‫سرریز‬ ‫بیت‬ ‫و‬ ‫گردد‬ . ‫کند‬ ‫می‬ ‫شمارش‬ ‫بال‬ ‫به‬ ‫رو‬ •‫که‬ ‫داشت‬ ‫توجه‬ ‫نکته‬ ‫این‬ ‫به‬ ‫باید‬ ‫کانتر‬ ‫صورت‬ ‫به‬ ‫شمارنده‬ ‫استفاده‬ ‫جهت‬ ‫پالس‬ ‫تناوب‬ ‫دوره‬ ‫یصک‬ ‫برابر‬ ‫حداقصل‬ ‫بایصد‬ ‫خارجصی‬ ‫پالصس‬ ‫دو‬ ‫بیصن‬ ‫زمان‬ ‫ساعت‬CPU. ‫باشد‬
  • 6. 8-48-4‫صفر‬ ‫تایمر/کانتر‬ ‫به‬ ‫مربوط‬ ‫رجیسترهای‬‫صفر‬ ‫تایمر/کانتر‬ ‫به‬ ‫مربوط‬ ‫رجیسترهای‬ •‫های‬ ‫بیت‬ ‫کمک‬ ‫به‬CS00,CS01,CS02: ‫داد‬ ‫انجام‬ ‫را‬ ‫زیر‬ ‫عملیات‬ ‫توان‬ ‫می‬ •1.‫کانترصفر‬ /‫تایمر‬ ‫کردن‬ ‫فعال‬ ‫غیر‬ ‫یا‬ ‫فعال‬ . •2.‫صفر‬ ‫کانتر‬ /‫تایمر‬ ‫ساعت‬ ‫پالس‬ ‫فرکانس‬ ‫تعیین‬ . •3‫ورودی‬ ‫پالس‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫شمارنده‬ ‫عنوان‬ ‫به‬ ‫صفر‬ ‫کانتر‬ /‫تایمر‬ ‫دادن‬ ‫قرار‬ . ‫پایه‬ ‫به‬T0. •‫رجیستر‬TCNT0.‫است‬ ‫شمارنده‬ ‫شمارشگر‬ ‫رجیستر‬
  • 7. ‫بیت‬TOV0‫از‬TIFR:(‫صفر‬ ‫کانتر‬ /‫تایمر‬ ‫سرریز‬ ‫)پرچم‬ •.‫شود‬ ‫می‬ ‫یک‬ ‫بیت‬ ‫این‬ ‫تایمر‬ ‫سرریز‬ ‫با‬ •‫وقفه‬ ‫اجرای‬ ‫هنگام‬ ‫همچنین‬ .‫نمود‬ ‫پاک‬ ‫را‬ ‫آن‬ ‫توان‬ ‫می‬ ‫بیت‬ ‫این‬ ‫در‬ ‫یک‬ ‫نوشتن‬ ‫با‬ ‫بیت‬ ،‫مربوطه‬TOV0.‫شد‬ ‫خواهد‬ ‫پاک‬ ‫افزار‬ ‫سخت‬ ‫توسط‬ ‫خودکار‬ ‫بصورت‬ ‫بیت‬TOIE0‫از‬TIMSK(‫صفر‬ ‫کانتر‬ /‫تایمر‬ ‫سرریز‬ ‫وقفه‬ ‫ساز‬ ‫)توانا‬ •‫وقتصی‬TOIE0‫بیت‬ ‫و‬ ‫شود‬ ‫یصک‬I‫رجیستر‬ ‫در‬ (‫سصراسری‬ ‫وقفصه‬ ‫سصاز‬ ‫)فعال‬ SREG.‫شد‬ ‫خواهد‬ ‫فعال‬ ‫صفر‬ ‫کانتر‬ /‫تایمر‬ ‫سرریز‬ ‫وقفه‬ ‫باشد‬ ‫فعال‬ ‫نیز‬ •‫بیت‬ ‫که‬ ‫هنگامی‬TOV0‫وقفه‬ ‫پرچم‬ ‫رجیستر‬ ‫در‬)TIFR(‫وقفه‬ ‫یک‬ ‫شود‬ ‫فعال‬ .‫شد‬ ‫خواهد‬ ‫درخواست‬
  • 8. 8-58-5 ‫تایمرها‬ ‫برای‬ ‫زمانبندی‬ ‫محاسبه‬ ‫نحوه‬‫تایمرها‬ ‫برای‬ ‫زمانبندی‬ ‫محاسبه‬ ‫نحوه‬ •‫مثال‬: •‫فرض‬ ‫صا‬‫ص‬‫ب‬‫صی‬‫ص‬‫داخل‬ ‫صاز‬‫ص‬‫س‬ ‫صان‬‫ص‬‫نوس‬1MHz‫تقسیم‬ ‫صب‬‫ص‬‫ضری‬ ‫و‬N=32‫و‬ TCNT0=0AH.‫نمایید‬ ‫محاسبه‬ ‫را‬ ‫سرریز‬ ‫پرچم‬ ‫شدن‬ ‫فعال‬ ‫تا‬ ‫زمان‬ ‫،مقدار‬ •=1MHz/32‫تایمر‬ ‫ساعت‬ ‫پالس‬ ‫فرکانس‬ •=32/1MHz=32us‫شمارش‬ ‫یک‬ ‫زمان‬ ‫مدت‬ •=256–TCNT0=256-10=246‫تایمر‬ ‫سرریزشدن‬ ‫برای‬ ‫لزم‬ ‫پالس‬ ‫تعداد‬ •=246*32us=7.872 ms‫تایمر‬ ‫شمارش‬ ‫زمان‬ ‫مدت‬
  • 9. •‫مثال‬: •‫داخلصی‬ ‫سصاز‬ ‫نوسصان‬ ‫از‬ ‫اسصتفاده‬ ‫فرض‬ ‫بصا‬8MHz‫زمان‬ ‫مدت‬ ‫تولید‬ ‫برای‬ 0.1ms‫صفر‬ ‫تایمر‬ ‫در‬ ‫باید‬ ‫را‬ ‫عددی‬ ‫چه‬)TCNT0(‫؟‬ ‫داد‬ ‫قرار‬N ‫برابر‬ ‫را‬8.‫نمایید‬ ‫انتخاب‬ •: ‫حل‬ =8MHz/8=1MHz‫تایمر‬ ‫ساعت‬ ‫پالس‬ ‫فرکانس‬ =1/1MHz=1us‫شمارش‬ ‫یک‬ ‫زمان‬ ‫مدت‬ 0.1ms/1us=100=‫مدت‬ ‫برای‬ ‫لزم‬ ‫پالس‬ ‫تعداد‬0.1ms =256-100=156=9CH‫برای‬ ‫لزم‬ ‫عدد‬TCNT0
  • 10. •‫مثال‬ •‫خارجصی‬ ‫کریسصتال‬ ‫از‬ ‫اسصتفاده‬ ‫فرض‬ ‫بصا‬16MHz‫مدت‬ ‫تولید‬ ‫برای‬ ‫زمان‬10ms‫درتایمر‬ ‫باید‬ ‫را‬ ‫عددی‬ ‫چه‬‫یک‬)TCNT1(‫داد؟‬ ‫قرار‬ •‫تقسیم‬ ‫ضریب‬ ‫انتخاب‬ ‫فرض‬ ‫با‬ : ‫حل‬)N=64)64: ‫داریم‬ =16MHz / 64‫تایمر‬ ‫ساعت‬ ‫پالس‬ ‫فرکانس‬ =64/16MHz = 4us‫شمارش‬ ‫یک‬ ‫زمان‬ ‫مدت‬ =10ms / 4us= 2500‫زمان‬ ‫مدت‬ ‫برای‬ ‫لزم‬ ‫پالس‬ ‫تعداد‬10ms =63036=F63CH‫برای‬ ‫لزم‬ ‫عدد‬TCNT1
  • 11. •‫مثال‬ % ‫کاری‬ ‫چرخه‬ ‫با‬ ‫مربعی‬ ‫موج‬ ‫یک‬ ‫که‬ ‫بنویسید‬ ‫ای‬ ‫برنامه‬50‫پایه‬ ‫روی‬PORTB.0‫)میکرو‬AT90S8515( ‫روی‬ ‫فرکانس‬ (‫صفر‬ ‫تایمر‬ ‫کمک‬ ‫)به‬ .‫نمایید‬ ‫ایجاد‬PORTB.0‫را‬ ‫داخلی‬ ‫ساز‬ ‫)نوسان‬ ‫؟‬ ‫است‬ ‫چقدر‬4MHz‫در‬ :(‫بگیرید‬ ‫نظر‬ •‫فرض‬N=8 •‫زبان‬ ‫به‬ ‫برنامه‬C #include<90s8515.h< Void delay(); Void main() } DDRB=0x01; // PORTB.0=Output PORTB=0x00; TCCR0=0x00; // STOP Timer 0 TCNT0=0x00; // Timer value=0 While (1)} PORTB.0=~PORTB.0; delay(); } } ----------------------- - // Void delay()} TCCR0=0x02; // START Timer0 with f =500KHz** While(!(TIFR & 0x02))); // Until TOV0=1 TIFR1 |= 0x02; // Clear TOV0 }
  • 12. •: ‫برنامه‬ ‫شرح‬ :‫شود‬ ‫می‬ ‫انجام‬ ‫زیر‬ ‫مراحل‬ ‫فوق‬ ‫برنامه‬ ‫در‬ 1‫پورت‬ .B.‫شود‬ ‫می‬ ‫تعریف‬ ‫خروجی‬ ‫بصورت‬ 2‫نوشتن‬ ‫با‬ ‫را‬ ‫صفر‬ ‫تایمر‬ .TCCR0=0. ‫کنیم‬ ‫می‬ ‫متوقف‬ 3‫برابر‬ ‫را‬ ‫صفر‬ ‫تایمر‬ ‫اولیه‬ ‫مقدار‬ .TCNT0=0. ‫دهیم‬ ‫می‬ ‫قرار‬ 4‫ی‬ ‫حلقصه‬ ‫در‬ .for‫پایصه‬PERTB.0‫توسط‬ ‫کصه‬ ‫زمانصی‬ ‫تاخیصر‬ ‫بصا‬ ‫را‬ ‫برنامه‬ ‫زیر‬delay‫کنیم‬ ‫می‬ ‫یک‬ ‫و‬ ‫صفر‬ ‫تناوب‬ ‫به‬ .‫شود‬ ‫می‬ ‫ایجاد‬ % ‫زمانی‬ ‫ی‬ ‫چرخه‬ ‫با‬ ‫مربعی‬ ‫موج‬ ‫خروجی‬ ‫در‬ ‫تا‬50.‫شود‬ ‫تولید‬
  • 13. 5‫برنامه‬ ‫زیر‬ ‫در‬ .delay: ‫فرکانس‬ ‫برای‬ ‫را‬ ‫صفر‬ ‫تایمر‬ ‫ساعت‬ ‫پالس‬ ‫ابتدا‬ -‫الف‬500KHz.‫میکنیم‬ ‫تنظیم‬ ‫مقدار‬ ‫نوشتن‬ ‫با‬ ‫را‬ ‫کار‬ ‫این‬02H‫رجیستر‬ ‫در‬TCCR0. ‫دهیم‬ ‫می‬ ‫انجام‬ ‫مقدار‬ ‫از‬ ‫شمارش‬ ‫به‬ ‫شروع‬ ‫تایمر‬ -‫ب‬00H‫تا‬FFH.‫نماید‬ ‫می‬ ‫ی‬ ‫درحلقصه‬ -‫ج‬while‫منتظصر‬ ‫برنامصه‬‫مصی‬‫تایمرصفرفعال‬ ‫سصرریز‬ ‫بیصت‬ ‫تصا‬ ‫مانصد‬ .‫شود‬ ‫در‬ ‫یک‬ ‫نوشتن‬ ‫با‬ ،‫صفر‬ ‫تایمر‬ ‫سرریز‬ ‫بیت‬ ‫شدن‬ ‫فعال‬ ‫از‬ ‫پس‬ -‫د‬TOV0‫را‬ ‫آن‬ .‫کنیم‬ ‫می‬ ‫پاک‬ ‫مرحله‬ ‫به‬ ‫بازگشت‬ -‫ه‬4.
  • 14. 8-68-6‫پیشرفتصه‬ ‫بیتصی‬ ‫هشصت‬ ‫حالصت‬ ‫در‬ ‫صصفر‬ ‫تایمصر/کانتصر‬‫پیشرفتصه‬ ‫بیتصی‬ ‫هشصت‬ ‫حالصت‬ ‫در‬ ‫صصفر‬ ‫تایمصر/کانتصر‬ •‫های‬ ‫سری‬ ‫در‬ ‫پیشرفته‬ ‫بیتصی‬ ‫هشت‬ ‫عملکرد‬ ‫حالت‬ATmega‫)به‬ ‫از‬ ‫غیر‬ATmega8‫و‬ATmega163.‫دارد‬ ‫قرار‬ ( •‫موارد‬ ‫به‬ ‫توان‬ ‫مصی‬ ‫مدل‬ ‫ایصن‬ ‫در‬ ‫صصفر‬ ‫تایمصر/کانتصر‬ ‫خصصوصیات‬ ‫از‬ :‫کرد‬ ‫اشاره‬ ‫زیر‬ 1‫عادی‬ ‫حالت‬ ‫در‬ ‫کانتر‬ / ‫تایمر‬ . 2‫مقایسه‬ ‫حالت‬ ‫در‬ ‫کانتر‬ / ‫تایمر‬ .)CTC( 3‫حالت‬ ‫در‬ ‫کانتر‬ / ‫تایمر‬ .PWM( ‫شیب‬ ‫تک‬ ) ‫سریع‬ 4‫حالت‬ ‫در‬ ‫کانتر‬ / ‫تایمر‬ .PWM(‫شیب‬ ‫)دو‬ ‫فاز‬ ‫تصحیح‬
  • 15. 8-78-7‫عملکرد‬ ‫مد‬ ‫در‬ ‫صفر‬ ‫کانتر‬ /‫تایمر‬ ‫به‬ ‫مربوط‬ ‫رجیسترهای‬‫عملکرد‬ ‫مد‬ ‫در‬ ‫صفر‬ ‫کانتر‬ /‫تایمر‬ ‫به‬ ‫مربوط‬ ‫رجیسترهای‬ ‫بیتی‬ ‫هشت‬‫بیتی‬ ‫هشت‬ •‫خروجی‬ ‫مقایسه‬ ‫رجیستر‬)OCR0( •‫صفر‬ ‫کانتر‬ / ‫تایمر‬ ‫رجیستر‬)TCNT0( •‫صفر‬ ‫کانتر‬ / ‫تایمر‬ ‫کنترلی‬ ‫رجیستر‬)TCCR0(
  • 16. ‫رجیستر‬‫رجیستر‬TCCR0TCCR0 •‫ساعت‬ ‫پالس‬ ‫انتخاب‬ ‫های‬ ‫بیت‬)CS02,CS01,CS00( .‫شد‬ ‫گفته‬ ‫ساده‬ ‫تایمر‬ ‫حالت‬ ‫در‬ ‫آنچه‬ ‫شبیه‬ •‫مقایسه‬ ‫تطابق‬ ‫خروجی‬ ‫حالت‬ ‫های‬ ‫بیت‬)COM01:0(: ‫پایه‬ ، ‫شود‬ ‫یک‬ ‫ها‬ ‫بیت‬ ‫این‬ ‫هردوی‬ ‫یا‬ ‫یکی‬ ‫اگصر‬OC0‫واحد‬ ‫خروجی‬ ‫به‬ ‫عنوان‬ ‫به‬ ‫آن‬ ‫از‬ ‫توان‬ ‫نمی‬ ‫دیگر‬ ‫و‬ ‫شد‬ ‫خواهد‬ ‫متصل‬ ‫موج‬ ‫شکل‬ ‫تولید‬I/O ) ‫گردد‬ ‫خروجی‬ ‫باید‬ ‫پایه‬ ‫این‬ ‫حالت‬ ‫این‬ ‫در‬ .‫نمود‬ ‫استفاده‬ ‫معمولی‬DDRx( ‫جدول‬ ‫یا‬ ‫شیت‬ ‫دیتا‬ ‫به‬ ‫بیشتر‬ ‫جزییات‬ ‫برای‬8-4.‫گردد‬ ‫مراجعه‬
  • 17. •‫های‬ ‫بیت‬WGM01:0: / ‫تایمر‬ ‫شده‬ ‫پشتیبانی‬ ‫عملکرد‬ ‫های‬ ‫حالت‬ ‫توان‬ ‫می‬ ‫بیت‬ ‫دو‬ ‫این‬ ‫توسط‬ ، ‫عادی‬ ‫عملکرد‬ : ‫از‬ ‫عبارتند‬ ‫که‬ ‫را‬ ‫کانتر‬CTC ،PWM‫سریع‬ ‫و‬PWM.‫نمود‬ ‫انتخاب‬ ‫را‬ ‫فاز‬ ‫تصحیح‬ ‫جدول‬ ‫یا‬ ‫دیتاشیت‬ ‫به‬ ‫بیشتر‬ ‫جزییات‬ ‫برای‬8-5.‫گردد‬ ‫مراجعه‬
  • 18. •‫خروجی‬ ‫مقایسه‬ ‫بیت‬)FOC0(: ‫کردن‬ ‫یک‬ ‫با‬FOC0‫پایه‬ ‫وضعیت‬OC0‫آن‬ ‫تنظیمات‬ ‫به‬ ‫توجه‬ ‫با‬ .‫کند‬ ‫می‬ ‫تغییر‬ ‫تطابق‬ ‫لحظه‬ ‫شبیه‬ ‫خروجی‬ ‫مقایسه‬ ‫پرچم‬ ‫ولی‬)OCF0(‫ای‬ ‫وقفه‬ ‫و‬ ‫شد‬ ‫نخواهد‬ ‫فعال‬ ‫و‬ ‫رجیستر‬ ‫هییچ‬ ‫بر‬ ‫تاثیری‬ ‫کیل‬ ‫در‬ ‫بییت‬ ‫.این‬ ‫شود‬ ‫نمیی‬ ‫تولیید‬ ‫نییز‬ .‫گذارد‬ ‫نمی‬ ‫پرچمی‬
  • 19. 8-88-8‫عادی‬ ‫حالت‬ ‫در‬ ‫صفر‬ ‫/کانتر‬ ‫تایمر‬‫عادی‬ ‫حالت‬ ‫در‬ ‫صفر‬ ‫/کانتر‬ ‫تایمر‬ •‫جهت‬ .‫اسیت‬ ‫عادی‬ ‫حالیت‬ ‫کانتیر‬ / ‫تایمیر‬ ‫عملکرد‬ ‫حالیت‬ ‫تریین‬ ‫سیاده‬ ‫رجیستر‬ ‫مقدار‬ ‫رسیدن‬ ‫از‬ ‫پس‬ ‫و‬ ‫بوده‬ ( ‫)افزایشی‬ ‫بال‬ ‫به‬ ‫رو‬ ‫شمارش‬ TCNT0‫بیه‬TOP‫مقدار‬ ‫از‬ ‫دوباره‬BOTTOM‫به‬ ‫شروع‬ ‫سرریز‬ ‫پرچم‬ ‫و‬ ‫نموده‬ ‫شمارش‬TOV0‫تایمر‬ ‫)در‬ .‫شد‬ ‫خواهد‬ ‫فعال‬ 8‫بیتی‬TOP=0xFF‫و‬BOTTOM=0x00(‫است‬
  • 20. ‫شکل‬8-6‫عادی‬ ‫حالت‬ ‫در‬ ‫تایمر‬ ‫عملکرد‬
  • 21. 8-98-9‫حالت‬ ‫در‬ ‫کانترصفر‬ / ‫تایمر‬ ‫عملکرد‬‫حالت‬ ‫در‬ ‫کانترصفر‬ / ‫تایمر‬ ‫عملکرد‬))CTCCTC(( •‫مد‬ ‫عملکرد‬CTC‫مقدار‬ ‫حداکثر‬ ‫که‬ ‫تفاوت‬ ‫این‬ ‫با‬ ‫است‬ ‫عادی‬ ‫مد‬ ‫مشابه‬ ‫کامل‬ ‫جای‬ ‫به‬ ‫شمارش‬0xFF‫رجیستر‬ ‫در‬ ‫موجود‬ ‫عدد‬ ،OCR0.‫است‬ •‫رجیستر‬ ‫مقدار‬ ‫تغییر‬OCR0‫باید‬ ‫است‬ ‫شمارش‬ ‫حال‬ ‫در‬ ‫تایمر‬ ‫که‬ ‫زمانی‬ ‫در‬ ‫حالیت‬ ‫کیه‬ ‫زیرا‬ ، ‫شود‬ ‫انجام‬ ‫احتیاط‬ ‫بیا‬CTC‫نمی‬ ‫مضاعیف‬ ‫بافیر‬ ‫دارای‬ ‫رجیستر‬ ‫در‬ ‫موجود‬ ‫مقدار‬ ‫تغییر‬ ‫با‬ ‫زیرا‬ . ‫باشد‬OCR0‫تغییر‬ ‫مقایسه‬ ‫مبنای‬ ‫رجیستر‬ ‫از‬ ‫کمتر‬ ‫جدید‬ ‫مقدار‬ ‫که‬ ‫است‬ ‫ممکن‬ ‫و‬ ‫کند‬ ‫می‬TCNT0‫و‬ ‫باشد‬ .‫برود‬ ‫دست‬ ‫از‬ ‫مقایسه‬ •‫یک‬ ‫وقفه‬ ‫بودن‬ ‫فعال‬ ‫صورت‬ ‫در‬ ‫تطابق‬ ‫لحظه‬ ‫در‬ ، ‫شمارش‬ ‫مابین‬ ‫چنانچه‬ .‫شود‬ ‫می‬ ‫ایجاد‬ ‫مقایسه‬ ‫وقفه‬
  • 22. ‫شکل‬8-8‫حالت‬ ‫در‬ ‫صفر‬ ‫کانتر‬ / ‫تایمر‬ ‫توسط‬ ‫موج‬ ‫شکل‬ ‫تولید‬ ‫نحوه‬CTC
  • 23. ‫مضاعف‬ ‫بافر‬‫مضاعف‬ ‫بافر‬ •‫مقدار‬ ‫تغییر‬ ‫زمان‬ ‫در‬ ‫اشتباه‬ ‫از‬ ‫جلوگیری‬ ‫برای‬OCR0‫به‬ ‫رجیستر‬ ‫این‬ .‫رود‬ ‫می‬ ‫کار‬ ‫به‬ ‫مضاعف‬ ‫بافر‬ ‫صورت‬ •‫در‬ ‫جدید‬ ‫مقدار‬ ‫نوشتن‬ ‫با‬ ،‫شمارش‬ ‫هنگام‬ ‫در‬ ‫که‬ ‫صورت‬ ‫بدین‬OCR0‫آن‬ ‫اصلی‬ ‫رجیستر‬ ‫داخل‬ ‫مقدار‬OCR0‫بافر‬ ‫یک‬ ‫در‬ ‫بلکه‬ ، ‫شود‬ ‫نمی‬ ‫بار‬ ‫نام‬ ‫همان‬ ‫به‬ ‫دیگر‬)OCR0(‫رسیدن‬ ‫هنگام‬ ‫در‬ ‫و‬ ‫شده‬ ‫ذخیره‬TCNT0 ‫اصیلی‬ ‫رجیسیتر‬ ‫در‬ ‫جدیید‬ ‫مقدار‬ ‫قلیه‬ ‫مقدار‬ ‫بیه‬OCR0‫و‬ ‫گردد‬ ‫می‬ ‫بار‬ ‫با‬ ‫شمارش‬ ‫جدید‬ ‫دوره‬OCR0.‫شد‬ ‫خواهد‬ ‫مقایسه‬ ‫جدید‬ •‫عملکرد‬ ‫حالت‬ ‫در‬ ‫فقیط‬ ‫مضاعیف‬ ‫بافیر‬ ‫کیه‬ ‫اسیت‬ ‫ضروری‬ ‫نکتیه‬ ‫ایین‬ ‫ذکیر‬ PWM.‫شود‬ ‫می‬ ‫فعال‬
  • 24. •‫مثال‬ ‫هیر‬ ‫کیه‬ ‫بنویسیید‬ ‫ای‬ ‫برنامیه‬1ms‫پایه‬oc0 ( PORTB.4‫در‬ATmega64‫را‬ ( . ( ‫صفر‬ ‫تایمر‬ ‫مقایسه‬ ‫عملکرد‬ ‫کمک‬ ‫به‬ )‫نماید‬ ‫مکمل‬ ‫سیستم‬ ‫ساعت‬ ‫پالس‬ ‫فرکانس‬ ‫فرض‬ ‫با‬ : ‫حل‬8MHz: #include <mega64.h< Void main()} DDRB=0X10 ; //PORTB.4(OC0)=OUTPUT TCNT0=0x0 //Value Timer0=00H OCR0= 0x7C //OCRO=124 TCCR0=0x1C // f= 125KHz,MODE CTC,OC0=Toggle //and START Timer 0 While(1); }
  • 25. •‫مثال‬ ‫پاییه‬ ‫کیه‬ ‫بنویسیید‬ ‫ای‬ ‫برنامیه‬oc0 ( PORTB.4‫در‬ATmega64‫توسط‬ (FOC0 .‫شود‬ ‫مکمل‬ :‫حل‬ #include <mega64.h< Void main()} DDRB=0X10 ; //PORTB.4(OC0)=OUTPUT While(1)} TCCR0=0x90 ; //FOC0=1 ,OC0 = Toggle } }
  • 26. 8-108-10‫حالت‬ ‫در‬ ‫تایمر/کانترصفر‬ ‫عملکرد‬‫حالت‬ ‫در‬ ‫تایمر/کانترصفر‬ ‫عملکرد‬PWMPWM ( ‫شیب‬ ‫تک‬ ) ، ‫سریع‬( ‫شیب‬ ‫تک‬ ) ، ‫سریع‬ PWM‫چیست؟‬ •‫گیر‬ ‫انتگرال‬ ‫یک‬ ‫با‬ ‫و‬ ‫بوده‬ ‫ساده‬ ‫بسیار‬ ‫مدولسیون‬ ‫این‬ ‫سازی‬ ‫آشکار‬ .‫نمود‬ ‫بازسازی‬ ‫را‬ ‫شده‬ ‫مدوله‬ ‫موج‬ ‫توان‬ ‫می‬ •‫آنالوگ‬ ‫به‬ ‫دیجیتال‬ ‫مبدل‬ ‫طراحی‬ ‫در‬ ‫روش‬ ‫این‬ ‫از‬)DAC(‫استفاده‬ .‫شود‬ ‫می‬ •‫کاربردهای‬ ‫دیگیر‬ ‫از‬PWM‫موتورهای‬ ‫دور‬ ‫کنترل‬ ‫به‬ ‫توان‬ ‫میی‬ DC,AC.‫برد‬ ‫نام‬ ... ‫و‬ ‫سوئیچینگ‬ ‫تغذیه‬ ‫منابع‬ ‫و‬
  • 27. ‫شکل‬‫شکل‬88--1111‫موج‬ ‫تولید‬‫موج‬ ‫تولید‬PWMPWM‫مختلف‬ ‫پهنای‬ ‫سه‬ ‫در‬‫مختلف‬ ‫پهنای‬ ‫سه‬ ‫در‬
  • 29. •‫فرکانس‬PWM:‫کرد‬ ‫محاسبه‬ ‫زیر‬ ‫رابطه‬ ‫از‬ ‫توان‬ ‫می‬ ‫را‬ ‫خروجی‬ •fpwm=fclk-I/O / N*256
  • 30. 8-118-11‫حالت‬ ‫در‬ ‫صفر‬ ‫تایمر/کانتر‬ ‫عملکرد‬‫حالت‬ ‫در‬ ‫صفر‬ ‫تایمر/کانتر‬ ‫عملکرد‬PWMPWM‫فاز‬ ‫تصحیح‬‫فاز‬ ‫تصحیح‬ •PWM‫تری‬ ‫پایین‬ ‫تولیدی‬ ‫فرکانیس‬ ‫دارای‬ ‫فاز‬ ‫تصیحیح‬ ‫روش‬ ‫بیه‬ ‫بیه‬ ‫نسبت‬PWM‫متقارن‬ ‫به‬ ‫توجیه‬ ‫بیا‬ ‫وجود‬ ‫ایین‬ ‫باشد.بیا‬ ‫میی‬ ‫سیریع‬ ‫عملکرد‬ ‫بودن‬PWM‫دور‬ ‫کنترل‬ ‫در‬ ‫بیشتر‬ ‫آین‬ ‫از‬ ، ‫فاز‬ ‫تصیحیح‬ ‫شود‬ ‫می‬ ‫استفاده‬ ‫.موتور‬ •‫صفر‬ ‫تایمر‬ ‫سرریز‬ ‫پرچم‬ ‫که‬ ‫است‬ ‫این‬ ‫مهم‬ ‫نکته‬ ‫یک‬)TOV0( ‫رجیسیتر‬ ‫کیه‬ ‫شود‬ ‫میی‬ ‫فعال‬ ‫زمانیی‬TCNT0‫نه‬ ‫باشید‬ ‫صیفر‬ ‫برابر‬ FFH‫اگر‬ ‫تایمر‬ ‫کار‬ ‫به‬ ‫شروع‬ ‫زمان‬ ‫در‬ ‫که‬ ‫داشت‬ ‫توجه‬ ‫باید‬ ‫پس‬ ، TCNT0=0.‫شد‬ ‫خواهد‬ ‫فعال‬ ‫سرریز‬ ‫پرچم‬ ، ‫باشد‬
  • 31. •‫فرکانس‬PWM‫محاسبه‬ ‫قابل‬ ‫زیر‬ ‫معادله‬ ‫طبق‬ ‫فاز‬ ‫تصحیح‬ ‫حالت‬ ‫در‬ : ‫است‬ •fpwm=fclk-I/O / N*510
  • 33. ‫شکل‬‫شکل‬88--1919‫حالت‬ ‫در‬ ‫صفر‬ ‫تایمر‬ ‫عملکرد‬‫حالت‬ ‫در‬ ‫صفر‬ ‫تایمر‬ ‫عملکرد‬PWMPWM ‫مضاعف‬ ‫بافر‬ ‫و‬ ‫فاز‬ ‫تصحیح‬‫مضاعف‬ ‫بافر‬ ‫و‬ ‫فاز‬ ‫تصحیح‬
  • 34. 8-128-12‫سه‬ ‫و‬ ‫یک‬ ‫بیتی‬ ‫کانترشانزده‬ / ‫تایمر‬‫سه‬ ‫و‬ ‫یک‬ ‫بیتی‬ ‫کانترشانزده‬ / ‫تایمر‬ •‫اشاره‬ ‫زیر‬ ‫موارد‬ ‫به‬ ‫توان‬ ‫می‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ /‫تایمر‬ ‫عملکرد‬ ‫های‬ ‫حالت‬ ‫از‬ :‫نمود‬ 1‫عادی‬ ‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ /‫تایمر‬ . 2‫مقایسه‬ ‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ .)CTC( 3‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ .PWM(‫شیب‬ ‫)تک‬ ‫سریع‬ 4‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ .PWM(‫شیب‬ ‫)دو‬ ‫فاز‬ ‫تصحیح‬ 5‫حاللت‬ ‫در‬ ‫سله‬ ‫و‬ ‫یلک‬ ‫کانتلر‬ / ‫تایملر‬ .PWM‫)در‬ ‫فرکانس‬ ‫و‬ ‫فاز‬ ‫تصلحیح‬ ‫از‬ ‫برخی‬AVR( ‫ها‬
  • 35. ‫کانتر‬ / ‫تایمر‬ ‫رجیستر‬TCNTx •TCNTx‫است‬ ‫شده‬ ‫تشکیل‬ ‫بایت‬ ‫دو‬ ‫از‬ . •‫به‬ ‫پاییلن‬ ‫و‬ ‫بال‬ ‫بایلت‬ ‫هردو‬ ‫اینکله‬ ‫از‬ ‫اطمینان‬ ‫برای‬ ‫کنترللر‬ ‫میکرو‬ ‫اختیار‬ ‫در‬ ‫همزمان‬ ‫طور‬CPU‫موقت‬ ‫رجیسلتر‬ ‫یلک‬ ‫گیرد‬ ‫قرار‬ )TEMP(‫نمی‬ ‫کاربر‬ ‫اختیار‬ ‫در‬ ‫رجیستر‬ ‫گیرد.این‬ ‫می‬ ‫کار‬ ‫به‬ ‫را‬ .‫باشد‬
  • 36. ‫در‬ ‫نوشتن‬ ‫عملیات‬TCNTx: •CPU‫در‬ ‫نوشتلن‬ ‫هنگام‬ ‫در‬TCNTx‫رجیستر‬ ‫در‬ ‫را‬ ‫بال‬ ‫بایلت‬ ‫ابتدا‬ ‫موقت‬(TEMP)‫که‬ ‫هنگامی‬ ‫سپس‬ ‫و‬ ‫داده‬ ‫قرار‬CPU‫بایت‬ ‫در‬‫پایین‬ TCNTxL‫در‬ ‫شده‬ ‫نوشته‬ ‫بایت‬ ‫زمان‬ ‫همین‬ ‫در‬ ، ‫نویسد‬ ‫می‬TEMP ‫در‬ ‫نیلز‬TCNTxH‫در‬ ‫نوشتن‬ ‫هنگام‬ ‫گرفت.بنابرایلن‬ ‫خواهلد‬ ‫قرار‬ TCNTx‫باید‬ ‫ابتدا‬TCNTxH‫شود‬ ‫.نوشته‬ TCNT1H=a; TCNT1L=b; ‫یا‬ TCNT1=c;
  • 37. ‫از‬ ‫خواندن‬ ‫عملیات‬TCNTx •CPU‫پایین‬ ‫بایلت‬ ‫ابتدا‬ ، ‫خواندن‬ ‫هنگام‬(TCNTxL)‫در‬ ‫و‬ ‫خوانده‬ ‫را‬ ‫بال‬ ‫بایت‬ ‫زمان‬ ‫همان‬(TCNTxH)‫رجیستر‬ ‫در‬TEMP.‫گیرد‬ ‫می‬ ‫قرار‬ ‫هنگامیکله‬ ‫سلپس‬CPU‫مقدار‬ ‫بخواند‬ ‫را‬ ‫بال‬ ‫بایلت‬ ‫محتوای‬ ‫بخواهلد‬ TEMP‫خواند‬ ‫خواهد‬ ‫.را‬ •‫از‬ ‫خواندن‬ ‫برای‬ ‫بنابراین‬TCNTx‫باید‬ ‫ابتدا‬TCNTxL.‫شود‬ ‫خوانده‬ a=TCNT1L; b=TCNT1H; ‫یا‬ c=TCNT1;
  • 38. •‫کلی‬ ‫بطور‬CPU‫بیتی‬ ‫شانزده‬ ‫رجیسترهای‬ ‫تمام‬ ‫به‬ ‫دستیابی‬ ‫برای‬ .‫نماید‬ ‫می‬ ‫استفاده‬ ‫شده‬ ‫ذکر‬ ‫روش‬ ‫از‬ •‫به‬ ‫دسلتیابی‬ ‫العملل‬ ‫دسلتور‬ ‫دو‬ ‫مابیلن‬ ‫وقفله‬ ‫یلک‬ ‫اگلر‬TCNTx‫ایجاد‬ ‫قبل‬ ‫باید‬ ‫بنابراین‬ .‫شود‬ ‫خطا‬ ‫دچار‬ ‫است‬ ‫ممکن‬ ‫دستیابی‬ ‫نتیجه‬ ، ‫شود‬ ‫به‬ ‫دستیابی‬ ‫از‬TCNTx‫و‬ ‫نموده‬ ‫فعال‬ ‫غیر‬ ‫را‬ ‫سراسری‬ ‫وقفه‬ ‫ابتدا‬ .‫نمود‬ ‫فعال‬ ‫را‬ ‫آن‬ ‫دستیابی‬ ‫از‬ ‫بعد‬ sreg=SREG; #asm(“cli”) TCNT1=0x00FF; SREG=sreg;
  • 39. 8-138-13‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ ‫خروجی‬ ‫مقایسه‬ ‫رجیسترهای‬‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ ‫خروجی‬ ‫مقایسه‬ ‫رجیسترهای‬ ))OCRxC,OCRxB,OCRxAOCRxC,OCRxB,OCRxA(( ‫دستیابی‬ ‫طریقه‬CPU‫به‬ ‫دستیابی‬ ‫همانند‬ ‫رجیسترها‬ ‫این‬ ‫به‬ TCNTx.‫است‬
  • 40. 8-148-14‫وسه‬ ‫کانتریک‬ /‫تایمر‬ ‫کنترلی‬ ‫رجیسترهای‬‫وسه‬ ‫کانتریک‬ /‫تایمر‬ ‫کنترلی‬ ‫رجیسترهای‬ ))TCCRxB,TCCRxATCCRxB,TCCRxA(( •‫تایملر‬ ‫کنترل‬ ‫کار‬ ‫مجموعلا‬ ‫رجیسلتر‬ ‫دو‬ ‫ایلن‬16‫عهده‬ ‫به‬ ‫را‬ ‫بیتلی‬ ‫تایمر‬ ‫در‬ ‫آنچله‬ ‫بله‬ ‫شبیله‬ ‫عملکردی‬ ‫هلا‬ ‫رجیسلتر‬ ‫ایلن‬ ‫بیتهای‬ .‫دارند‬ ‫به‬ ‫بیشتلر‬ ‫توضیحات‬ ‫برای‬ .‫دارند‬ ‫شلد‬ ‫گفتله‬ ‫پیشرفتله‬ ‫بیتلی‬ ‫هشلت‬ .‫شود‬ ‫مراجعه‬ ‫دیتاشیت‬ •‫هنگامی‬ ‫داشلت‬ ‫توجله‬ ‫نکتله‬ ‫ایلن‬ ‫بله‬ ‫بایلد‬‫که‬OCXA, OCXB, OCXC‫به‬ ‫مربوطه‬ ‫پورت‬ ‫بایستی‬ ‫شود‬ ‫می‬ ‫متصل‬ ‫خروجی‬ ‫پایه‬ ‫به‬ .‫شود‬ ‫پیکربندی‬ ‫خروجی‬ ‫صورت‬
  • 41. 8-158-15‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ ‫عملکرد‬‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ ‫عملکرد‬ ‫عادی‬‫عادی‬))WGMx3:0=0WGMx3:0=0(( •‫این‬ ‫زیرا‬ ،‫شود‬ ‫نمی‬ ‫توصیه‬ ‫عادی‬ ‫عملکرد‬ ‫حالت‬ ‫در‬ ‫موج‬ ‫شکل‬ ‫تولید‬ ‫از‬ ‫زیادی‬ ‫زمان‬ ‫املر‬CPU‫بهتری‬ ‫های‬ ‫.گزینه‬ ‫کند‬ ‫ملی‬ ‫اشغال‬ ‫را‬ .‫دارد‬ ‫وجود‬ ‫موج‬ ‫شکل‬ ‫تولید‬ ‫برای‬
  • 42. ‫یک‬ ‫تایمر‬ ‫خروجی‬ ‫های‬ ‫پایه‬ ‫عملکرد‬ ‫از‬ ‫ای‬ ‫نمونه‬
  • 43. 8-168-16‫مقایسه‬ ‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ ‫عملکرد‬‫مقایسه‬ ‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ ‫عملکرد‬))CTCCTC(( •‫جهت‬ ‫تواند‬ ‫می‬ ‫وقفه‬ ‫روال‬ ، ‫باشد‬ ‫فعال‬ ‫وقفه‬ ‫اگر‬Update‫مقدار‬ ‫نمودن‬TOP ‫تغییر‬ ‫حال‬ ‫این‬ ‫با‬ .‫رود‬ ‫کار‬ ‫به‬TOP‫در‬ ‫تایمر‬ ‫که‬ ‫هنگامی‬ ‫جدید‬ ‫مقدار‬ ‫یک‬ ‫به‬ ‫حالت‬ ‫زیرا‬ ،‫شود‬ ‫انجام‬ ‫احتیاط‬ ‫با‬ ‫باید‬ ‫است‬ ‫شمارش‬ ‫حال‬CTC‫ویژگی‬ ‫دارای‬ .‫باشد‬ ‫نمی‬ ‫مضاعف‬ ‫بافر‬
  • 44. 8-178-17‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ ‫عملکرد‬‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫کانتر‬ / ‫تایمر‬ ‫عملکرد‬ PWMPWM
  • 45. ‫موج‬ ‫تولید‬PWM‫تایمر‬ ‫خروجی‬ ‫های‬ ‫پایه‬ ‫روی‬
  • 46. 8-188-18‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫کانتریک‬ / ‫تایمر‬ ‫عملکرد‬‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫کانتریک‬ / ‫تایمر‬ ‫عملکرد‬PWMPWM (‫شیب‬ ‫)دو‬ ، ‫فاز‬ ‫تصحیح‬(‫شیب‬ ‫)دو‬ ، ‫فاز‬ ‫تصحیح‬
  • 47. ‫شکل‬‫شکل‬88--3030‫حالت‬ ‫تایمردر‬ ‫عملکرد‬ ‫از‬ ‫ای‬ ‫نمونه‬‫حالت‬ ‫تایمردر‬ ‫عملکرد‬ ‫از‬ ‫ای‬ ‫نمونه‬PWMPWM‫فاز‬ ‫تصحیح‬‫فاز‬ ‫تصحیح‬
  • 49. 8-198-19‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫کانتریک‬ /‫تایمر‬ ‫عملکرد‬‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫کانتریک‬ /‫تایمر‬ ‫عملکرد‬PWMPWM ‫فرکانس‬ ‫و‬ ‫فاز‬ ‫تصحیح‬‫فرکانس‬ ‫و‬ ‫فاز‬ ‫تصحیح‬ •‫این‬ ‫عملکرد‬PWM‫همانند‬PWM‫موجود‬ ‫تفاوت‬ ‫.تنها‬ ‫باشد‬ ‫می‬ ‫فاز‬ ‫تصحیح‬ ‫رجیسترهای‬ ‫بروزرسانی‬ ‫زمان‬ ‫در‬OCRxC,OCRxB,OCRxA. ‫است‬ ‫به‬‫ب‬‫ب‬ ،‫بر‬‫ب‬‫تایم‬ ‫شمارنده‬ ‫مقدار‬ ‫به‬‫ب‬‫ک‬ ‫بی‬‫ب‬‫هنگام‬)00H)BOTTOM‫این‬ ‫بید‬‫ب‬‫رس‬ .‫شوند‬ ‫می‬ ‫بروز‬ ‫رجیسترها‬ •‫برخل ف‬PWM‫رجیسترهای‬ ‫شدن‬ ‫بروز‬ ‫بت‬‫ب‬‫عل‬ ‫به‬‫ب‬‫ب‬ ‫به‬‫ب‬‫ک‬ ‫فاز‬ ‫بحیح‬‫ب‬‫تص‬ OCRxA,B,C‫در‬TOP.‫شود‬ ‫می‬ ‫نامتقارن‬ ‫خروجی‬ ‫تولید‬ ‫به‬ ‫منجر‬ •‫در‬PWM‫در‬ ‫شدن‬ ‫بروز‬ ‫بعلت‬ ‫فرکانبس‬ ‫و‬ ‫فاز‬ ‫تصبحیح‬BOTTOM ‫شکل‬ .‫بود‬ ‫خواهد‬ ‫متقارن‬ ‫صورت‬ ‫به‬ ‫خروجی‬8-33.
  • 50. ‫شکل‬‫شکل‬88--3333‫موج‬ ‫متقارن‬ ‫خروجی‬‫موج‬ ‫متقارن‬ ‫خروجی‬PWMPWM‫تصحیح‬ ‫حالت‬ ‫در‬‫تصحیح‬ ‫حالت‬ ‫در‬ ‫فرکانس‬ ‫و‬ ‫فاز‬‫فرکانس‬ ‫و‬ ‫فاز‬
  • 51. 8-208-20‫تسخیر‬ ‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫/کانتر‬ ‫تایمر‬‫تسخیر‬ ‫حالت‬ ‫در‬ ‫سه‬ ‫و‬ ‫یک‬ ‫/کانتر‬ ‫تایمر‬ •‫پایه‬ ‫حالت‬ ‫این‬ ‫در‬ICPx‫پایه‬ ‫کنترلرها‬ ‫میکرو‬ ‫از‬ ‫برخی‬ ‫)در‬ICx‫به‬ ( ‫بال‬ ‫لبه‬ ‫در‬ ‫سیگنالی‬ ‫که‬ ‫هنگامی‬ ‫و‬ ‫شود‬ ‫می‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫ورودی‬ ‫عنوان‬ ‫رجیستر‬ ‫محتوای‬ ، ‫شود‬ ‫مبی‬ ‫اعمال‬ ‫پایبه‬ ‫ایبن‬ ‫ببه‬ ‫رونده‬ ‫پاییبن‬ ‫یبا‬ ‫رونده‬ TCNTx‫تسخیر‬ ‫بایتی‬ ‫دو‬ ‫رجیستر‬ ‫در‬)ICRx(‫پرچم‬ ‫و‬ ‫گیرد‬ ‫می‬ ‫قرار‬ ICFx. ‫رود‬ ‫می‬ ‫بال‬ •.‫شود‬ ‫می‬ ‫اجرا‬ ‫نیز‬ ‫وقفه‬ ‫روال‬ ، ‫مربوطه‬ ‫وقفه‬ ‫بودن‬ ‫فعال‬ ‫صورت‬ ‫در‬ •‫گر‬ ‫مقایسبه‬ ‫خروجبی‬ ‫آبن‬ ‫و‬ ‫دارد‬ ‫وجود‬ ‫تسبخیر‬ ‫برای‬ ‫نیبز‬ ‫دیگری‬ ‫منببع‬ ‫آنالوگ‬)ACO(. ‫باشد‬ ‫می‬
  • 52. •‫رجیستر‬ICRx: •‫شانزده‬ ‫رجیسترهای‬ ‫همانند‬ ‫رجیستر‬ ‫این‬ ‫در‬ ‫نوشتن‬ ‫و‬ ‫خواندن‬ ‫طریقه‬ .‫است‬ ‫قبل‬ ‫در‬ ‫شده‬ ‫تشریح‬ ‫بیتی‬ •‫رجیستر‬ ‫در‬ ‫البته‬ICRx‫به‬ ‫آن‬ ‫از‬ ‫که‬ ‫نوشت‬ ‫توان‬ ‫می‬ ‫هنگامی‬ ‫تنها‬ ‫مقدار‬ ‫عنوان‬TOP.‫شود‬ ‫استفاده‬ ‫موج‬ ‫شکل‬ ‫تولید‬ ‫حالت‬ ‫در‬ ‫تایمر‬
  • 53. •:‫نویز‬ ‫کاهش‬ ‫واحد‬ ‫بیت‬ ‫تنظیم‬ ‫با‬ ‫واحد‬ ‫این‬ICNCx‫رجیستر‬ ‫در‬TCCRxB‫می‬ ‫فعال‬ ‫پایه‬ ‫به‬ ‫سیگنالی‬ ‫هرگاه‬ ، ‫شدن‬ ‫فعال‬ ‫از‬ ‫پس‬ ‫و‬ ‫شود‬ICPx،‫شود‬ ‫وارد‬ ‫برابری‬ ‫صورت‬ ‫در‬ ‫کبه‬ ‫شود‬ ‫مبی‬ ‫گرفتبه‬ ‫آبن‬ ‫از‬ ‫یکسبان‬ ‫نمونبه‬ ‫چهار‬ .‫پذیرد‬ ‫می‬ ‫انجام‬ ‫تسخیر‬ ، ‫آنها‬ •‫پایبه‬ ‫روی‬ ‫ورودی‬ ‫سبیگنال‬ ‫بنابرایبن‬ICPx‫پالس‬ ‫چهار‬ ‫برای‬ ‫بایبد‬ .‫باشد‬ ‫معتبر‬ ‫سیستم‬ ‫سیکل‬ ‫ساعت‬ •‫تسخیر‬ ‫لبه‬ ‫انتخاب‬ ‫بیت‬ ‫کمک‬ ‫به‬)ICESx(‫کرد‬ ‫انتخاب‬ ‫توان‬ ‫می‬ .‫رونده‬ ‫پایین‬ ‫لبه‬ ‫در‬ ‫یا‬ ‫دهد‬ ‫رخ‬ ‫رونده‬ ‫بال‬ ‫لبه‬ ‫در‬ ‫تسخیر‬ ‫که‬
  • 54. 8-218-21( ‫بیتی‬ ‫)هشت‬ ‫دو‬ ‫کانتر‬ / ‫تایمر‬( ‫بیتی‬ ‫)هشت‬ ‫دو‬ ‫کانتر‬ / ‫تایمر‬ •.‫باشد‬ ‫می‬ ‫پیشرفته‬ ‫حالت‬ ‫در‬ ‫صفر‬ ‫تایمر‬ ‫مشابه‬ ‫تایمر‬ ‫این‬ ‫عملکرد‬ •‫به‬ ‫کبه‬ ‫تفاوت‬ ‫ایبن‬ ‫.با‬ ‫اسبت‬ ‫صبفر‬ ‫تایمبر‬ ‫مشاببه‬ ‫نیبز‬ ‫آبن‬ ‫رجیسبترهای‬ ‫می‬ ‫جایگزیبن‬ ‫دو‬ ‫پسبوند‬ ‫کانترهبا‬ ‫و‬ ‫هبا‬ ‫تایمبر‬ ‫در‬ ‫صبفر‬ ‫پسبوند‬ ‫جای‬ .‫شود‬
  • 55. 8-238-23‫خارجی‬ ‫کریستال‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫همزمان‬ ‫غیر‬ ‫عملکرد‬‫خارجی‬ ‫کریستال‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫همزمان‬ ‫غیر‬ ‫عملکرد‬ ))RTC) 32.768KHzRTC) 32.768KHz •‫کنترلرهای‬ ‫میکرو‬ ‫از‬ ‫برخی‬ ‫در‬ ‫دو‬ ‫یا‬ ‫صفر‬ ‫تایمر/کانتر‬AVR‫را‬ ‫قابلیت‬ ‫این‬ ‫یا‬ ‫واقعبی‬ ‫سباعت‬ ‫عنوان‬ ‫ببه‬ ‫و‬ ‫همزمان‬ ‫غیبر‬ ‫صبورت‬ ‫ببه‬ ‫کبه‬ ‫دارنبد‬RTC (Real Time Clock(. ‫نمایند‬ ‫عمل‬ •‫خارجی‬ ‫کریسبتال‬ ‫یبک‬ ‫کمبک‬ ‫ببه‬ ‫داخلبی‬ ‫سباز‬ ‫نوسبان‬ ‫یبک‬ ‫حالبت‬ ‫ایبن‬ ‫در‬ 32.768KHz‫های‬ ‫پایه‬ ‫به‬ ‫که‬TOSC1‫و‬TOSC2‫است‬ ‫شده‬ ‫متصل‬ .‫رود‬ ‫می‬ ‫کار‬ ‫به‬ ‫تایمر‬ ‫ساعت‬ ‫پالس‬ ‫کننده‬ ‫تامین‬ ‫عنوان‬ ‫به‬ •‫کریسبتال‬ ‫از‬ ‫اسبتفاده‬ ‫برای‬ ‫داخلبی‬ ‫سباز‬ ‫نوسبان‬32.798KHz‫سازی‬ ‫بهینبه‬ ‫کند‬ ‫نمی‬ ‫عمل‬ ‫خوبی‬ ‫به‬ ‫بالتر‬ ‫های‬ ‫فرکانس‬ ‫در‬ ‫و‬ ‫است‬ ‫شده‬.
  • 56. ‫همزمان‬ ‫غیر‬ ‫وضعیت‬ ‫رجیستر‬‫همزمان‬ ‫غیر‬ ‫وضعیت‬ ‫رجیستر‬ASSRASSR •‫دو‬ ‫یا‬ ‫صفر‬ ‫کانتر‬ / ‫تایمر‬ ‫همزمان‬ ‫غیر‬ ‫بیت‬)ASx(: ‫بیت‬ ‫اگر‬ASx‫سیستم‬ ‫اصلی‬ ‫ساعت‬ ‫پالس‬ ‫طریق‬ ‫از‬ ‫تایمر‬ ‫باشد‬ ‫صفر‬ )CLK-I/O(،‫باشد‬ ‫یبک‬ ‫بیبت‬ ‫ایبن‬ ‫اگبر‬ ‫امبا‬ .‫شود‬ ‫مبی‬ ‫بندی‬ ‫زمان‬ ‫می‬ ‫بندی‬ ‫زمان‬ (‫سباعت‬ ‫)کریسبتال‬ ‫خارجبی‬ ‫کریسبتال‬ ‫توسبط‬ ‫تایمبر‬ .‫شود‬ ‫که‬ ‫وقتی‬ ‫که‬ ‫که‬ ‫داشت‬ ‫توجه‬ ‫باید‬ASx‫است‬ ‫ممکن‬ ، ‫کند‬ ‫می‬ ‫تغییر‬ ‫های‬ ‫رجیستر‬ ‫محتویات‬TCCRx , OCRx , TCNTx‫خراب‬ .‫شود‬
  • 57. ‫دو‬ ‫یا‬ ‫صفر‬ ‫کانتر‬ / ‫تایمر‬ ‫کردن‬ ‫بروز‬ ‫بیت‬)TCNxUB(: •‫در‬ ‫و‬ ‫کند‬ ‫مبی‬ ‫عمبل‬ ‫همزمان‬ ‫غیبر‬ ‫طور‬ ‫ببه‬ ‫کانتبر‬ / ‫تایمبر‬ ‫کبه‬ ‫هنگامبی‬ TCNTx‫که‬ ‫زمانبی‬ ‫و‬ . ‫شبد‬ ‫خواهبد‬ ‫فعال‬ ‫بیبت‬ ‫ایبن‬ ، ‫شود‬ ‫نوشتبه‬ ‫مقداری‬ TCNTx‫بیت‬ ‫این‬ ، ‫باشد‬ ‫شده‬ ‫بروز‬ ‫موقت‬ ‫سازی‬ ‫ذخیره‬ ‫رجیستر‬ ‫طریق‬ ‫از‬ .‫شود‬ ‫می‬ ‫پاک‬ ‫خودکار‬ ‫صورت‬ ‫به‬ ‫و‬ ‫افزار‬ ‫سخت‬ ‫توسط‬ •‫که‬ ‫است‬ ‫این‬ ‫نشانگر‬ ‫بیت‬ ‫این‬ ‫بودن‬ ‫صفر‬TCNTx‫یک‬ ‫با‬ ‫شدن‬ ‫بروز‬ ‫آماده‬ . ‫است‬ ‫جدید‬ ‫مقدار‬ ‫های‬ ‫بیت‬OCRxUB‫و‬TCRxUB: ‫همانند‬ ‫ها‬ ‫بیت‬ ‫این‬ ‫عملکرد‬TCNxUB‫رجیستر‬ ‫برای‬ ‫ولی‬ ‫بوده‬OCRx‫و‬ TCCRx.‫کند‬ ‫می‬ ‫عمل‬
  • 58. •‫رجیستر‬ ‫سبه‬ ‫ایبن‬ ‫از‬ ‫کدام‬ ‫هبر‬ ‫در‬ ‫نوشتبن‬ ‫عمبل‬ ‫اگبر‬)TCCRx , OCRx , TCNTx(‫بروز‬ ‫مقدار‬ ‫شود‬ ‫انجام‬ ‫باشد‬ ‫فعال‬ ‫آنها‬ ‫کردن‬ ‫بروز‬ ‫پرچم‬ ‫که‬ ‫زمانی‬ ‫در‬ .‫شود‬ ‫عمدی‬ ‫غیر‬ ‫وقفه‬ ‫یک‬ ‫بروز‬ ‫باعث‬ ‫یا‬ ‫و‬ ‫رفته‬ ‫دست‬ ‫از‬ ‫است‬ ‫ممکن‬ ‫کردن‬ •‫خواندن‬ ‫زمان‬ ‫در‬ . ‫است‬ ‫متفات‬ ‫رجیستر‬ ‫سه‬ ‫این‬ ‫خواندن‬ ‫مکانیزم‬TCNTx‫مقدار‬ ‫خواندن‬ ‫زمان‬ ‫در‬ ‫و‬ ‫شده‬ ‫خوانده‬ ‫تایمر‬ ‫واقعی‬TCCRx , OCRx‫در‬ ‫واقع‬ ‫مقدار‬ .‫شود‬ ‫می‬ ‫خوانده‬ ‫موقت‬ ‫رجیستر‬ •‫مد‬ ‫در‬ ، ‫همزمان‬ ‫غیر‬ ‫حالت‬ ‫در‬ ‫کانتر‬ / ‫تایمر‬power-save‫باشد‬ ‫می‬ ‫فعال‬ ‫نیز‬ ‫ازحالت‬ ‫شدن‬ ‫سرریز‬ ‫از‬ ‫پس‬ ‫و‬power-save‫فعال‬ ‫صورت‬ ‫در‬ ‫و‬ ‫شده‬ ‫خارج‬ ‫حالت‬ ‫به‬ ‫دوباره‬ ‫و‬ ‫شده‬ ‫اجرا‬ ‫وقفه‬ ‫روال‬ ، ‫مربوطه‬ ‫وقفه‬ ‫بودن‬power-save‫باز‬ ‫گردد‬ ‫می‬.
  • 59. •‫کریستال‬ ‫از‬ ‫استفاده‬ ‫با‬32.768KHz‫تقسیم‬ ‫واحد‬ ‫که‬ ‫صورتی‬ ‫در‬ ‫و‬ ‫تقسیم‬ ‫ضریب‬ ‫با‬ ‫ساعت‬ ‫پالس‬128‫مقدار‬ ‫از‬ ‫تایمر‬ ‫و‬ ‫باشد‬ ‫شده‬ ‫تنظیم‬ 00H‫تا‬FFH‫به‬ ‫توان‬ ‫می‬ ‫تایمر‬ ‫سرریز‬ ‫پرچم‬ ‫از‬ .‫نماید‬ ‫شمارش‬ ‫برای‬ ‫دقیق‬ ‫ای‬ ‫ثانیه‬ ‫یک‬ ‫پالس‬ ‫یک‬ ‫عنوان‬RTC. ‫نمود‬ ‫استفاده‬ •‫ساعت‬ ‫برنامه‬ ‫یک‬ : ‫مثال‬)RTC(‫همزمان‬ ‫غیر‬ ‫عملکرد‬ ‫کمک‬ ‫به‬ ‫در‬ATmega64.‫بنویسید‬
  • 60. #include <mega64.h> unsigned int second,minute,hours; void main(){ ASSR=0x08; //AS0=1 TCNT0=0x00; TCCR0=0x05; //prescale=128 while(ASSR & 0X07); //wait until all update busy flags cleared TIMSK=0x01; //Timer_Ovf=active #asm(“sei”) while(1); } interrupt [TIM0_OVF] void clock_isr(void) { if(second==59){ second=0; if(minute==59){ minute=0; if(hours==23){ hours=0; else{ hours++; } else{ minute++; } else{ second++; }
  • 61. 8-258-25‫خروجی‬ ‫مقایسه‬ ‫مدولتور‬‫خروجی‬ ‫مقایسه‬ ‫مدولتور‬ •‫های‬ ‫خروجی‬)or OC0A ) OC2 ,OC1C‫خروجی‬ ‫پایه‬ ‫دارای‬ ‫مشترک‬)PORTB.7(‫یک‬ ‫در‬ ‫خروجی‬ ‫دو‬ ‫هر‬ ‫اگر‬ ‫و‬ .‫باشند‬ ‫می‬ .‫شود‬ ‫می‬ ‫فعال‬ ‫خودکار‬ ‫طور‬ ‫به‬ ‫مدولتور‬ ، ‫باشند‬ ‫فعال‬ ‫زمان‬ ‫اگببر‬PORTB.7=1‫نوع‬ ‫از‬ ‫مدولسببیون‬ ‫باشببد‬OR‫اگر‬ ‫و‬ PORTB.7=0‫نوع‬ ‫از‬ ‫مدولسیون‬ ، ‫باشد‬AND‫است‬.