تابع
مرحبا بجميع الأخوة وكل عام وأنتم بخير
ونكمل ،
سنركز على جزئية الربط فى هذه المرة ونترك وظيفة المتحكمات الفرعية :-
أول مرحلة فى هذا الموضوع سنتعامل مع المتحكم الرئيسى وتحديد هدفه والغرض منه . فكل مشروع يختلف عن الآخر من حيث الهدف المطلوب تحقيقه من تلك المشروع ووظيفته !
لذلك يجب علينا معرفة الطريقة الأساسية لعملية الربط والتى تتكون من مرحلتان ( إرسال وإستقبال ) .
لاحظنا عندما نقوم بتشغيل الهاتف النقال أنه يستغرق وقتا يختلف من موديل لآخر ! لماذا ؟ قد يكون خلال هذا الوقت صورة أو نص تحية ، وفى الواقع أن مايحدث هو عملية تحميل ملفات مخزنة على ذاكرات مرتبطة مع المتحكم الرئيسى وباقى المتحكمات ، فكل متحكم يجب أن يبدأ عمله ويستقر أولا ثم يعطى إشارة أنى جاهز للمتحكم الرئيسى وبعد التأكد من تمام بدأ عمل جميع المتحكمات يبدأ الجهاز فى عمله بصورة طبيعية . .
تعاملنا كله عن طريق الأرقام لأن المتحكمات لا تفهم غير ( On , Off ) يعنى ( 1 , 0 ) لذلك ستكون لغة الحوار بين المتحكمات ما هى إلا أرقام ، يعنى سؤال المتحكم الرئيسى للمتحكم الفرعى ارسل كذا وهل أنت جاهز أم لا لأعطيك طلب آخر ، كل هذا بالأرقام فقط .
-----------------------------------

أولا :-
قبل إرسال طلب من المتحكم الرئيسى للمتحكم الفرعى نخبرة بأن يبلغنا بعدد الضغطات التى تمت من خلال المفتاح الخاص به يجب التأكد أن أطراف الداتا ( أطراف نقل البيانات من المتحكمات الفرعية إلى المتحكم الرئيسى )يجب التأكد أنها لا تحمل أى قيمة مطلقا ! ! يعنى تساوى صفر لضمان أنه لايوجد أى متحكم فرعى يبعث ببيانات حاليا ! ! وبالتالى يستطيع المتحكم أن يحصل على الجواب من المتحكم الفرعى المحدد دون باقى المتحكمات وأنه لا يوجد تداخل بينهم ! .
إذن أول شئ لن يبدأ المتحكم الرئيسى فى الطلب للمتحكمات إلا بعد التأكد أنه لا يوجد أى قيمة على أطراف الداتا وطبيعى أنه لن توجد أى قيمة على هذه الأطراف لأنه لم يتم إرسال أمر استدعاء لأى متحكم فرعى أن يبعث بالجواب !
1- كيف ننقل رقم مثل 932867 من متحكم لآخر وكم طرف سنحتاجه لهذه العملية ... ... ... ؟
2- كيف نستدعى هذا الرقم من المتحكم الفرعى رقم 2 دون المتحكم الفرعى رقم 3 ... ... ... ؟
طبعا رقم كبير مثل هذا سيحتاج لعدد كبير من الأطراف ! وأكبر بورت لن يسع غير 256 فى حالة استخدام الثمانى أطراف بالكامل ! ؟
الحل بسيط جدا وهو أننا سنقوم بنقل كل خانة على حدة حتى ننتهى من هذا الرقم ،
تماما كما نفعل فى السيفنسيجمنت ذو الأربع أو الست خانات المشتركة فى أطراف الداتا a,b,c,d,e,f,g
فإننا نرسل كل خانة على حدة ، خانة الأحاد ثم العشرات ثم خانة المآت وهكذا ، ... ... وإلا سنضطر لإستخدام أطراف كثيرة جدا !؟
نفس الشئ فى موضوعنا هنا فمثلا إذا أردنا نقل الرقم 94 سنقوم بنقل الخانة الأولى 4 ثم الخانة الثانية وفى هذه الحالة نستخدم أربع أطراف فقط لنقل الخانة الواحدة التى تنحصر قيمتها بين صفر إلى 9 ، فنقوم بنقل القيمة 4 فقط على أطراف الداتا بالكامل ( يعنى نعمل على إرسال القيمة 4 على الأربع أطراف ثم نقوم بعد ذلك بنقل الخانة الثانية ألا وهى رقم 9 وبذلك نكن قمنا بنقل الجواب 94 ضغطة )
تدور بالأذهان أسئلة كثيرة وسنجيب عليها بإذن الله تعالى ،
وفى عملية النقل يجب أن يقوم المتحكم الرئيسى باستدعاء الخانة الأولى ثم باستدعاء الخانة الثانية وبين هذه وهذه يجب أن يقوم المتحكم الرئيسى بإخبار المتحكم الفرعى بأنى استلمت الخانة الأولى بنجاح فعليك بإيقاف عملية الإرسال أولا قبل أن أطلب منك إرسال الخانة الثانية !
وسيقوم هنا المتحكم الرئيسى بانتظار المتحكم الفرعى أن يوقف عملية إرسال الخانة الأولى أى ينتظر إلى أن تصبح أطراف الداتا تساوى صفرا
وبذلك نكن نجحنا فى ارسال الخانة الأولى .
يقوم المتحكم الرئيسى بطلب الخانة الثانية من المتحكم الفرعى وينتظر الإجابة. ... ... ...
الآن المتحكم الرئيسى ينتظر الإجابة ! ! ....
ماذا لو كانت الخانة المطلوبة حاليا لا تساوى القيمة التى ذكرناها وكانت تلك القيمة تساوى صفرا ؟ ؟
المتحكم الرئيسى لن يكف ولن يمل من الإنتظار وسيظل ينتظر المتحكم الفرعى أن يرد بالإجابة ! ! فقد يكون المتحكم الفرعى مشغول بأى شئ ولو لبضع مايكرو من الثانية فلذلك يجب أن يظل المتحكم الرئيسى منتظر الإجابة ! !
كيف يفهم أن الإجابة هى القيمة صفر وليس أن المتحكم مشغول عن الرد بل هو يريد أن يبعث بالجواب ( صفر )
انتظر من حضراتكم المناقشة والتفكير ليكون بيننا تفاعل !
وسأقوم بعرض كل شئ بالتفصيل وبالأكواد والتعليمات والأمثلة التامة حتى يستوعبها الجميع ولكن خطوة خطوة ،
الكلام هذ يكتب متصل لكنه أخذ منى أسابيع فى بداية الأمر وتجارب عديدة حتى تم بنجاح باهر وتم انجاز مشاريع ممتازة والفضل يرجع لله وحده .
لاتعطينى سمكة ولكن علمنى كيف اصطادها
سنعرف كل شئ خطوة خطوة إنشاء الله
يتتبع ،