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

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

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 02-06-2014, 02:20 AM المشاركة 9   
افتراضي



السلام عليكم

هناك بعض النقاط غير واضحة لدى بالنسبة لقيمة التايمر زيرو كيف نحددها هل له قانون ؟؟

بالنسبة للكاونت قال الاخ الفاضل الكاونت هو رقم نضعه لضبط قيمة الFout طيب وهل هذا الرقم الذى نضعه له قانون ام نضعه بشكل عشوائى ؟؟ وهل الكاونت يقصد بها التردد ؟؟ لا اقصد تردد الكريستالة .... كما هو فى هذا الصورة



بالنسبة لل Prescaler هل يكون اختياره بالتجربة ولا له قانون ؟؟

مع الشكر الجزيل
السلام عليكم
اخي هذا البرنامج مهم جدا لجميع التايمرات
http://www.mikroe.com/timer-calculator/
فهو يعطيك كود جاهز وليس مهم في كتابه الكود وانما الكود الذي يعطيك رتب للحصول على اعلى دقه

طبعا هذا البرنامج راح يفيديك بمعطيات المعادله
شوف هذه معادله (( معادله تايمر 0))
http://cdn.top4top.net/i_4afa4e3fe41.jpg

مثال
اريد مقاطعه عند 100مايكروثانيه وتردد كرستاله 4 ميكا ومره 8 ميكا (( للعائله 16pic)) باستخدام تايمر0
كود:
//Timer0
//Prescaler 1:1; TMR0 Preload = 156; Actual Interrupt Time : 100 us
 
//Place/Copy this part in declaration section
void InitTimer0(){
  OPTION_REG	 = 0x88;
  TMR0		 = 156;
  INTCON	 = 0xA0;
}
 
void Interrupt(){
  if (TMR0IF_bit){ 
    TMR0IF_bit	 = 0;
    TMR0		 = 156;
    //Enter your code here
  }
}
ولتردد 8 ميكا
كود:
//Timer0
//Prescaler 1:1; TMR0 Preload = 56; Actual Interrupt Time : 100 us
 
//Place/Copy this part in declaration section
void InitTimer0(){
  OPTION_REG	 = 0x88;
  TMR0		 = 56;
  INTCON	 = 0xA0;
}
 
void Interrupt(){
  if (TMR0IF_bit){ 
    TMR0IF_bit	 = 0;
    TMR0		 = 56;
    //Enter your code here
  }
}
طبعا اخي لايتم اختيار ارقام عشوائيا وانما كتالي
مثلا لـــ 4 ميكا بمقاطعه كل 100 مايكرو
هنا نجعل معامل تقسيم =1

اذن 256-100=156 ايضا هذه هي قيمه منها يبدء تايمر 0 لان بعد 100 يصبح تايمر 0 =256 وعندها يحدث الطفحان (( اي يحدث انتربت ))
اذن معادله
100=(time=4*1/4*1*(256-156


اذن معادله محتاجه منك معامل تقسيم وقيمه اوليه الي يبدء منها تايمر 0 (( جزء احمر من معادله



اما اذا كان تردد 8 وانتربت يحدث كل 100 مايكرو


100=(time=4*1/8*1*(256-56

تحياتي

اعلانات

Logic
:: عضو فضي ::
تاريخ التسجيل: Mar 2014
المشاركات: 682
نشاط [ Logic ]
قوة السمعة:80
قديم 02-06-2014, 05:21 PM المشاركة 10   
افتراضي


السلام عليكم
أخي سعيد هي معادلة بعدة حدود مجهولة.
ممكن نتعامل معها بتثبيت حد او حدين وتجريب قيم المجاهيل الباقية
أحد الحدود وهو Prescaler يأخذ فقط بضعة قيم محددة وهذا يسهل قليلا.
هنا يتبعون نفس الطريقة وهي التجربة حتى الحصول على القيمة المطلوبة:
http://eng-serve.com/pic/pic_timer.html
من هذا الموضوع:
http://www.qariya.info/vb/showthread...653#post864653

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

الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,916
نشاط [ سعيد قادر ]
قوة السمعة:152
قديم 02-06-2014, 06:10 PM المشاركة 11   
sun


السلام عليكم
اخي هذا البرنامج مهم جدا لجميع التايمرات
http://www.mikroe.com/timer-calculator/
فهو يعطيك كود جاهز وليس مهم في كتابه الكود وانما الكود الذي يعطيك رتب للحصول على اعلى دقه

طبعا هذا البرنامج راح يفيديك بمعطيات المعادله
شوف هذه معادله (( معادله تايمر 0))
http://cdn.top4top.net/i_4afa4e3fe41.jpg

مثال
اريد مقاطعه عند 100مايكروثانيه وتردد كرستاله 4 ميكا ومره 8 ميكا (( للعائله 16pic)) باستخدام تايمر0
كود:
//Timer0
//Prescaler 1:1; TMR0 Preload = 156; Actual Interrupt Time : 100 us
 
//Place/Copy this part in declaration section
void InitTimer0(){
  OPTION_REG	 = 0x88;
  TMR0		 = 156;
  INTCON	 = 0xA0;
}
 
void Interrupt(){
  if (TMR0IF_bit){ 
    TMR0IF_bit	 = 0;
    TMR0		 = 156;
    //Enter your code here
  }
}
ولتردد 8 ميكا
كود:
//Timer0
//Prescaler 1:1; TMR0 Preload = 56; Actual Interrupt Time : 100 us
 
//Place/Copy this part in declaration section
void InitTimer0(){
  OPTION_REG	 = 0x88;
  TMR0		 = 56;
  INTCON	 = 0xA0;
}
 
void Interrupt(){
  if (TMR0IF_bit){ 
    TMR0IF_bit	 = 0;
    TMR0		 = 56;
    //Enter your code here
  }
}
طبعا اخي لايتم اختيار ارقام عشوائيا وانما كتالي
مثلا لـــ 4 ميكا بمقاطعه كل 100 مايكرو
هنا نجعل معامل تقسيم =1

اذن 256-100=156 ايضا هذه هي قيمه منها يبدء تايمر 0 لان بعد 100 يصبح تايمر 0 =256 وعندها يحدث الطفحان (( اي يحدث انتربت ))
اذن معادله
100=(time=4*1/4*1*(256-156


اذن معادله محتاجه منك معامل تقسيم وقيمه اوليه الي يبدء منها تايمر 0 (( جزء احمر من معادله



اما اذا كان تردد 8 وانتربت يحدث كل 100 مايكرو


100=(time=4*1/8*1*(256-56

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


الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,916
نشاط [ سعيد قادر ]
قوة السمعة:152
قديم 02-06-2014, 06:15 PM المشاركة 12   
sun


السلام عليكم
أخي سعيد هي معادلة بعدة حدود مجهولة.
ممكن نتعامل معها بتثبيت حد او حدين وتجريب قيم المجاهيل الباقية
أحد الحدود وهو Prescaler يأخذ فقط بضعة قيم محددة وهذا يسهل قليلا.
هنا يتبعون نفس الطريقة وهي التجربة حتى الحصول على القيمة المطلوبة:
http://eng-serve.com/pic/pic_timer.html
من هذا الموضوع:
http://www.qariya.info/vb/showthread...653#post864653
كلامك صحيح بارك الله فيك شكرا لك

إضافة رد

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

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

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


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

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