المسجل TCCR0
ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
40
CS00
CS01
CS02
وظيفة المقاطعة
0
0
0
الإيقاف، يتم إيقاف المؤقت 0
1
0
0
استخدام ساعة النظام، CK
0
1
0
استخدام ساعة النظام مقسمة على 8 ، CK/8
1
1
0
استخدام ساعة النظام مقسمة على 64 ، CK/64
0
0
1
استخدام ساعة النظام مقسمة على 256
1
0
1
استخدام ساعة النظام مقسمة على 1024 ، CK/1024
0
1
1
يقوم القطب الخارجي T0 بعد الجبهات الهابطة
1
1
1
يقوم القطب الخارجي T0 بعد الجبهات الصاعدة
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
مسجل التحكم T/C
يستخدم مسجل التحكم بالعداد والمؤقت ) TCCR0 ( من أجل
تحديد نمط العمل باستخدام بتات تحديد نمط توليد الموجة
( WGM0[1:0] ،)
تحديد عمل المؤقت ضمن نمط محدد باستخدام البتات
COM0[1:0] ، و
اختيار مصدر الساعة باستخدام البتات CS0[2:0]
ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
41
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
42
عادي
تصحيح طور ال PWM
CTC
PWM السريع
عادي، يتم فصل OC0
تفعيل OC0 عند حصول تطابق بالمقارنة
محي قيمة OC0 عند حصول تطابق بالمقارنة
إعطاء OC0 قيمة عند حصول تطابق بالمقارنة
عادي، OC0 غير متصل.
محجوز.
محي قيمة OC0 عند حصول تطابق بالمقارن
أثناء العد التصاعدي. إعطاء قيمة فعالة ل OC0
عند حصول تطابق أثناء العد التنازلي.
إعطاء قيمة فعالة ل OC0 عند حصول تطابق
أثناء العد التصاعدي. محي قيمة OC0 عند
حصول تطابق أثناء العد التنازلي.
عادي، OC0 غير متصل.
محجوز.
محي OC0 عند حصول تطابق، تحديد قيمة OC0 عند
القمة.
إعطاء قيمة فعالة ل OC0 عند حصول تطابق، محي
OC0 عند القمة.
إعدادات البتات في TCCR0
ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
مقاطعات المؤقت
تستخدم T/C0 من أجل تزويدنا بتأخيرات محددة مسبقا ضمن
برنامجنا.
T/C0 هو مؤقت مؤلف من 8 بتات.
يعود إلى البداية في كل مرة يتلقى فيها 256 نبضة ساعة من
المؤقت.
المقاطعة التي ترافق طفحان T/C0 .
عند تفعيلها، ستحصل مقاطعة عند كل مرة تنتقل فيها محتويات
T/C0 من 255 إلى 0 .
ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
43
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
T/C مسجل قناع المقاطعة
قناع المقاطعة لل عداد/مؤقت ) TIMSK )
المقاطعة الناتجة عن تطابق خرج T/C0 تفعل البت ) OCIE0 ،)
عندما يتم إعطاء القيمة 1 للبت OCIE0 والبت 7 في SR ، يتم تفعيل مقاطعة
تطابق المقارنة ل T/C0 .
المقاطعة الناتجة عن طفحان T/C0 تفعل ) TOIE0 ،)
عندما يتم إعطاء القيمة 1 للبت TOIE0 والبت 7 في SR ، يتم تفعيل مقاطعة
الطفحان الناتج عن T/C0 .
ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
44
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
T/C ومسجلات مقارنة الخرج
مسجل ال مؤقت/عداد ) TCNT0 )
TCNT0 هو عداد من 8 بتات للمؤقت 0 .
مسجل مقارنة الخرج ) OCR0 )
يحمل OCR0 القيمة التي يتم باستمرار مقارنتها مع TCNT0 .
ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
45
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
مسجل علم المقاطعة ل T/C
علم المقاطعة لل مؤقت/عداد ) TIFR )
يستخدم المؤقت 0OCF0 ، والتي تأخذ قيمة فعالة عند حصول
تطابق على مقارن الخرج.
كما أنها تستخدم TOV0 ، الذي يأخذ قيمة فعالة عند حصول طفحان
في المؤقت/عداد 0 .
ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
46
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
المثال 1 : طريقة الحصول على حدث زمني عالي
» نبضة برنامج « الدقة
. 1 يتم اختيار رقم ما وتحميله ضمن المؤقت.
. 2 يقوم المؤقت بالعد من هذا الرقم حتى الوصول إلى 255 .
. 3 عندما يعود المؤقت إلى البداية، فإنه سيولد مقاطعة.
. 4 يقوم ال ISR بإعادة تحميل الرقم ذاته ضمن المؤقت،
• يقوم بتنفيذ العمليات الحساسة جدا للوقت، ومن ثم يعود.
. 5 تعود الكرة، لتتولد مقاطعة أخرى.
. 6 كلما كان الرقم أصغر، كلما كانت الفترة اللازمة لوصول المؤقت إلى القيمة 255
والعودة إلى البداية أكبر،
• وكلما كان دور النبضة أكبر.
ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
47
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
المثال 2 : تبديل حالة الليد كل 0.5 ثانية
الليد موصول مع PC0 .
تردد الساعة = 6 ميغاهيرتز.
تحصل المقاطعة كل 0.5 ثانية.
نسبة تقسيم التردد هي )تردد
الساعة/ 8 .)
ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
48
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
عملية الحساب
. 1 أولا نختار تقسيم نبضة الساعة ليكون )تردد الساعة/ 8 .)
•6 ميغاهيرتز/ 8 = 750 كيلوهيرتز، ولها الدور 1.333 ميكرو ثانية
. 2 نحصل على الزمن الكلي كالتالي:
•256 * 1.333 = 340 ميكروثانية.
•340 ميكروثانية ليست كافية لنحصل على التأخير 500 ميللي ثانية.
• وهي ليست فترة زمنية متوازنة تماما بحيث يمكن التعامل معها،
• تستغرق ال 225 عدة مدة قدرها 300 ميكروثانية
. 3 نختار العدد الذي سيعيد العداد إلى البداية كالتالي:
256 – 225 = 31
ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
49
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
عملية الحساب
. 4 نستخدم متحولا عامّا ليقوم بالعد إلى القيمة 1666 ، وذلك للحصول
على زمن قدره 500 ميللي ثانية ) 300 ميكروثانية * 1666 ≅
500 ميللي ثانية(.
. 5 يتم تحميل القيمة 31 في TCCNT0 ، كل مرة يتم فيها تنفيذ ISR .
. من أجل عد المرات التي سيتم » عداد الوقت « 6 نستخدم متحولا عامّا اسمه
فيها تنفيذ ISR .
• يتم زيادته ومن ثم اختباره فيما إذا وصل إلى القيمة 1666 ،
• يتم تغيير حالة PC0 إلى الصفر. » عداد الوقت « ، ومن ثم إعادة ضبط
ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
50
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
برنامج ومضات الليد
#include <mega16.h>
static unsigned inttime_count; /* عداد لل 0.5 ثانية */
// نمط المقاطعة لطفحان العداد 0
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0 = 31; /* تحديد الطفحان عند
300 ميكروثانية */
++time_count; /* زيادة عداد ال
0.5 ثانية */
if (time_count== 1666)
{
PORTC.0 = (POTC.0 ^ 1); /* إتمام بت القطب لجعل الليد يومض */
time_count= 0 /* إعادة
ضبط عداد الوقت ليبدأ بعد ال 0.5 ثانية التالية
*/
}
}
ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
51
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
برنامج ومضات الليد
void main (void)
{
DDRC = 0x01; /* تحديد حالة البت
الأول ليكون خرج */
/* تحديد قيمة التقسيم إلى 8*/
TCCR0 = 0x02;
TCNT0 = 0x00;
OCR0 = 0x00;
/* إزالة القناع عن مقاطعة الطفحان
للمؤقت 0*/
TIMSK = 0x01;
/* تفعيل المقاطعات */
#asm(“sei”)
while(1)
{
; /* لا تفعل شيئا هنا */
}
}
ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
52
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
المؤقت 1
يحتوي ال )مؤقت/عداد 1 ( على مسجل واحد بطول 16 بت لتسجيل
حالة الدخل، ومسجلين بطول 16 بت للمقارنة.
• يستخدم مسجل الدارة المتكاملة لقياس عرض النبضة أو زمن الالتقاط.
• تستخدم مسجلات ال OC لتوليد ترددات أو نبضات من ال T/C إلى الخرج
OC1 على المعالج الصغري.
• يتم إيقاف، وبدء، وإعادة ضبط T0 . وكذلك هو الحال بالنسبة ل T1 ، لكن في
العادة نتركه بحالة عمل حر.
• يقوم TCCR1A بالتحكم بنمط المقارنة ونمط تعديل عرض النبضة في
المؤقت 1 .
• يقوم TCCR1B بالتحكم بالتقسيمات وانتخاب دخل ال T1 .
ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
53
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
المؤقت 1
تستخدم خاصية التقاط الدخل لالتقاط خصائص إشارة الدخل،
بما فيها الدور، والتردد، ودورة العمل، وطول النبضة.
يتم ذلك عن طريق مراقبة حافة يحددها المستخدم، على
القطب ICP1 من المعالج الصغري.
عندما تحدث الحافة المطلوبة، يتم التقاط قيمة المسجل
TCNT1 وتخزينها ضمن ICR1 .
ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
54
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
المخطط الصندوقي
للمؤقت
55
ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
المسجلين TCCR1A و TCCR1B
. 1 تحديد نمط العمل بتحديد بتات نمط شكل الإشارة
( WGM1[3:0] ،)
. 2 تحديد عمل المؤقت ضمن نمط معين مع بتات نمط الخرج
عند تطابق المقارن )القناة A ، COM1A[1:0] ؛ القناة BCOM1B[1:0] (، و
. 3 تحديد مصدر الساعة باستخدام البتات CS1[2:0] .
ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
56
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
تعريف البتات في TCCR1B
البت
الوظيفة
ICNC1
إزالة الضجيج أثناء التقاط الدخل ) 1 = مفعل(
ICES1
تحديد جبهة التقاط الدخل ) 1 = جبهة صاعدة، 0 = جبهة هابطة (
WGM1x
التحكم بشكل موجة الخرج. انظر TCCR1A
CS12
بتات تحديد الدخل للعداد، تماما كتعريف المؤقت 0 .
CS11
CS10
ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
57
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
at | Permalink
شكرلكم علئ تنويركم لنا
at | Permalink
أهلا وسهلا بكم، وشكرا على المتابعة.