قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 08-03-2011, 09:15 AM المشاركة 1   
افتراضي طريقة التعامل مع المؤقت / العداد TMR0 Twitter FaceBook Google+



طريقة التعامل مع المؤقت / العداد TMR0
المؤقت TMR0 له مجموعة واسعة من التطبيقات العملية .
قليل جدا من البرامج لا تستخدمه بطريقة أو بأخرى .من المريح والسهل جدا استخدامه لكتابة البرامج أو البرامج الفرعية لتوليد نبضات بمدة زمنية محددة أوقياس الوقت أو فى عد النبضات (الأحداث) الخارجية .

وحدة (موديول) المؤقت TMR0 هى مؤقت / عداد ذات 8 خانات 8-bit timer/counter بالخصائص التالية :
  • مؤقت /عداد ذات ثمانى خانات .
  • يعمل معه " المقياس المسبق " أو "معامل القسمة" prescaler ذو ثمانى خانات (بالتقاسم مع مؤقت الحراسة WDT )
  • قابل للبرمجة لااستخدام مصدر نبضات ساعة clock داخلى أو خارجى .
  • يسبب مقاطعة عند حدوث طفحان (تجاوز حده الأقصى ) overflow .
  • قابل للبرمجة لاختيار حافة نبضات الساعة الخارجية .
الشكل التالى يبين مخطط للمؤقت TMR0 بجميع الخانات التى تحدد عمله . هذه الخانات تخزن (تحفظ) فى السجل OPTION_REG .









السجل OPTION_REG .







وصف الخانات :
  • RBPU : خانة تمكين مقاومات السحب لأعلا للمنفذ PORTB .
1 : عدم تمكين مقاومات السحب لأعلى للمنفذ PORTB.
0 : تمكين توصيل أطراف المنفذ PORTB بمقاومات السحب لأعلى الداخلية .

  • INTEDG : خانة "اختيار حافة المقاطعة "
1: المقاطعة عند الحافة الصاعدة على طرف المقاطعة INT pin أى التحول من الحالة المنخفضة إلى الحالة المرتفعة (0-1).
0 : المقاطعة عند الحافة الهابطة على طرف المقاطعة INT pin أى عند التحول من الحالة المرتفعة إلى الحالة المنخفضة (1-0) .
  • T0CS: خانة اختيار ساعة المؤقت TMR0 .
1 : تصل النبضات إلى دخل المؤقت / العداد TMR0 من خلال الطرف RA4 .
0 : يستخدم المؤقت ساعة الدورة الداخلية (Fosc/4) .
  • T0SE : خانة اختيار حافة مصدر المؤقت TMR0 .
1 : تزايد عند الانتقال من الحالة المرتفعة إلى الحالة المنخفضة على طرف المؤقت TMR0 .
0 : تزايد عند الانتقال من الحالة المنخفضة إلى الحالة المرتفعة على طرف المؤقت TMR0 .
  • PSA : خانة تخصيص "المقياس المسبق " Prescaler .
1: تخصيص Prescaler لمؤقت الحراسة WDT .
0 : تخصيص Prescaler للمؤقت / العداد TMR0 .
  • PS2, PS1, PS0 : خانات اختيار معدل Prescaler .
يتم ضبط Prescaler بعمل توليفة من الثلاثة خانات . كما ترى من الجدول التالى نفس توليفة الخانات تعطى معدل Prescaler مختلف لكل من المؤقت / العداد ومؤقت الحراسة على الترتيب .





عند مسح خانة اختيار التخصيص PSA يخصص prescaler للمؤقت / العداد TMR0 كما هو مبين بالشكل التالى :




دعنا نفعل ذلك بالمترجم mikroC :

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 08-03-2011, 09:19 AM المشاركة 2   
افتراضي


دعنا نفعل ذلك بالمترجم mikroC :






  • فى هذا البرنامج يتم إعداد المؤقت TMR0 كمؤقت ويتم تخصيص prescaler له .
  • إعلان عن متغير نوع unsigned باسم cnt
