 |
:: عضو فضي ::
تاريخ التسجيل: Apr 2005
المشاركات: 151
|
|
نشاط [ hasanAli ]
قوة السمعة:
|
|
07-12-2006, 10:36 AM
المشاركة 101
|
|
المقاطعات
حدوثة المقاطعات في المتحكمات الصغيره إفترض نفسك , واحدا من أفراد الطبقه العامله في هذه الأمه , وكلفت بحفر خندق بمعول , أتاك حسن علي ليلقي عليك السلام , فتوقفت عن الضرب بالمعول لترد السلام , بعدها إختفى صاحبك , وعدت لضرب المعول , أتتك مجموعه من النحل قاصدة تقبيل وجهك الطاهر فهربت , وعندما إبتعدوا , عدت لضرب المعول , أصبحت الساعه 12 ظهرا , فذهبت للغداء ثم عدت لضرب المعول ...
حدثت لك ثلاث مقاطعات لعملك , الأولى بسبب حسن علي ثقيل الدم , الثانيه بسبب الفزع , والثالثه بسبب وقت , طيب صديقي , المتحكم الصغير , من الطبقه العامله , وضيفته , أن يقرأ الأوامر " من ذاكرة البرنامج " ويطبقها بالتسلسل واحد ثم 2 ثم 3 ... وهكذا , وبينما يطبق عمله هذا , من الممكن أن يتعرض لمقاطعات ... طبعا لن يترك عمله ولو بقي حسن علي يلقي عليه السلام ثلاثة أيام . إذا من يقاطع عمل المتحكم ؟ .
هناك أربع عوامل , أو هناك أربع مسببين لمقاطعه في عمل المتحكم , إثنان بداخله ,وثلاثه من الخارج , يا أخونا 2+3=5 وليس أربعه كما تقول ..... لا ...لا ... ما أقوله صحيح , صلي على النبي , وسأشرح لك , من الداخل سجل "المؤقت " عندما يصل للـ 255 وعند إنقلابه لصفر يحدث " مقاطعه لعمل المتحكم " ... إذا المؤقت من الداخل , الآن لا تنسى أن هذا المؤقت يمكن إستعماله كعداد وهو في هذه الحاله يعد التغيرات التي تحدث على الطرف منفذ أ 4 , شرحنا ذلك , في هذه الحاله التغيرات تأتي من الخارج , إذا صاحبنا المؤقت "كجنبلاط" بوجهان داخلي وخارجي.
المسبب الثاني داخليا , "كتابة الذاكره الدائمه" .... "EEPROM" ..... كتابة أي سجل في "الذاكره الدائمه" يستغرق وقت أكثر بكثير من كتابة سجل في "ذاكرة البرنامج " أو "الذاكره المؤقته" ....طيب عندما تنتهي كتابة السجل في الدائمه تحدث مقاطعه.
المسبب الثالث , طرف المقاطعه , " منفذ ب صفر" .
المسبب الرابع , أي واحد من أطراف "منفذ ب 4 وحتى منفذ ب 7 " .
طيب أخي كلامك , مصيبه كبيره , إذا كل هذه الناس ستقاطعنا ... برنامجنا لن يصل لهدفه أبدا .... لا صديقي لا تخف كل هذه المقاطعات يمكن تفعيلها أو تعطيلها فقط بوضع صفر أو واحد ببيت معين في سجل . السجل المخصص , للتحكم في المقاطعات .... هو سجل المقاطعات ...سجل هدف خاص موجود في صفحتان الذاكره المؤقته . ولنبدأ بإزالة الستار عنه , ككل سجلات الذاكره المؤقته مكون من 8 بيت , من بيت صفر ولغاية بيت7 ......
أخر واحد "البيت سبعه" إسمه " تفعيل الجميع " إذا كان صاحبنا 1 تفعل جميع المقاطعات , وصفر تعطل كلها ... كيفني معك ....شعرت بالراحه الآن أليس كذلك ؟ .....ولك مني خبر آخر يفرحك ....عند وصول التيار للمتحكم , تكون قيمة هذا البيت صفر ...يعني معطلين تلقائيا....فإذا كانوا يسببوا لك وجع الرأس .... لا تقترب منهم ....لا يقتربون منك....ها ...ها ...ها ..ولغاية الفجر.
البيت سته إسمه " تفعيل الدائمه " .... واحد تفعل مقاطعتها وصفر تعطل .
البيت خمسه إسمه "تفعيل المؤقت " .... واحد تفعل مقاطعته وصفر تعطل .
البيت أربعه إسمه " تفعيل طرف المقاطعه " .... واحد تفعل مقاطعته وصفر تعطل .
البيت ثلاثه إسمه " تفعيل أطراف ب " ...... .... واحد تفعل مقاطعاتهم وصفر تعطل .
الثلاثه المتبقيه عباره عن أعلام ترفرف لتخبرنا بحدث .... كالجزيره..... والمنار.....والنيو....إستثنينا الكذابين لأن أعلام سجل المقاطعات لا تكذب ...
البيت إثنان إسمه "بسبب المؤقت " .... واحد أحدث المؤقت مقاطعه صفر لم يحدث ..... بريئ كعادل إمام في شاهد مشفش حاجه.
البيت واحد إسمه "بسبب طرف المقاطعه " ...... واحد أحدث مقاطعه صفر لم يحدث .....
البيت صفر إسمه " بسبب أطراف ب " ........ واحد أحدث مقاطعه أحدهم صفر لم يحدثوها.....جماعه ما دخلهم بالموضوع
طيب يا حكواتي سؤال ....إذا أردت أن أفعل فقط "طرف المقاطعه" في برنامجي ...فقط أضع واحد في البيت " تفعيل طرف المقاطعه " وإنتهى الموضوع؟ ....لا عيوني ....يجب أن يكون بيت " تفعيل الكل" مفعل ..... " تفعيل طرف المقاطعه " مفعل وما تبقى معطل .... إلى جانب أن تكون قد أعددت " طرف منفذ ب صفر " كدخول ....مسبقا .... أفحمتك جاوب.
هذه القاعده صحيحه ....لأنواع المقاطعات الأخرى....
أخبرتك أنه عندما يبدأ المتحكم بقرائة البرنامج , أو عند تطبيق إعادة إنضباط " RESET " مع فتلة لسان للذين يتقنون الإنكليزي...........تكون قيمة كل سجل المقاطعات صفر.
طيب يا حسن , وقعت الواقعه , وحدثت المقاطعه , وبعدها ماذا؟ .... أنصحك بضرب كوب من حليب الماعز ... أولا ... لأن الآتي بحاجه للإنتباه الشديد .... كما يفعل الهر عندما تبعد عنه فأره أمتار ..... على كل حال ليست كمقاطعة العرب لإسرائيل يصعب فهما " شعب مقاطع وحاكم مغرم " .
شوف عيوني .... عندما تحدث أي مقاطعه , من الخمس المذكوره , أول عمل يقوم به المتحكم هو وضع "عنوان الأمر الذي يلي الأمر حيث حدثت المقاطعه في "ذاكرة العوده " أبرم لساني وأقول "STACK " . أعيد : أول عمل يقوم به المتحكم هو وضع "عنوان الأمر الذي يلي" الأمر حيث حدثت المقاطعه في "ذاكرة العوده ".
ثاني عمل يقوم به , يضع صفر في سجل المقاطعات " تفعيل الكل " , هل عندك فكره لما فعل ذلك ؟ .... أنا عندي ... كي لا تقاطع مقاطعه أخرى تنفيذ المقاطعه هذه ........عطل الكل ....
ثالثا : سيذهب إلى السجل أربعه من ذاكرة البرنامج ..... في "فلوجة المتحكم" وكأننا نقول يذهب ليطبق السطر 4 " ..... إذا أي مقاطعه ....شبيهه لأمر إستدعاء لمؤشر في السطر4 .....
هذه الأمور يفعلها تلقائيا ....ما هو المطلوب منا الآن ؟ .... أن نكتب مصغر أو ما نريده من المتحكم أن يفعل في حال حدوث مقاطعه إبتداءا من السطر 4 وما فوق .... وأن أختم هذا المصغر بأمر "إرجع من مقاطعه " وليس بـ "إرجع " لأن الأولى " تفعل الكل" مجددا ....
أنت معي ... حتى الآن رواق .... الحمدلله.
لاحظ صديقي , أن ما حصل تقريبا ...هو أن المتحكم ترك تطبيق برنامج ليطبق برنامج آخر ....ثم سيعود لمتابعة الأول ..صح ..... طيب .... أنا لا أملك غير سجل "واو" واحد , وسجل "حالات" واحد ....وهذان السجلان في تغير مستمر مع تغير قرائة الأوامر .... فأكيد عندما نرجع من تطبيق المقاطعه , سيحملون معهم للبرنامج الأساس , معلومات خاطئه . ما الحل؟.....
الحل أن نضع , سجلان هدف عام , واحد نسميه "نسخة_واو" مثلا والثاني "نسخة_الحالات" , إسمهم يدل على أننا سنحفظ منهم نسخه للعوده ....إذا أول سطر في المقاطعه ....يجب أن يكون .... حرك واو لسجل.........نسخة_واو
الآن إذا قلت , حرك سجل........الحالات ..........واو , الأمر "حرك سجل" نفسه يحدث تغيير في سجل الحالات. الحل أن أستبدله بالأمر "بدل نيبلات" .....ليصبح ثاني سطر ... بدل نيبلات..........الحالات.........واو . وبعدها أحرك "واو" لسجل نسخة_الحالات
. حرك واو لسجل................نسخة_الحالات إذا هذه هي الأسطر الثلاثه التي يجب أن تبدأ بها أي مقاطعه .
حرك واو لسجل.........نسخة_واو
بدل نيبلات سجل..........الحالات.........واو
حرك واو لسجل................نسخة_الحالات
بعدها أكتب برنامجك كما تريد, شرط أن تكون آخر 6 أسطر كما يلي .
بدل نيبلات سجل...........نسخة_الحالات.......واو
حرك واو لسجل................ الحالات
بدل نيبلات سجل.............. نسخة_واو............سجل
بدل نيبلات سجل............. نسخة_واو.............واو
ضع صفر ببيت ........."العلم المسبب" .................. مثلا "بسبب طرف المقاطعه" أو "بسبب المؤقت " إلخ...
إرجع من مقاطعه
في هذه الأسطر أعدنا كل شيء على حالته , قبل العوده للبرنامج الأساس. محينا العلم "للمسبب" ... لنستطيع معرفة السبب المقبل بحق......
قصتنا لا تنتهي هنا , طيب , تكلمنا عن مقاطعات خارجيه " طرف المقاطعه" صح ؟ . وتحدثنا عن تغيرات خارجيه بهذه الطرف , ما معنى تغير حالة طرف ؟ .... يكون صفر فولت فيصبح خمسه أو يكون خمسه فيصبح صفر ...في الحاله الأولى نقول أن التغير حصل صعوديا ..... وفي الثانيه هبوطيا ..... السؤال الآن متى تحدث المقاطعه ....في حالة الصعود أم الهبوط ؟... المتحكم يترك لك حرية الإختيار...أين؟ في سجل "الخيارات" ....إذا لنشرح هذا السجل المرتبط بصوره مباشره مع سجل "المقاطعه" ..
...
|