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

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

الصورة الرمزية mahmosha
mahmosha
:: مهندس جيد ::
تاريخ التسجيل: Sep 2011
الدولة: مصر
المشاركات: 213
نشاط [ mahmosha ]
قوة السمعة:0
قديم 17-12-2011, 10:29 AM المشاركة 1   
افتراضي i have a question about how to calculate a frequency Twitter FaceBook Google+



Hi,
i am sorry i know i have been bothring all of u alot with my questions but i dont have anybody else
so if someone can answer me this simple question
is it better to calculate the frequency using rb0/int or timer 0?
and thx for ur time

اعلانات

الصورة الرمزية Abdulla873
Abdulla873
:: مهندس متميز ::
تاريخ التسجيل: Sep 2009
الدولة: Baghdad, Iraq
المشاركات: 504
نشاط [ Abdulla873 ]
قوة السمعة:0
قديم 17-12-2011, 02:30 PM المشاركة 2   
افتراضي


Timer 0 much simpler

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

hamzazayyad
:: مهندس متميز ::
تاريخ التسجيل: Aug 2005
الدولة: موزنبيق
المشاركات: 701
نشاط [ hamzazayyad ]
قوة السمعة:0
قديم 17-12-2011, 03:11 PM المشاركة 3   
افتراضي


ادا استخدمت المقاطعات فانك تحتاج الى تايمر وحيد
ولكن ادا استخدمت تايمر 0 للعد فانك تحتاج لتايمرين

ولكن الجواب يعتمد على نوع البيك المطلوب والمهام الدي ينفدها البيك ودقه التردد المطلوبه

ولكن لدي سؤال لك

ما هو الافضل قياس التردد بعداد مع prescale او بدون؟؟؟؟


geniusse01
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: Jordan - Amman
المشاركات: 1,139
نشاط [ geniusse01 ]
قوة السمعة:106
قديم 18-12-2011, 09:50 PM المشاركة 4   
افتراضي


ادا استخدمت المقاطعات فانك تحتاج الى تايمر وحيد
ولكن ادا استخدمت تايمر 0 للعد فانك تحتاج لتايمرين

ولكن الجواب يعتمد على نوع البيك المطلوب والمهام الدي ينفدها البيك ودقه التردد المطلوبه

ولكن لدي سؤال لك

ما هو الافضل قياس التردد بعداد مع prescale او بدون؟؟؟؟

السلام عليكم

