السلام عليكم
الإخوة الكرام اسمحوا لي بهذه التوضيحات :
1- بإمكان المبرمج برمجة التايمر0 (Timer0) أو مؤقت الحراسة (Watchdog Timer) معا أو برمجة أحدهما وعدم برمجة الآخر كما يريد وبحسب المطلوب من الكود .
وهذا سواء كان PSA=0 أو PSA=1.
2- إذن ما علاقة البت PSA في المسجل OPTION_REG بالتايمر0 و مؤقت الحراسة؟
في الواقع PSA ليس هو من يحدد الاختيار بين استخدام التايمر0 أو استخدام مؤقت الحراسة .
دوره هو تحديد من سيستفيد من خدمات prescaler ؟
هل التايمر0 أم مؤقت الحراسة حسب رغبة المبرمج ومتطلبات الكود طبعا.
إذا دعت الضرورة المبرمج أن يسند ال prescaler للتايمر0 للحصول على ناتج التردد الذي يبحث عنه، فمن الضروري أن يجعل PSA=0
وبذلك سيرتبط ال prescaler بالتايمر0 ولن يكون بالامكان طبعا أن يستفيد WDT من خدامات prescaler .
لكن إذا أراد المبرمج برمجة مؤقت الحراسة وأراد أن يكبر زمن هذا المؤقت فعليه أن يجعل PSA=1
علما وهذا مهم ،أن اختيار برمجة مؤقت الحراسة من عدمه في كل اللغات يتم في بداية تهيئة المشروع ومن خلال صفحة الإعدادت (Configuration Bits):
هذا مثال بالنسبة للميكروسي والبيك المستخدم في هذا الموضوع.
الخيار هو Watchdog Timer في الخانة الثانية:
http://upload.qariya.info/up2017/266...084A0E270D.PNG
3- إذا حجز المبرمج prescaler ل Timer0 وفي نفس الوقت رغب في برمجة Watchdog Timer (اختصارا: WDT) يمكنه ذلك طبعا بتفعيله كما سبق ذكره.
وكل ما في الأمر أن زمن مؤقت الحراسة (WDT) لن يمكن تكبيره وسيعمل بقيمته الافتراضية .
علما بأنه في الغالب لا يحتاج المبرمجون برمجة WDT .
+++
ملحوظة : ممكن نترجم prescaler ب (مقسم التردد القبلي)