الخميس، 4 سبتمبر، 2014

بسم الله الرحمن الرحيم
بسم الله و الصلاه و السلام علي رسول الله
ان شاء الله في الصفحه هنبدا في شرح اشياء تتعلق بالEmbedded system
ان شاء الله هيكون الشرح عن طريق مجموعه مقالات بالعربي و كل مجموعه مقالات هتكون بتكمل بعض و متعلقه ببعض وان شاء الله هيكون الشرح _قدر المستطاع _ علي نوعين من الميكروكنترولر _ PIC and AVR
المقالات هتكون ان شاء الله مرتين او تلاته في الاسبوع
بسم الله :
ان شاء الله اول حاجه هنتكلم عنها هيه ال Interrupt :
اولا ....ايه هوه ال Interrupt ?!!!
الانتربت هو انذار Alarm بيروح للميكرو بروسيسور بيقوله ان فيه شئ مهم حصل وبناء علي كده بيبدا الميكرو بروسيسور يعمل شويه حاجات
الحاجات ديه طبعا بيكون المبرمج هوه اللي محددها
ثانيا : ايه الشئ المميز في الانتربت؟!!!
المميز في الانتربت ان الانتربت معمول للحاجات الطارئه و المهمه اوي اللي مينفعش تتاجل وده عن طريق ان البرنامج دايما بيشوف هل فيه انتربت حصل ولا لا ..بمعني ان المفروض ان البرنامج لما الميكروكنترولر بيبدا ينفذه يبدا ينفذه سطر سطر ...ميزه الانتربت بقي ان البرنامج قبل مينفذ كل سطر بيروح يشوف الانتربت حصل ولا لا ولو حصل بيسيب كل اللي في ايده ويروح ينفذ الانتربت ده .

طيب ثالثا : ازاي البرنامج بيبص علي الانتربت ده كل شويه ؟!!

المفروض ان اي امر انا بكتبه والبرنامج بيبدا ينفذه بينفذه علي 4 خطوات
1-fetch يعني يروح بالمؤشر بتاع البرنامج عشان يجيب الامر ده
2-Decode : يعني يكود الامر ده ويحوله ل 0 و 1
3-execute : ينفذ الامر ده
4- transfere :وهنا بيتنقل من الامر ده خالص و يبقي كده اتنفذ ويرجع المؤشر للmain

البرنامج بقي لما بكون انا عامل فيه انتربت بيبدا انه قبل مينفذ كل امر و تحديدا قبل ميعمل Execute للامر ده يروح يبص علي register (مكان في الميموري) خاص بالانتربت ده .
كل انتربت ليه Bit معينه في الريجستر ده ..قيمتها الابتدائيه بصفر واول ما يحصل الانتربت البروسيسور بيحط واحد في الbit ديه
البرنامج بقي بيفضل يبص كل مره علي الbit ديه لو لقي انها بقت ب واحد يعرف ان الانتربت حصل فيقوم يسيب كل اللي في ايده ويروح يشوف الانتربت ده لما يحصل المفروض يعمل ايه

مثال علي كده :
لو انا عندي برنامج بيتحكم في اضاءه مصنع ..فمثلا بينور النور لما الدنيا تضلم و يطفيه لما الدنيا تنور ...بسيطه خالص
طيب المفروض ان البرنامج ده برضو لما النور بيقطع بيبدا يشغل النظام الاحتياطي.
يبقي دلوقتي ال main فيها انه ياخد القراءه بتاعه light sensor ويشوف لو هيه اقل من قيمه محدده ينور النور ولو اعلي من القيمه ديه متنورش النور او اطفيه لو كان شغال .

وبالنسبه الحدث المهم اللي مينفعش يتاخر واللي هوه بالنسبه ليه مهم جدا هو ان لو النور قطع شغل نظام الاحتياطي ..وطبعا لازم يكون سريع جدا لان ده مصنع
فالحدث المهم ده بحطه علي (الانتربت )
لما النور هيقطع والميكروكنترولر بتاعي يعرف كده هيروح يشوف الانتربت بيقولي اعمل ايه و انفذه

بص بقي علي الصوره هتلاقي ان فيه شويه خطوات كده بتحصل او حاجه عشان الانتربت يشتغل :
1- لازم يحصل عندي الانتربت اللي انا محدده (النور يقطع)
2- لازم انا اكون اصلا مشغل الانتربت المظبوط.
3- لازم اكون مشغل حاجه اسمها Global interrupt
ساعتها البرنامج لما يحصل الانتربت يروح يشوف انا كنت قايله اعمل ايه و يبدا ينفذه
ولما يخلصه هيرجع لل main تاني عشان يكمل اللي كان بيعمله قبل الانتربت مايجي
ان شاء الله المقال القادم هيتم فيه شرح كيفيه تشغيل الانتربت و ايه الregister اللي المفروض اشغلها سواء كان pic or avr
وبعديه هيكون فيه مثال علي كده ان شاء الله
والحمد لله و الصلاه و السلام علي رسول الله