الدرس الرابع : استكمال مكونات الميكرو PIC16f84

Reset

نجد من توزيع ارجل الميكروكنترولر ان الرجل رقم 4 تستخدم فى عمل reset وهذه الكلمة تعنى اعادة الميكرو الى وضع حالته المعروفة و ذلك عندما يكون الميكروكنترولر فى حالة غريبة او نتائجه غير دقيقة .

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

وهذه الدائرة أكثر تفصيلا

ويحدث ايضا للميكرو reset فى الحالات الاتية
1- عند تشغيله وتوصيله بمصدر قدرة
2- عند استخدام الامر SLEEP
3- عندما يحدث زيادة لل Watchdog
4- عندما يقل مصدر القدرة عن قيمته المطلوبة

وفى التطبيقات الصناعية فان مصدر القدرة يكون غير منتظم ويتغير باستمرار ولذلك فانه لن يحدث ال reset الا بعد 72 ثانية من استقرار مصدر القدرة حتى يتجب عمل ريست بدون داعى

موضح فى الشكل الاتى
[/size]

وحدة المعالجة المركزية Central Processing Unit

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

ويجب ملاحظة انه عندما يقوم المبرمج بكتابه برنامج معين فان التعليمات تكون مثلا فى الصورة الاتية MOVLW 0x20 ولكن هذه التعليمات لا يفهمها الميكرو
ولذلك يجب ان تحول الى صفر و واحد وهذه الصيغة تسمى opcode وهى التى يفهمها الميكرو .

وعملية تحويل الحروف الى الصيغة opcode تتم بواسطة المترجم translator او يسمى احيانا assembler .

ويوجد ايضا بالميكروكنترولر وحدة فرعية تسمى وحدة الحساب والمنطق ALU وهى المسئولة عن العمليات الحسابية والعمليات المنطقية وايضا تقوم بتنفيذ عمليات التحويل ونقل البيانات من والى المسجلات وفى الشكل الاتى نرى وحدة الحساب والمنطق حيث يدخل اليها التعليمة المراد تنفيذها من instruction register مع حالتها وحالة التعليمة السابقة من status register ثم تقوم باخراج النواتج الى working register .

وفى الشكل الاتى نرى التركيب العام لاجزاء للميكرو كنترولر

STATUS Register

وهو من اهم المسجلات الموجودة فى الميكركنترولر
ولكن دعنا الان نلقى نظرة على المسجلات الموجودة فى الميكروكنترولر
وهى موضحة فى الشكل الاتى :

ونلاحظ من الشكل السابق وجود خانتين Bank 0 وهى التى يقوم المستخدم بالتعامل معها و Bank 1 هى نسخة طبق الاصل من Bank 0
وايضا تقسم ذاكرة البيانات الى جزء علوى وجزء سفلى
والجزء العلوى من 00h الى 0bh وهو 11 مكان و يسمى

Special Function Registers

و هو للتحكم فى الميكرو والاجهزة الخارجية المتصلة به
والجزء السفلى يسمى

General Purpose Registers (GPR)
وهو الذى يعتبر كرام RAM

وكما نرى المسجل STATUSموجود فى العنوان 03h ويمكننا ايضا استخدامه من خلال العنوان 83h
وتركيبه كما بالشكل الاتى :

وكما واضح من الشكل انه يحتوى على 8-bit والان سنبدا فى التعرف على كل bit ووظيفته على حده

bit 0 C (Carry) Transfer

وتكون قيمته تساوى 1 عندما يحدث زيادة فى ناتج اى عملية حسابية اى يزيد الناتج عن 255 وهى ال 8-bit المتاحة وفى هذه الحالة يضع الميكرو فى هذه البت 1 لانه لا يجد مكان لتخزين الناتج
فى فى حالة عدم تجاوز 255 فان قيمته هذا البت تظل 0

وهذا البت مهم جدا ويسمى Carry Flag

bit 1 DC (Digit Carry) DC Transfer

فهو خاص باول 4 بت حيث تكون قيمته 1 فاذا كان الناتج ازيد من 15 وهى تعنى ان الناتج قد استهلك اول 4 بت وسيقوم بتخزينه فى ال 4 بت الباقيين وفى حالة العكس تكون قيمته تساوى صفر

bit 2 Z (Zero bit) Indication of a zero result

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

bit 3 PD
(Power-down bit)

تكون قيمة هذا البت تساوى 1 عندما يبدا الميكرو فى العمل وذلك بعد عملية reset وتكون قيمته صفر عندما يبدا فى اعادة التشغيل وتنفيذ امر SLEEP وتنفيذ هذا الامر يكون عند نقص القدرة المطلوبة .

bit 4 TO Time-out ; Watchdog overflow.

تكون قيمته تساوى واحد عندما ينتهى من اعادة التشغيل وتنفيذ أمر SLEEP وتصبح قيمته تساوى صفر عندما يرجع لنا Watchdog خطا معين

bit6:5 RP1:RP0
(Register Bank Select bits)

كما لاحظنا فى توزيع المسجلات انه يوجد ما يسمى Bank0 وBank1 فهذان البتان يتيحان لنا عملية اختيار البنك صفر او البنك واحد

يجب ملاحظة ان عناوين الذاكرة تتنتهى بالعنوان FFh وهذا يساوى 255 ونجد ان الميكر PIC16f84 لديه 256 فلذلك سنحتاج بت واحد فقط وهو RP0 اما RP1 فلن يتم استخدامه ولكن تم وضعه للتطوير المستقبلى وتكون قيمته دائما صفر
اما RP0 تكون 1 عندما نستخدم Bank 1 وتكون 0 عندما نستخدم Bank 0

