قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 07-06-2015, 11:47 PM المشاركة 1   
افتراضي مشاريع الميكروكونترولر المتقدمة بلغة السى نظام تشغيل الزمن الفعلى (الحقيقى) RTOS والم Twitter FaceBook Google+



مشاريع الميكروكونترولر المتقدمة بلغة السى نظام تشغيل الزمن الفعلى (الحقيقى) RTOS والمترجم CCS C :
تعدد المهام وأنظمة تشغيل "الوقت الحقيقى" RTOS :
تقريبا جميع الأنظمة القائمة على الميكروكونترولر تؤدى أكثر من نشاط (مهمة) . على سبيل المثال ، نظام مراقبة درجة الحرارة يتم عمله من خلال ثلاثة مهام والتى عادة ما تتكرر بعد تأخير بسيط ، هذه المهام هى :
• المهمة رقم 1 : قراءة reads درجة الحرارة .
• المهمة رقم 2 : تشكيل formats درجة الحرارة .
• المهمة رقم 3 : عرض displays درجة الحرارة .
الأنظمة الأكثر تعقيد قد يكون بها مهام معقدة كثيرة . فى النظام متعدد المهام ، هذه المهام المتعددة تتطلب وقتا من وحدة المعالجة المركزية ، وحيث أن هناك وحدة معالجة مركزية واحدة ، لذلك ، فإنه يلزم شكلا من أشكال التنظيم والتنسيق بحيث أن يكون لكل مهمة الوقت الذى تحتاجه من وحدة المعالجة المركزية . عمليا ، كل مهمة تأخذ قدر وجيز جدا من الزمن ، لذلك فإنه يبدو كما لو أن جميع المهام يتم تنفيذها على التوازى وفى وقت واحد .
تقريبا كل الأنظمة القائمة على الميكروكونترولر تعمل فى الزمن الحقيقى . نظام الزمن الحقيقى هو نظام سريع (حساس) الاستجابة للزمن وهو يمكن أن يستجيب لبيئته فى أقصر وقت ممكن .
الوقت الحقيقى لا يعنى بالضرورة أن الميكروكونترولر يعمل عند سرعة عالية . المهم فى نظام الزمن الحقيقى هو زمن الاستجابة السريع ، على الرغم من أن السرعة العالية يمكن أن تساعد . على سبيل المثال ، نظام زمن حقيقى قائم على الميكروكونترولر مع مفاتيح خارجية مختلفة من المتوقع (المنتظر) أن يستجيب على الفور عندما يتم تفعيل مفتاح أو بعض وقوع بعض الأحداث الأخرى .
نظام تشغيل الزمن الحقيقى RTOS هو قطعة من الكود (عادة تسمى نواة أو بذرة أو اللب kernel) والتى تسيطر على توزيع المهام عندما يتم تشغيل الميكروكونترولر فى بيئة متعددة المهام . نظام تشغيل الزمن الحقيقى يقرر ، على سبيل المثال ، المهمة التالية next التى يتم تشغيلها ، وكيفية تنسيق أولويات المهمة ، وكيفية تمرير البيانات والرسائل بين المهام .
فى هذا الموضوع سوف يتم استعراض المبادىء الأساسية للأنظمة المدمجة embedded systems مع أمثلة على استخدام نظام تشغيل الزمن الحقيقى فى مشاريع بسيطة .
هناك عدة أنظمة RTOS متاحة تجاريا من أجل الميكروكونترولر PIC . حتى وقت كتابة هذا الموضوع ، ولحد علمى ، لم يوفر المترجم ميكروسى نظام RTOS ، فى حين أن المترجم CCS C PIC يوفر هذا النظام وهو ما سوف نعتمد علية فى هذا الموضوع .
مخطط حالة الماكينة (الجهاز) State Machine :

احصائية الشكر والاعجاب - 2 شكراً, 0 عدم اعجاب, 2 اعجاب
شكراً حسن هادي محمود, Omar Mekkawy ( شكر العضو على هذه المشاركة )
اعجاب حسن هادي محمود, Omar Mekkawy ( أعجبته المشاركة )
اعلانات

mounir_bahja
:: مهندس ::
تاريخ التسجيل: Jun 2015
المشاركات: 2
نشاط [ mounir_bahja ]
قوة السمعة:0
قديم 08-06-2015, 12:10 AM المشاركة 2   
افتراضي