unsigned cnt; // Define variable cnt


  • روتين المقاطعة : يتعرف علية المترجم من صيغته void interrupt() { ومحتواه يقوم به المبرمج وينص على :
عند حدوث مقاطعة (طفحان فى المؤقت) يتم تزايد المتغير بواحد cnt++; .
ثم يسترجع سجل المؤقت TMR0 قيمته الابتدائية TMR0 = 155; .
إعادة التهيئة بجعل الخانة T0IE (تمكين المقاطعة ) فى الحالة set والخانة T0IF (علم المقاطعة) فى الحالة clear بالصيغة INTCON = 0x20;

البرنامج :
  • البرنامج كالعادة يبدأ بالدالة الرئيسية void main() {
  • الإعدادات :
# تخصيص prescaler بالقيمة(1:32) ( أى القسمة على 32) للموقت TMR0 :
OPTION_REG = 0x04;
# وضع قيمة ابتدائية 155 فى سجل المؤقت TMR0 لكى يقوم بالعد من 155 إلى 255 :
TMR0 = 155;
# تمكين المقاطعة بالمؤقت TMR0 :
INTCON = 0xA0;

فى حالة إعداد المؤقت كعداد يكون البرنامج كما يلى :







باختصار :
لكي نتمكن من استخدام TMR0 بشكل صحيح فمن الضروري :

الخطوة رقم 1 : اختيار النظام select mode :
  • يتم اختيار نظام المؤقت بواسطة الخانة T0CS للسجل OPTION_REGحيث :
T0CS: 0=timer و T0CS: 1=counter
  • عند استخدامه ينبغي تخصيص prescaler للمؤقت / العداد بمسح الخانة PSA للسجل OPTION_REG. ويتم تحديد معدل prescaler باستخدام الخانات PS2 - PS0 للسجل نفسه.
  • عند استخدام المقاطعة، ينبغي تحديد set الخانات GIE وTMR0IE للسجل INTCON.
الخطوة رقم 2 : القياس والعد Measuring and Counting

لقياس الزمن :
  • يتم عمل تصفير reset للسجل TMR0 أو وضع قيمة معروفة به .
  • يتم قياس الزمن المنقضى (بالميكروثانية عند استخدام كريستال 4MHz) بقراءة السجل TMR0
  • تتحول خانة علم المقاطعة للمؤقت TMR0IFبالسجل INTCON تلقائيا إلى حالة set عند كل طفحان overflow يحدث بالسجل TMR0 إذا كان ممكن لحدوث مقاطعة .

ولقياس عدد النبضات :
  • يتم اختيار قطبية النبضات المراد قياسها على الطرف RA4 من الخانة TOSE بالسجل OPTION_REG :
T0SE: 0=positive pulses

T0SE: 1=negative pulses
  • يمكن قياس عدد النبضات من السجل TMR0 . يستخدم كل من prescaler والمقاطعة كما فى حالة نظام المؤقت .

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية tata2
tata2
:: عضو متميز ::
تاريخ التسجيل: Jan 2007
الدولة: https://t.me/pump_upp
المشاركات: 238
نشاط [ tata2 ]
قوة السمعة:0
قديم 09-03-2011, 01:18 PM المشاركة 3   
افتراضي


بارك الله فيك مهندس فتح الله
من فضلك اريد توضيح توصيل
ir sensor
and the light sensor


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 09-03-2011, 01:59 PM المشاركة 4   
افتراضي


بارك الله فيك مهندس فتح الله
من فضلك اريد توضيح توصيل
ir sensor
and the light sensor
اخى الكريم

شكرا جزيلا لك

نحن الان فى مرحلة التعامل مع المخارج فقط وعند الوصول الى مرحلة التعامل مع المداخل ان شاء الله سوف نتعرص للحساسات بانواعها .

مع تمنياتى بدوام التوفيق


e-obsessed
:: عضو .. ::
تاريخ التسجيل: Feb 2010
الدولة: alger
المشاركات: 126
نشاط [ e-obsessed ]
قوة السمعة:0
قديم 09-03-2011, 07:08 PM المشاركة 5   
افتراضي


اخى الكريم

شكرا جزيلا لك


carsper
:: مهندس ::
تاريخ التسجيل: Feb 2011
المشاركات: 42
نشاط [ carsper ]
قوة السمعة:0
قديم 09-03-2011, 11:54 PM المشاركة 6   
افتراضي


الف شكر يا باشمهندس لقد افتدني المعلومات هذه
ولكن كان لي استفسار وهو موضوع http://www.qariya.com/vb/showthread.php?t=85316
هل الإجابه هي التعامل مع هذه السجلات التي قمت بشرحها
(للمعلومة مبتدئ)
وارجو التوضويح ولو بكود MicroC لحل لمشكلتي هذه
ولك جزيل الشكر


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 10-03-2011, 08:04 AM المشاركة 7   
افتراضي


الف شكر يا باشمهندس لقد افتدني المعلومات هذه
ولكن كان لي استفسار وهو موضوع http://www.qariya.com/vb/showthread.php?t=85316
هل الإجابه هي التعامل مع هذه السجلات التي قمت بشرحها
(للمعلومة مبتدئ)
وارجو التوضويح ولو بكود MicroC لحل لمشكلتي هذه
ولك جزيل الشكر
اخى الكريم

شكرا جزيلا لك

التدريب الثانى tutorial 2 القادم ان شاء الله على هذا الموضوع "استخدام المؤقت TMR0 كعداد "

مع تمنياتى بدوام التوفيق


hamadalla31
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
المشاركات: 587
نشاط [ hamadalla31 ]
قوة السمعة:0
قديم 10-03-2011, 12:42 PM المشاركة 8   
افتراضي


بارك الله لك استاذي الفاضل

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 03:54 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2024