bit 7 IRP
(Register Bank Select bit)

ويتستخدم فى حالة العناوين الغير مباشرة حيث يقوم اختيار ال Bank المطلوب العمل بها .

ويحدث ايضا للميكرو reset فى الحالات الاتية
1- عند تشغيله وتوصيله بمصدر قدرة
2- عند استخدام الامر SLEEP
3- عندما يحدث زيادة لل Watchdog
4- عندما يقل مصدر القدرة عن قيمته المطلوبة

ممكن شوية تفسير لهذه النقاط يا اخي

هلا زردتنا يا اخي ب translator او assembler لان الذي لدي لا يعمل على ويندوز xp
وسأكون ممتن

هذه الحالات التى يقوم الميكرو عندها باعادة التشغيل
الحالة الاولى وهى عند بداية التشغيل اى ان تشغيل الميكرو تعتبر ريسترت بالفعل
الحالة الثانيه SLEEP وهى أمر من اوامر الميكرو وسوف نتعرض له فى الجزء الخاص بالاوامر
الحالة الثالثة Watchdog
كما عرفنا انه عبارة عن عداد يقوم بكتابه القيمة صفر عند كل مره يتم فيها تنفيذ البرنامج بشكل صحيح
وفى حالة توقف هذا العداد فانه من المحتمل وجود خطا معين فلذلك يقوم الميكرو باعاده التشغيل تجنبا للاخطاء .
والحالة الاخيرة عندما تقل القدرة او تذبذب فانها تجعل الميكرو فى حالة عدم استقرار ولذلك من الضرورى اعادة تشغيله

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

لم افهم بالضبط يا اخي ما هي وظيفة Pd و To ربما لنقص في فهمي Sleep

هى عباره ان مكان فى المسجل status تعتمد قيمهم على حالة الميكرو سواء كان فى بداية تشغيله او بعد الانتهاء من ريسترت

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

ذكرت اننا سنكتب الاوامر بلغة برمجة اسمبلى و ستترجم الى لغة الالة 000010101011
هل يمكن البرمجة مباشرة بلغة الc ؟

جزاكم الله خيرا

ولا يهمك اخى العزيز دعنا نشرح بالتفصيل

bit 3 PD
(Power-down bit)

تكون قيمة هذا البت تساوى 1 عندما يبدا الميكرو فى العمل وذلك بعد عملية reset وتكون قيمته صفر عندما يبدا فى اعادة التشغيل وتنفيذ امر SLEEP وتنفيذ هذا الامر يكون عند نقص القدرة المطلوبة

بكل بساطة عندما نقوم بتشغيل الميكرو لاول مره فاننا نجد ان هذا البت يساوى 1 وهذا وضعه الاساسى وهذا ايضا دليل ان الميكرو يعمل جيدا
فمثلا اذا كنت تشك فى ان الميكرو لا يعمل يمكنك فحص هذا البت للتاكد من ان قيمته تساوى 1 .
وعند حدوث اى خطا فتجد قيمته قد تغيرت على الفور الى صفر والذى يتبعه اعادة تشغيل اتوماتيكية للميكرو .
فاذا قمت باختبار هذا البت وكانت قيمته تساوى صفر فاعلم ان الميكرو فى هذه اللحظة سيقوم باعاده التشغيل عن طريق تنفيذ الامر SLEEP نظرا لوجود أخطاء .

bit 4 TO Time-out ; Watchdog overflow

تكون قيمته تساوى واحد عندما ينتهى من اعادة التشغيل وتنفيذ أمر SLEEP وتصبح قيمته تساوى صفر عندما يرجع لنا Watchdog خطا معين

طبعا عرفنا ما هو ال Watchdog وما هى وظيفته وهى كما ذكرنا سابقا انه عداد يقوم بالعد فى كل مره يتم تنفيذ تعليمه من البرنامج بصورة صحيحة
ولكن اذا لم يتم التنفيذ فان هذا العداد لم يعد وفى هذه الحالة فانه يقوم بوضع صفر فى البت الرابع للمسجل STATUS وذلك لاخبار الميكرو انه لم يقم بالعد ويجب اعادة تشغيل الميكرو وذللك حيث من المحتمل وجود اخطاء .
وبناء عليه فان الميكرو يقوم باعاده التشغيل وجعل قيمه البت الرابع تساوى 1 وهذا هو الوضع الاساسى .

ونلاحظ وجود خط فوق كل منهما وهذا يدل على انهما يعملان فى حالة Negative low اى عندما تتغير حالتهما من الواحد (الوضع الاساسى ) الى الصفر .

طبعا من الممكن الكتابة لغة السى ولكن لابد من وجود من يترجم لغة السى الى لغة الاسمبلى ثم الى لغة الالة وهذا سوف نتعرض له بالتفصيل فى شرح التعليمات

اي هسة تمام عشت والله يا اخي

اهلا بك اخ عباس ونرحب باستفسارك فى اى وقت تريد
وكنت اود ان اسئلك سوال خارج الموضوع
هل انت عضو فى منتدى هفورد ؟؟

جزاك الله عنا خيرا وشكرا على هذا الشرح الرائع

شكراااااااااااااااا

كلا يا اخي العزيز لكني عضو في هذا المنتدى

لكني انتميت له منذ وقت قصير ولا ادخله الا قليلا
لكن لم السؤال
على العموم اشكرك اخي العزيز

لان منتدى هفورد يقوم بسرقة دروسى فى السميولينك وينسبها لنفسه
وقد اعتقد انى لمحت اسمك هناك