جزاك الله خيرا اخي عبد العزيز على هدا الموضوع المشوق و اعانك الله على استكماله و نصر الله الإسلام و جميع المسلمين

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 08-06-2015, 12:43 AM المشاركة 3   
افتراضي


جزاك الله خيرا اخي عبد العزيز على هدا الموضوع المشوق و اعانك الله على استكماله و نصر الله الإسلام و جميع المسلمين
أخى الكريم شكرا جزيلا لك

مع تمنياتى بدوام التوفيق


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 08-06-2015, 12:45 AM المشاركة 4   
افتراضي مخطط حالة الماكينة (الجهاز) State Machine :


مخطط حالة الماكينة (الجهاز) State Machine :
مخطط حالات الماكينة هو عبارة عن أبنية بسيطة تستخدم تستخدم لتنفيذ أنشطة متعددة ، عادة تكون فى تسلسل . الكثير من أنظمة الحياة الواقعية يقع ضمن هذه الفئة . على سبيل المثال ، تشغيل غسالة الملابس أو غسالة الأطباق يتم وصفها بسهولة من خلال مخطط بناء حالة الماكينة .
ولعل أبسط طريقة لتنفيذ بناء حالة الماكينة فى لغة السى هو استخدام عبارة switch-case . على سبيل المثال ، نظام مراقبة درجة الحرارة له ثلاث مهام ، تسمى Task 1, Task 2, Task 3 كما هو مبين فى الشكل التالى :




قطعة الكود التالية تبين طريقة تنفيذ حالة الماكينة للثلاث مهام باستخدام عبارة switch-case :



كود:
for(;;)
{
state = 1;
switch (state)
{
CASE 1:
implement TASK 1
state++;
break;
CASE 2:
implement TASK 2
state++;
break;
CASE 3:
implement TASK 3
state = 1;
break;
}
Delay_ms(n);
}
حالة البدء هى الحالة “1” ، وكل مهمة تقوم بزيادة رقم الحالة بواحد لاختيار الحالة التالية التى سوف يتم تنفيذها . الحالة الأخيرة تختار الحالة “1” ، وهناك تأخير عند نهاية عبارة switch-case . يتم تنفيذ بناء حالة الماكينة بشكل مستمر داخل حلقة for ، لانهاية لها .
فى العديد من التطبيقات ، قد لا نحتاج تنفيذ الحالات فى تسلسل . لذلك ، بدلا من ذلك يتم اختيار الحالة التالية بواسطة الحالة الحالية إما مباشرة أو بناء على شرط ما ، كما هو مبين فيما يلى :




كود:
for(;;)
{
state = 1;
switch (state)
{
CASE 1:
implement TASK 1
state = 2;
break;
CASE 2:
implement TASK 2
state = 3;
break;
CASE 3:
implement TASK 3
state = 1;
break;
}
Delay_ms(n);
}
على الرغم من أن مخطط حالة الماكينة سهل التنفيذ إلا أنه بدائى واستخدامه محدود . فهو يمكن أن يستخدم فقط فى الأنظمة التى لا تستجيب فعليا ، وحيث أنشطة المهام معرفة جيدا ولم يتم تحيد أولويات المهام .
علاوة على ذلك ، بعض المهام قد تكون أكثر أهمية من غيرها . وقد نرغب فى تشغيل بعض المهام كلما تصبح مؤهلة (مطلوبة) . على سبيل المثال ، فى عملية تصتيع ، المهمة التى تقوم بتشغيل الإنذار عندما تكون درجة الحرارة مرتفعة جدا . هذا النوع من التنفيذ يتطلب نظام متطور مثل نظام تشغيل الزمن الحقيقى RTOS .

نظام تشغيل الزمن الحقيقى (الفعلى) RTOS :


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:131
قديم 08-06-2015, 03:34 AM المشاركة 5   
افتراضي


السلام عليكم

أشكرك على مواضيعك الرائعه والمجهود كبير

عندي سؤال هو شنو فرق بين كود كومبايلر مايكروسي برو و المترجم CCS C PIC

وايهما افضل من ناحيه مكتبات وتوليد ملف hex

وايضا كيف يمكنني حصول على نسخه كامله المترجم CCS C PIC

