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

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

haled
:: مهندس ::
تاريخ التسجيل: Aug 2006
المشاركات: 24
نشاط [ haled ]
قوة السمعة:0
قديم 13-08-2010, 09:17 PM المشاركة 1   
افتراضي ارجو ا ان تشرحوا لي لماذا زمن التاخير يساوي 38 ميلي ثانية Twitter FaceBook Google+



Page numbers in code are in Easy Pic'n book.; 4 MHz crystal yields 1 MHz internal clock frequency.; "option" is set to divide internal clock by 256.; This results in 1 MHz/256 = 3906.25 Hz or 256 usec.; tmr0 bit 7 (128 decimal) is checked, thus yielding; 128*256 usec = 32.8 msec delay loop

delay clrf tmr0 ; clear TMR0, start countingagain btfss tmr0, 7 ; if bit 7 = 1 goto again ; no, then check again return ; else exit delay endالاخوة الكرام كل عام وانتم بخير

من يستطيع مشكورا بشرح لي لماذا مدة التاخير تساوي 128*256 usec = 32.8 msec
ولكم جزيل الشكر مقدما

اعلانات

haled
:: مهندس ::
تاريخ التسجيل: Aug 2006
المشاركات: 24
نشاط [ haled ]
قوة السمعة:0
قديم 14-08-2010, 12:51 AM المشاركة 2   
افتراضي



Page numbers in code are in Easy Pic'n book.; 4 MHz crystal yields 1 MHz internal clock frequency.; "option" is set to divide internal clock by 256.; This results in 1 MHz/256 = 3906.25 Hz or 256 usec.; tmr0 bit 7 (128 decimal) is checked, thus yielding; 128*256 usec = 32.8 msec delay loop

delay clrf tmr0 ; clear TMR0, start countingagain btfss tmr0, 7 ; if bit 7 = 1 goto again ; no, then check again return ; else exit delay end

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

haled
:: مهندس ::
تاريخ التسجيل: Aug 2006
المشاركات: 24
نشاط [ haled ]
قوة السمعة:0
قديم 14-08-2010, 12:54 AM المشاركة 3   
افتراضي


delay clrf tmr0
again btfss tmr0, 7
goto again
return
end


الصورة الرمزية ahmad_s_f
ahmad_s_f
:: المهندس/ أحمد سمير فايد ::
تاريخ التسجيل: Jun 2006
الدولة: سائح في ارض الله
المشاركات: 725
نشاط [ ahmad_s_f ]
قوة السمعة:80
قديم 14-08-2010, 12:54 AM المشاركة 4   
افتراضي


أخي الكريم سأشرح لك الأمر إن شاء الله بعد قليل

لكن لو تضع الرابط الذي أخذت منه الكلام يكون أفضل


haled
:: مهندس ::
تاريخ التسجيل: Aug 2006
المشاركات: 24
نشاط [ haled ]
قوة السمعة:0
قديم 14-08-2010, 12:57 AM المشاركة 5   
افتراضي


بارك الله فيك اخي الكريم
وهذا هو الموقع
http://www.boondog.com/tutorials/pic...84.html#Timing


الصورة الرمزية ahmad_s_f
ahmad_s_f
:: المهندس/ أحمد سمير فايد ::
تاريخ التسجيل: Jun 2006
الدولة: سائح في ارض الله
المشاركات: 725
نشاط [ ahmad_s_f ]
قوة السمعة:80
قديم 14-08-2010, 01:26 AM المشاركة 6   
افتراضي


الموضوع بسيط جدا إن شاء الله ...

فلنقل بسم الله


ونصلي على النبي عليه الصلاة والسلام .
===============================

الآن الكود السابق يقوم بعمل ديلاي باستخدام timer0 .

في البداية يكون الريجستر tmr0 يساوي صفر عن طريق الأمر

clrf tmr0

والمفترض أن tmr0 تزداد قيمته بالمقدار واحد كل زمن معين . هذا الزمن يعتمد على تردد الكريستال وبما أننا نستخدم في هذا المثال كريستال ذو تردد أربعة ميجا هيرتز .

إذن الزمن يساوي معكوس ربع التردد . . سأشرح هذه الجملة الآن

4 ميجا قسمة أربعة تساوي واحد ميجا هيرتز ( وهذا ربع التردد)

ونحن لا نريد تردد بل نريد حساب زمن إذن نقول واحد على واحد ميجا أي واحد على مليون = واحد ميكرو ثانية .

إذن سيزداد الرقم الموجود في tmr0 كل واحد ميكرو ثانية ولكن انتبه هذا الكلام يكون صحيح في حالة واحدة وهو أن prescaler يساوي 1:1 .

والـ prescaler هي خاصية تسمح بأن نتحكم في الزمن الذي يجعل tmr0 يزداد .
فيمكننا جعله واحد إلى واحد فتكون حساباتنا السابقة صحيحة أو نجعله بقيم أخرى كما هو في الداتاشيت مثل القيمة 1:256 .

