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

بسم الله و الصلاه و السلام علي رسول الله
الجزء التاني من الانتربت

احنا قولنا ان الانتربت لما يحصل ولو كنت انا عامل Enable للانتربت هيبدا البرنامج ينفذ اللي انا قايله يعمله
طيب فيه نقطتين بقي بيتم من خلالهم ظبط الانتربت ده :
اولا : الانتربت لما بيحصل البروسيسور بيحط واحد في bit معينه في ال interrupt register (ومعني ان bit يتحط فيها 1 انه اتعملها flag )
وديه حاجه بتتم تلقائيا من البروسيسور لما يحصل انتربت مبشغلش انا بالي بيها كتير

ثانيا : لما يحصل انتربت لازم اكون انا اصلا عامل Enable للRegisters المسئوله عن ال Interrupt يعني دلوقتي الانتربت بيحصل بالمشاركه بيني و بين البروسيسور

مثال :
دلوقتي انا قولت لما النور يقطع عايز البرنامج بتاعي يشغل النظام الاحتياطي ....والكلام ده انا عامله في انتربت فلازم اعمل Enable لل Interrupt registers واكتب للبرنامج اللي المفروض يعمله لما الانتربت يحصل (ده دوري انا كمبرمج )

دور البروسيسور بقي انه يعمل حاجتين ...اولا لما يحصل الانتربت ده هيحط 1 في Bit محدده (يرفع ال Flag ) .
والحاجه التانيه : وهوه شغال في ال main قبل تنفيذ كل امر يبص علي ال Register بتاع الانتربت لو لقي فيه bit ب 1 يروح ينفذ اللي انا كنت قايله عليه

عشان كده فيه جزئين في الRegister جزء انا بحط قيمته عشان اعمل Enable وجزء البرنامج بيحط قيمته لما الInterrupt يحصل و انا بخلي البرنامج يعمل check علي الجزء ده

الجزء اللي انا بحط قيمته ده بيكون اسمه x enable
و x معناها اي حاجه يعني هوه مش اسمه x ولكن x ديه كمثال.

والجزء اللي البرنامج بيحط فيه واحد لما الانتربت يحصل اسمه Xflag
وبرضو x المقصود بيها مثال

طيب ايه هيه بقي انواع الانتربت اللي ممكن تكون موجوده عندي...يعني ايه الحاجات اللي ممكن تعمل انتربت (Alarm ) لما تحصل؟!!!!

فيه انواع مختلفه من الانتربت :
1- internal interrupt
2- external interrupt
3-Timer interrupt
4-PORT b interrupt
5-A/D Converter interrupt

وفيه حاجات تانيه بتختلف من كل كنترولر للتاني ..هيتشرحوا ان شاء الله محدش يقلق من الاسماء ...
طيب ايه الفرق بينهم ..واحد منهم مثلا بيعمل انتربت (اللي احنا اتفقنا ان هوه Alarm للبروسيسور ) لما يخلص تحويل القيم من Analog to digital
وواحد تاني بيعمل انتربت لما تحصل حاجه من بره
وواحد تاني لما القيمه اللي علي Bin مححده تختلف يعني مثلا كان عليها 1 ودخل عليها 0 او العكس
وواحد تاني لما بيوصل لوقت معين وهكذا ..المهم ان كل واحد فيهم بيعمل انتربت علي اساس حاجه محدده ...انا بقي علي حسب التطبيق بتاعي بختار الانتربت اللي انا عايزه

طيب ...كفايه نظري بقي و نقول ازاي نشغل الانتربت !!!!
احنا قولنا ان اولا كده عشان اشغل اي انتربت ..مهما كان نوعه ..لازم اكون مشغل ال Global interrupt (ديه رقم واحد)

الحاجه التانيه : قولنا ان كل انتربت (كل نوع من الانواع اللي قولناها فوق ) بيتعامل مع 2 Bit واحد انا بحطه عشان اعمله Enable
والتاني البروسيسور بيحطه لما يحصل الانتربت اللي هوه (flag)
يبقي كده كل نوع من الانتربت بيتعامل مع 2 bit خاصيين بيه ...وواحد مشترك بين كل الانواع اسمه Global interrupt

كل ال Bit ديه بقي بتبقي موجوده في Register (8Bit)
اسمه Interrupt control ...
.....................................................................................................................
ان شاء الله المقال القادم هنبدا نكتب برنامج نشتغل فيه بالانتربت اسف علي الاطاله
...........................................................................
متنساش تبص علي الجزء الاول هنا لو فايتك حاجه
https://www.facebook.com/EmbeddedSystem2015/photos/a.688528674557797.1073741826.688527301224601/692870180790313/?type=1&theater
لو فيه استفسار او حاجه مش واضحه ياريت الناس تسئل
شييير الموضوع وفيد غيرك

والصلاه و السلام علي رسول الله و دمتم بخير

.....................................................................................................................