وشكرا جزيلا لكم


الصورة الرمزية Sallam
Sallam
:: مهندس متميز ::
تاريخ التسجيل: Mar 2006
الدولة: Syria
المشاركات: 518
نشاط [ Sallam ]
قوة السمعة:0
قديم 08-06-2015, 07:36 AM المشاركة 6   
افتراضي


مشاريع الميكروكونترولر المتقدمة بلغة السى نظام تشغيل الزمن الفعلى (الحقيقى) RTOS والمترجم CCS C :
تعدد المهام وأنظمة تشغيل "الوقت الحقيقى" RTOS :
تقريبا جميع الأنظمة القائمة على الميكروكونترولر تؤدى أكثر من نشاط (مهمة) . على سبيل المثال ، نظام مراقبة درجة الحرارة يتم عمله من خلال ثلاثة مهام والتى عادة ما تتكرر بعد تأخير بسيط ، هذه المهام هى :
• المهمة رقم 1 : قراءة reads درجة الحرارة .
• المهمة رقم 2 : تشكيل formats درجة الحرارة .
• المهمة رقم 3 : عرض displays درجة الحرارة .
الأنظمة الأكثر تعقيد قد يكون بها مهام معقدة كثيرة . فى النظام متعدد المهام ، هذه المهام المتعددة تتطلب وقتا من وحدة المعالجة المركزية ، وحيث أن هناك وحدة معالجة مركزية واحدة ، لذلك ، فإنه يلزم شكلا من أشكال التنظيم والتنسيق بحيث أن يكون لكل مهمة الوقت الذى تحتاجه من وحدة المعالجة المركزية . عمليا ، كل مهمة تأخذ قدر وجيز جدا من الزمن ، لذلك فإنه يبدو كما لو أن جميع المهام يتم تنفيذها على التوازى وفى وقت واحد .
تقريبا كل الأنظمة القائمة على الميكروكونترولر تعمل فى الزمن الحقيقى . نظام الزمن الحقيقى هو نظام سريع (حساس) الاستجابة للزمن وهو يمكن أن يستجيب لبيئته فى أقصر وقت ممكن .
الوقت الحقيقى لا يعنى بالضرورة أن الميكروكونترولر يعمل عند سرعة عالية . المهم فى نظام الزمن الحقيقى هو زمن الاستجابة السريع ، على الرغم من أن السرعة العالية يمكن أن تساعد . على سبيل المثال ، نظام زمن حقيقى قائم على الميكروكونترولر مع مفاتيح خارجية مختلفة من المتوقع (المنتظر) أن يستجيب على الفور عندما يتم تفعيل مفتاح أو بعض وقوع بعض الأحداث الأخرى .
نظام تشغيل الزمن الحقيقى RTOS هو قطعة من الكود (عادة تسمى نواة أو بذرة أو اللب kernel) والتى تسيطر على توزيع المهام عندما يتم تشغيل الميكروكونترولر فى بيئة متعددة المهام . نظام تشغيل الزمن الحقيقى يقرر ، على سبيل المثال ، المهمة التالية next التى يتم تشغيلها ، وكيفية تنسيق أولويات المهمة ، وكيفية تمرير البيانات والرسائل بين المهام .
فى هذا الموضوع سوف يتم استعراض المبادىء الأساسية للأنظمة المدمجة embedded systems مع أمثلة على استخدام نظام تشغيل الزمن الحقيقى فى مشاريع بسيطة .
هناك عدة أنظمة RTOS متاحة تجاريا من أجل الميكروكونترولر PIC . حتى وقت كتابة هذا الموضوع ، ولحد علمى ، لم يوفر المترجم ميكروسى نظام RTOS ، فى حين أن المترجم CCS C PIC يوفر هذا النظام وهو ما سوف نعتمد علية فى هذا الموضوع .
مخطط حالة الماكينة (الجهاز) State Machine :

بارك الله بك

مواضيعك مشوقة ورائعة ولا زلت متابعا معك

من خلالك أحببت التعامل مع برنامج CCS وكما حضرتك تتكلم عنه بأنه يحتوي على بعض الأمور الغير موجودة في برنامك ميكروسي.


بانتظار تكملة الموضوع