هذا يعتمد على التطبيق المطلوب تنفيذه ..فالتايمر زيرو مثلا يمكن ان يعد 256 نبضة بدون استخدام مقسم تردد (Prescaler) وهذا مطلوب في التطبيقات التي تتطلب دقه عالية (مثل حساب المسافات) .اما في حال كان هناك مجال للخطأ ولو بسيط (مثلا مقياس تردد لقياس ترددات تقارب 1 ميجا هيرتز هنا تجد ان تردد 1 ميجاهيرتز وتردد 1.000032 تقريبا متساوية ويمكن اهمال 32 نبضة مقارنه مع مليون نبضة .انت ستحدد هل تحتاج الى مقسم للتردد وفقا لمتطلبات الدقة لديك ..ارجو ان تكون الصورة واضحة لديك ..ارجو لك التوفيق..

واخر دعوانا ان الحمدلله رب العالمين .. وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم.


hamzazayyad
:: مهندس متميز ::
تاريخ التسجيل: Aug 2005
الدولة: موزنبيق
المشاركات: 701
نشاط [ hamzazayyad ]
قوة السمعة:0
قديم 19-12-2011, 12:43 PM المشاركة 5   
افتراضي


السلام عليكم

هذا يعتمد على التطبيق المطلوب تنفيذه ..فالتايمر زيرو مثلا يمكن ان يعد 256 نبضة بدون استخدام مقسم تردد (Prescaler) وهذا مطلوب في التطبيقات التي تتطلب دقه عالية (مثل حساب المسافات) .اما في حال كان هناك مجال للخطأ ولو بسيط (مثلا مقياس تردد لقياس ترددات تقارب 1 ميجا هيرتز هنا تجد ان تردد 1 ميجاهيرتز وتردد 1.000032 تقريبا متساوية ويمكن اهمال 32 نبضة مقارنه مع مليون نبضة .انت ستحدد هل تحتاج الى مقسم للتردد وفقا لمتطلبات الدقة لديك ..ارجو ان تكون الصورة واضحة لديك ..ارجو لك التوفيق..

واخر دعوانا ان الحمدلله رب العالمين .. وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم.
السلام عليكم
نقاش جميل اخي geniusse01
اذن لتكون لديك دقه اكبر
-يجب عدم استخدام prescale ضمن مدى التردد المطلوب ضمن المعقول طبعا
-يمكن استخدام المقاطعه على RB0 ان امكن
-استخدام تردد مناسب للكرستاله بحيث تحصل على زمن ثانيه بدون كسور
-الافضل استخدام تايمر 0 مباشره وبدون PRESCALE

فما تعليقك على هذا وما هو اسمك؟؟؟


الصورة الرمزية mahmosha
mahmosha
:: مهندس جيد ::
تاريخ التسجيل: Sep 2011
الدولة: مصر
المشاركات: 213
نشاط [ mahmosha ]
قوة السمعة:0
قديم 19-12-2011, 05:14 PM المشاركة 6   
افتراضي


السلام عليكم

هذا يعتمد على التطبيق المطلوب تنفيذه ..فالتايمر زيرو مثلا يمكن ان يعد 256 نبضة بدون استخدام مقسم تردد (Prescaler) وهذا مطلوب في التطبيقات التي تتطلب دقه عالية (مثل حساب المسافات) .اما في حال كان هناك مجال للخطأ ولو بسيط (مثلا مقياس تردد لقياس ترددات تقارب 1 ميجا هيرتز هنا تجد ان تردد 1 ميجاهيرتز وتردد 1.000032 تقريبا متساوية ويمكن اهمال 32 نبضة مقارنه مع مليون نبضة .انت ستحدد هل تحتاج الى مقسم للتردد وفقا لمتطلبات الدقة لديك ..ارجو ان تكون الصورة واضحة لديك ..ارجو لك التوفيق..

واخر دعوانا ان الحمدلله رب العالمين .. وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم.
thx my bro but i thought that i should atleast make my timer0 prescale 2
that mean for each 2 pulses it calculates one
is that right?


geniusse01
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: Jordan - Amman
المشاركات: 1,139
نشاط [ geniusse01 ]
قوة السمعة:106
قديم 19-12-2011, 08:29 PM المشاركة 7   
افتراضي


[QUOTE=hamzazayyad;587816]السلام عليكم
نقاش جميل اخي geniusse01
اذن لتكون لديك دقه اكبر
-يجب عدم استخدام prescale ضمن مدى التردد المطلوب ضمن المعقول طبعا
-يمكن استخدام المقاطعه على RB0 ان امكن
-استخدام تردد مناسب للكرستاله بحيث تحصل على زمن ثانيه بدون كسور
-الافضل استخدام تايمر 0 مباشره وبدون PRESCALE

فما تعليقك على هذا وما هو اسمك؟؟؟[/QUOTE]


السلام عليكم

- اجل كما قلت للحصول على الدقة يجب اختيار prescaler بشكل صحيح وضمن المعقول للحصول على النتيجة المرغوبة .
-بالنسبة لRB0 هي عبارة عن مقاطعة لتحسس التغيرات في الاشارة على الطرف ..يمكن استخدامها لعد النبضات مثلا ..ولكن لتحصل على التردد فانت بحاجة لمعيار زمني يتبع هذه التغيرات (يعني تحسب عدد النبضات خلال نصف ثانية مثلا .
-استخدم الكريستالة المناسبة لتحصل على ثانية بدون كسور .. حيث انه كلما زاد تردد الكريستالة فان قدرة البيك تزيد لقياس ترددات اصغر ..لان هذا يقلل زمن تنفيذ التعليمة الواحدة في البرنامج وبالتالي يؤدي لزيادة فعالية البيك .
-طبعا هل انت تستخدم prescaler ام لا فهذا يعتمد على المطلوب من البرنامج الذي لديك ..ارجو ان تكون الامور واضحة ..


[QUOTE]
المشاركة الأصلية كتبت بواسطة mahmosha

thx my bro but i thought that i should atleast make my timer0 prescale 2
that mean for each 2 pulses it calculates one
is that right?
[/
QUOTE]

في حال استخدام prescaler للتايمر زيرو فان كل نبضتين تزيد العداد في التايمر زيرو بمقدار واحد ..والسؤال الذي يطرح نفسه : كيف يمكنني جعل التايمر زيرو يعد بمقدار نبضة واحد كل مرة ؟؟
الجواب بسيط : قمت بجعل prescaler يعمل مع watchdog ..عندها فان التايمر زيرو يزداد بمقدار واحد مع كل نبضة خارجية ..
ارجو ان تكون الامور واضحة.

ارجو لكم التوفيق...

واخر دعوانا ان الحمدلله رب العالمين ..وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم.


hamzazayyad
:: مهندس متميز ::
تاريخ التسجيل: Aug 2005
الدولة: موزنبيق
المشاركات: 701
نشاط [ hamzazayyad ]
قوة السمعة:0
قديم 19-12-2011, 09:03 PM المشاركة 8   
افتراضي


[QUOTE=hamzazayyad;587816]السلام عليكم

نقاش جميل اخي geniusse01
اذن لتكون لديك دقه اكبر
-يجب عدم استخدام prescale ضمن مدى التردد المطلوب ضمن المعقول طبعا
-يمكن استخدام المقاطعه على RB0 ان امكن
-استخدام تردد مناسب للكرستاله بحيث تحصل على زمن ثانيه بدون كسور
-الافضل استخدام تايمر 0 مباشره وبدون PRESCALE

فما تعليقك على هذا وما هو اسمك؟؟؟[/QUOTE]


السلام عليكم

- اجل كما قلت للحصول على الدقة يجب اختيار prescaler بشكل صحيح وضمن المعقول للحصول على النتيجة المرغوبة .
-بالنسبة لRB0 هي عبارة عن مقاطعة لتحسس التغيرات في الاشارة على الطرف ..يمكن استخدامها لعد النبضات مثلا ..ولكن لتحصل على التردد فانت بحاجة لمعيار زمني يتبع هذه التغيرات (يعني تحسب عدد النبضات خلال نصف ثانية مثلا .
-استخدم الكريستالة المناسبة لتحصل على ثانية بدون كسور .. حيث انه كلما زاد تردد الكريستالة فان قدرة البيك تزيد لقياس ترددات اصغر ..لان هذا يقلل زمن تنفيذ التعليمة الواحدة في البرنامج وبالتالي يؤدي لزيادة فعالية البيك .
-طبعا هل انت تستخدم prescaler ام لا فهذا يعتمد على المطلوب من البرنامج الذي لديك ..ارجو ان تكون الامور واضحة ..


[QUOTE]
المشاركة الأصلية كتبت بواسطة mahmosha

thx my bro but i thought that i should atleast make my timer0 prescale 2
that mean for each 2 pulses it calculates one
is that right?
[/QUOTE]

في حال استخدام prescaler للتايمر زيرو فان كل نبضتين تزيد العداد في التايمر زيرو بمقدار واحد ..والسؤال الذي يطرح نفسه : كيف يمكنني جعل التايمر زيرو يعد بمقدار نبضة واحد كل مرة ؟؟
الجواب بسيط : قمت بجعل prescaler يعمل مع watchdog ..عندها فان التايمر زيرو يزداد بمقدار واحد مع كل نبضة خارجية ..
ارجو ان تكون الامور واضحة.

ارجو لكم التوفيق...

واخر دعوانا ان الحمدلله رب العالمين ..وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم.
السلام عليكم
كلام جميل اخي geniusse01 فاسلوب الحوار افضل من وضع المعلومات مباشره
لكن اريد ان اضع الفكره الاساسيه لقياس التردد وما هو التردد

فالتردد هو عدد النبضات خلال ثانيه واحده
ومن هذا التعريف البسيط نجد انه مفروض علينا شيئين
الاول عداد للنبضات .
الثاني تايمر لمده ثانيه

وطبعا يمكن ان تستخدم timer0 كعداد نبضات وعندما يمتلا يحصل مقاطعه ومن ئم نخزن قيمه الامتلاء ومراتها خلال الثانيه الواحده ولا يوجد داعي لاستخدام prescale

ويمكن ايضا استخدام المقاطعه على RB0 وتحديد مسجل ليخزن قيمه التردد كل مقاطعه جديده

وبالنسبه لتايمر بزمن ثانيه فهو الافضل للدقه ولكن يجوز اختيار الزمن تساوي نصف ثانيه ومن تم ضرب قيمه النبضات بالعدد 2 لنحصل على ثانيه واحده

مثلا فلو كان التردد 49 وكان زمن التايمر هو نصف ثانيه سنجد ان قيمه التردد التي يقيسها الميكرو تتذبذب بين 48 و 50

ولكن لم تقل لي ما اسمك geniusse01 ان لم يكن سرا.

إضافة رد

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

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

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


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

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