جدولة مهمة بسيطة وغير مبدعة.
هذا هو جدولة المهام البسيطة ، غير الوقائية ،. تم صنع هذا المشروع التجريبي في Atmel Studio 7 من أجل متحكم Atmega48p ، ولكن يمكن نقله بسهولة.
الهدف من هذا المجدول هو الاتصال وتنفيذ كل مهمة مع دورية محددة.
يوجد جدولة داخل مجلد OS (OS.C و OS.H). على الرغم من أنه ليس نظام تشغيل ، إلا أنني ما زلت أسميه نظام التشغيل ، لأن التسمية أسهل بهذه الطريقة (نظام التشغيل أقصر ، من Scheduler ، Duh).
هناك ثلاث وظائف رئيسية مهمة:
هناك ثلاث ولايات:
محظور: ينتظر مكالمة من المؤقت
جاهز: جاهز للتنفيذ
معلق: معاق ، لن يفعل أي شيء
الشكل 2. مخطط الدولة للمهام.
OS_TASKTIMER () هي الوظيفة ، التي تنظم المهام. يجب أن يكون في مقاطعة مؤقت (في العرض التوضيحي هو مؤقت 1 ثانية ، ولكن يمكن أن يكون أي شيء). هناك عداد داخل الوظيفة. إذا كان العداد أكبر ، في ذلك الوقت انفجار المهمة ، فإنه يضعه في حالة جاهزة.
الشكل 3. مخطط نشاط OS_TASKTIMER ().
OS_TASKEXECUTION () هي الوظيفة ، التي تستدعي المهام. يجب أن يكون في الحلقة الرئيسية () اللانهائية. يتحقق مما إذا كانت هناك أي مهام جاهزة ، ثم ينفذها بأسلوب FIFO. تجدر الإشارة إلى أنه بسبب هذا ، إنه مجرد وقت حقيقي ناعم. إذا اخترت خاطئ التوقيت ، فقد يكون هناك الكثير من المهام في حالة جاهزة وقد تحدث تأخيرات غير مرغوب فيها.
الشكل 4. مخطط نشاط OS_TASKEXECUTE ().
يهدف العرض التوضيحي إلى توضيح كيفية عمل المجدول. هناك ثلاث مهام وكل مهمة تومض LED (على المنفذ D 0،1،2) مع 1 و 2 و 5 ثوان. تبدأ المهمة الثانية في الحالة المعلقة ، لذلك لا يتم تنفيذها أبدًا.