ولكن ماذا يعني أن الـ prescaler يساوي واحد إلى مئتين وستة وخمسين .
هذا يعني أن كل 256 نبضة (زمن النبضة في مثالنا قمنا بحسابه وهو واحد ميكرو ) تجعل تايمر زيرو يزداد بمقدار واحد .

أعيدها مرة أخرى كل 256 نبضة تزيد tmr0 بالمقدار واحد .
وبما أن كل نبضة تستغرق ميكروثانية إذن سيزداد قيمة التايمر زيرو كل 256 ضرب واحد ميكرو .

أي تزداد قيمة التايمر زيرو كل 256 ميكروثانية


وفي المثال الذي ذكرته أخي الكريم نريد أن نختبر هل وصلت قيمة التايمر زيرو إلى 128 أم لا .

ولحساب الزمن الذي سيستغرقه تايمر زيرو حتى يصل إلى 128 .

سنضرب الرقم 128*256 ميكرو ثانية . لأن تايمر زيرو يزاد بواحد كل 256 مايكرو وبما أنه زاد 128 مرة إذن سنضرب 256 في 128 فنحصل على الناتج 32768 ميكرو
أي يساوي تقريبا 32.8 ملي ثانية

إذن لكي يصبح تايمر زيرو يساوي 128 سيستغرق هذا ن الزمن 32.8 ملي ثانية

والآن لنكتب كود يختبر هل وصلنا لهذه القيمة أم لا كل ما نحتاجه هو اختبار البت رقم سبعة في تايمر زيرو لأن البت رقم سبعة يمثل الرقم 128 كيف هذا ؟؟

10000000 هذا الرقم بالنظام الثنائي ( البايناري) يكافئ الرقم 128 بالنظام العشري



المثال يقول

كود:
again btfss tmr0, 7 ; if bit 7 = 1 goto again ; no, then check again return
اي اختبر البت رقم سبعة من المسجل tmr0 هل هو بواحد أم لا إذا كان بواحد اقفز وإن لم يكن بواحد نفذ الأمر التالي .

والأمر التالي يجعل الميكرو يعيد الاختبار بالذهاب إلى again .

والبت رقم سبعة يصبح بواحد عندما تصبح قيمة التايمر زيرو بـ 128 .


===================================

تمنياتي بالتوفيق والتميز دائما وأي سؤال لا تتردد

وكل عام وأنت بخير


haled
:: مهندس ::
تاريخ التسجيل: Aug 2006
المشاركات: 24
نشاط [ haled ]
قوة السمعة:0
قديم 14-08-2010, 09:06 AM المشاركة 7   
افتراضي



جزاك الله كل خير اخي أحمد سمير فايد

وانا الذي لم افهمه كيف اخبرنا المتحكم بان يزداد الرقم الموجود في tmr0 بنسبة 1:256 أي تزداد قيمة التايمر زيرو كل 256 ميكروثانية



إذن سيزداد الرقم الموجود في tmr0 كل واحد ميكرو ثانية ولكن انتبه هذا الكلام يكون صحيح في حالة واحدة وهو أن prescaler يساوي 1:1 .

والـ prescaler هي خاصية تسمح بأن نتحكم في الزمن الذي يجعل tmr0 يزداد .
فيمكننا جعله واحد إلى واحد فتكون حساباتنا السابقة صحيحة أو نجعله بقيم أخرى كما هو في الداتاشيت مثل القيمة 1:256 .

ولكن ماذا يعني أن الـ prescaler يساوي واحد إلى مئتين وستة وخمسين .
هذا يعني أن كل 256 نبضة (زمن النبضة في مثالنا قمنا بحسابه وهو واحد ميكرو ) تجعل تايمر زيرو يزداد بمقدار واحد .

أعيدها مرة أخرى كل 256 نبضة تزيد tmr0 بالمقدار واحد .
وبما أن كل نبضة تستغرق ميكروثانية إذن سيزداد قيمة التايمر زيرو كل 256 ضرب واحد ميكرو .

أي تزداد قيمة التايمر زيرو كل 256 ميكروثانية


haled
:: مهندس ::
تاريخ التسجيل: Aug 2006
المشاركات: 24
نشاط [ haled ]
قوة السمعة:0
قديم 14-08-2010, 10:11 AM المشاركة 8   
افتراضي


اخي بش مهندس أحمد سمير فايد

بارك الله فيك لقد فهمت هذه النقطة وذلك بارسال قيمة b'11010111 الى option وقيمة الثلاثة ارقام من اليمين تخص ان نسبة التحويل يجب ان تكون
1:256 في tmr0

start clrwdt
movlw b'11010111
option

شكرا جزيلا وبارك الله بكم وكل عام وانتم بخير

إضافة رد

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

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

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


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

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