السلام عليكم
هناك بعض النقاط غير واضحة لدى بالنسبة لقيمة التايمر زيرو كيف نحددها هل له قانون ؟؟
بالنسبة للكاونت قال الاخ الفاضل الكاونت هو رقم نضعه لضبط قيمة ال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
تحياتي