بالتوفبق


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 08-06-2015, 10:58 AM المشاركة 7   
افتراضي نظام تشغيل الزمن الحقيقى (الفعلى) RTOS :


نظام تشغيل الزمن الحقيقى (الفعلى) RTOS :
تبنى أنظمة تشغيل الزمن الحقيقى حول نواة متعددة المهام والتى تسيطر على تخصيص شرائح زمنية للمهام . الشريحة الزمنية هى الفترة الزمنية التى تمتلكها مهمة معينة للتنفيذ قبل أن يتم إيقافها واستبدالها بمهمة أخرى . هذه المهمة ، والتى تعرف أيضا باسم "تبديل السياق أو الحالة" context switching ، تتكرر باستمرار . عندما يحدث تبديل السياق ، يتم إيقاف تنفيذ المهمة ، ويتم حفظ سجلات المعالج فى الذاكرة ، يتم تحميل سجلات المهمة التالية المتاحة إلى وحدة المعالجة المركزية ، ويبدأ تنفيذ المهمة الجديدة . كما يوفر نظام RTOS أيضا مرور الرسائل من مهمة إلى مهمة ، وتزامن المهام ، وتخصيص مشاركة الموارد للمهام .
الأجزاء الأساسية لنظام RTOS هى :
• الجدولة Scheduler .
• خدمات نظام RTOS .
• أدوات التزامن والرسائل .

الجدولة Scheduler :
الجدولة هى قلب كل نظام RTOS ، حيث أنها توفر الخوارزميات (خطوات البرنامج) لاختيار المهام لتنفيذها . الثلاثة خوارزميات الأكثر شيوعا (استخداما) وهى :
• الجدولة التعاونية Cooperative scheduling .
• جدولة الذهاب والإياب Round-robin scheduling .
• الجدولة الوقائية (الاستباقية) Preemptive scheduling .

الجدولة التعاونية :
لعلها تكون أبسط خوارزمية جدولة متاحة . فكل مهمة يتم تشغيلها حتى تكتمل وتتخلى عن وحدة المعالجة المركزية طوعا . الجدولة التعاونية لا يمكن أن تلبى احتياجات نظام ROTS ، حيث لا يمكنها أن تدعم تحديد أولويات المهام حسب الأهمية . أيضا ، فإن مهمة واحدة قد تستخدم وحدة المعالجة المركزية وقتا طويلا وتترك القليل من الوقت للمهام الأخرى . كما أن المجدول لا يوجد لديه السيطرة على زمن تنفيذ مختلف المهام . مخطط الحالة هو نموذج بسيط لتقنية الجدولة التعاونية .

جدولة الذهاب والإياب :
فى جدولة الذهاب والإياب ، لكل مهمة يتم تخصيص (تعيين) حصة متساوية من وقت وحدة المعالجة المركزية ، كما هو مبين بالشكل التالى :



يوجد عداد counter يتتبع شريحة الوقت لكل مهمة . فعند اكتمال شريحة الوقت لمهمة ما ، فإنه يتم مسح (تصفير) العداد ويتم وضع المهمة فى نهاية الدورة . المهام المضافة حديثا يتم وضعها فى نهاية الدورة مع تصفير العدادات الخاصة بها . وهذا يشبه الجدولة التعاونية ، من حيث أنه غير مفيد بشكل جيد فى نظام RTOS ، حيث أنه فى كثير من الأحيان تستغرق بعض المهام عدة ملى ثوانى فى حين أن البعض الآخر يتطلب مئات الملى ثوانى أو أكثر .

الجدولة الاستباقية (الوقائية) :
تعتبر الجدولة الاستباقية هى خوارزمية جدولة الزمن الحقيقى . فهى قائمة على الأولوية ، وكل مهمة تعطى أولوية معينة كما فى الشكل التالى :




المهمة ذات الأولوية الأعلى تحصل على وقت وحدة المعالجة المركزية . بشكل عام ، تدعم أنظمة RTOS مستويات ولوية تتراوح من 0 إلى 255 ، حيث الصفر هو الأعلى أولوية و 255 هو الأدنى أولوية .
فى بعض أنظمة RTOS حيث يمكن أن يكون هناك أكثر من مهمة واحدة على نفس المستوى من الأولوية ، عندئذ يتم مزج الجدولة الاستباقية مع جدولة الذهاب والإياب . فى مثل هذه الحالات ، المهام التى عند مستويات الأولوية الأعلى يتم تشغيلها قبل التى لها مستويات أقل ، والمهام التى عند نفس مستوى الأولوية يتم تشغيلها عن طريق الجدولة ذهابا وإيابا . إذا سبقت مهمة بواسطة مهمة ذات أولوية أعلى ، فإنه يتم حفظ عداد زمن التشغيل وبعد ذلك يتم إستعادته عندما يعود لها اليسطرة على وحدة المعالجة المركزية .
فى بعض النظم يتم تعريف فئة أولوية زمن حقيقى بشكل صارم حيث المهام فوق هذه الفئة قد تعمل لتكتمل ( أو تستمر فى العمل حتى يصبح المورد غير متوفر ) حتى لو كانت هناك مهام أخرى على نفس مستوى الأولوية .
فى نظام الوقت الحقيقى يمكن أن تكون المهمة فى أى من الحالات التالية , كما هو موضح بالشكل أدناه :
• متأهب (مستعد – جاهز) للتشغيل Ready to run .
• تشغيل Running .
• ممنوع (محظور) Blocked .



عند بداية إنشاء المهمة ، فهى عادة ما تكون جاهزة للتشغيل ويتم إدخالها فى قائمة المهام . من هذه الحالة ، ورهنا بخوارزمية الجدولة ، يمكن أن تصبح المهمة ، مهمة قيد التشغيل . ووفقا لشروط الجدولة الاستباقية ، سوف يتم تشغيل المهمة إذا كان لها الأولوية الأعلى فى النظام ولا تنتظر من أجل المورد .

المهمة قيد التشغيل تصبح مهمة محظورة إذا احتاجت مورد غير متوفر . على سبيل المثال ، مهمة قد تحتاج بيانات من محول من تناظرى لرقمى ADC ويتم حجزها (منعها) حتى تتوفر هذه البيانات . بمجرد أن يمكن الوصول للمورد ، تصبح المهمة الممنوعة مهمة قيد التشغيل إذا كانت مهمة الأولوية الأعلى فى النظام ، وإن لم تكن كذلك ، فإنها تنتقل إلى حالة الاستعداد (جاهز) ready . فقط ، يمكن أن يتم منع المهمة قيد التشغيل . لا يمكن منع المهمة فى حالة الاستعداد .
عندما تنتقل مهمة من حالة إلى أخرى ، فإن المعالج يحفظ سياق المهمة قيد التشغيل فى الذاكرة ، ويحمل سياق المهمة الجديدة من الذاكرة ، وبعد ذلك يتم تنفيذ التعليمات الجديدة على النحو المطلوب .
عادة توفر النواة kernel واجهة لمعالجة عمليات المهمة . عمليات المهمة النموذجية هى :
• إنشاء المهمة .
• حذف المهمة .
• تغيير أولوية المهمة .
• تغيير حالة المهمة .


خدمات نظام RTOS :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 08-06-2015, 11:14 AM المشاركة 8   
افتراضي


السلام عليكم

أشكرك على مواضيعك الرائعه والمجهود كبير

عندي سؤال هو شنو فرق بين كود كومبايلر مايكروسي برو و المترجم CCS C PIC

وايهما افضل من ناحيه مكتبات وتوليد ملف hex

وايضا كيف يمكنني حصول على نسخه كامله المترجم CCS C PIC

وشكرا جزيلا لكم
أخى الكريم شكرا جزيلا لك
1- أنا شخصيا لا استطيع بصفة مؤكدة الحكم على الفرق بين المترجمين , لكننى أفضل الإلمام بكل منهما حيث يسمح ذلك بتبادل البرامج وتعديلها بسهولة ، لكن وحيث أنك ذكرت من حيث المكتبات وملف الهيكس فهناك دراسات على الانترنت ترجح كفة المترجم CCS C فى كلا الجانبين وخصوصا أن هذا المترجم قد تم إدخالة للخدمة قبل الميكروسى بعدة سنوات كما أنه يتضمن الكثير من الأمثلة الجيدة .
2- البحث عبر الإنترنت هو وسيلتنا الوحيدة للحصول على نسخة وسوف تجد رابط للبرنامج فى بداية موضوع البرمجة مع المترجم CCS C .


إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 10:59 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2024