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

   

ahmad abdullah
:: مهندس متميز ::
تاريخ التسجيل: Jun 2010
الدولة: لبنان-فلسطين
المشاركات: 584
نشاط [ ahmad abdullah ]
قوة السمعة:
قديم 17-09-2011, 09:35 AM المشاركة 17   
افتراضي



بارك الله فيكم اخواني ، والله ما قصرتم

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

اعلانات

robota
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: الخرطوم_السودان
المشاركات: 895
نشاط [ robota ]
قوة السمعة:
قديم 17-09-2011, 11:10 AM المشاركة 18   
افتراضي


السلام عليكم
اخى احب ان انبه الى نقطة وهى ان ما ذكره الاخ الكريم مايكروشيب2012 انما هو تقسيم للتاخير الزمنى فقط بدل ان ان يكون التاخير الزمنى 20 ثانية كاملة, يكون التاخير 1 ميلى ثانية 20000 مرة وبعد كل ملى ثانية تقوم بتفقد الحساس تقوم , المشكلة هنا فى التوقيت ؛ لنقم ببعض الحسابات :

الكود الذى يتم تنفيذه داخل حلقة ال while , هى تقريبا عبارة عن 40 ايعاز (instruction) بالاسمبلى قام بتوليدها الميكروسى . لنفترض اننا كنا نستخدم 4 ميغا هيرتز كريستالة مع بيك 16F877A , سيكون زمن ال instruction cycle هو 1 ميكروثانية وبافتراض ان كل الايعازات تحتاج فقط ل 1 instruction cycle ( الكثير من الايعازات يحتاج الى اكثر من instruction cycle) وبالتالى سيكون الزمن الكلى لتنفيذ الايعازات داخل حلقة ال while التى يتم تنفيذها 20000 مرة .
40*20000==800000 ميكرو اى ما يقارب ثانية كاملة !!
وبالتالى التاخير الكلى سيكون 21 ثانية !!

هذه الثانية قد تسبب الكثير من المشاكل فى معظم التطبيقات. مثال لذلك التطبيق الذى ذكرته انت فان اى تاخير زمنى زائد يؤثر على سرعة الاستيبر كما هو معلوم ,
هذا ما اردت التنبيه له ,اتمنى ان تكون فيها فائدة لك .
وبما انك قلت ليس عندك مشروع محدد ففى المشاركة القادمة ان شاء الله ساذكر لك بعض الملاحظات والافكار التى تساعدك على التغلب على هذه المشكلة .
بالتوفيق

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

eng_control
:: مهندس ::
تاريخ التسجيل: Oct 2009
المشاركات: 8
نشاط [ eng_control ]
قوة السمعة:
قديم 17-09-2011, 11:20 AM المشاركة 19   
افتراضي


شكر لكم
انا شخصيا استفدت من المشكله وحلها عمليا


ahmad abdullah
:: مهندس متميز ::
تاريخ التسجيل: Jun 2010
الدولة: لبنان-فلسطين
المشاركات: 584
نشاط [ ahmad abdullah ]
قوة السمعة:
قديم 17-09-2011, 02:27 PM المشاركة 20   
افتراضي


بارك الله فيك اخ روبوتا .. و انا انتظر النصائح والملاحظات التي ذكرتها ... شكرا لك


robota
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: الخرطوم_السودان
المشاركات: 895
نشاط [ robota ]
قوة السمعة:
قديم 18-09-2011, 06:03 AM المشاركة 21   
افتراضي


هذه مجموعة من النصائح والملاحظات ارجو ان تكون ذات فائدة:

1- استخدم التايمرات +المقاطعات الخاصة بها. لاحظ ان كل تايمر يمكن ان يؤدى مهمة خاصة به دون ان يتأثر ببقية التايمرات والبرنامج الرئيسى ,
فيكون عندك البرنامج الرئيسى الذى يعمل باستمرار + مهمة خاصة بكل تايمر ، فاذا كان هناك 3 تايمرات يكون مجموع المهام يساوى 4،،، TASK== 4.

2- استخدم المقاطعات بقدر الامكان , فمثلا اذا كنت تريد توصيل المايكرو مع منفذ السيريال -او اى communication - استخدم المقاطعة الخاصة بذلك .
فبدل كتابة
كود:
if(uart_ready==true)
استخدم المقاطعة الخاصة بال UART.
كذلك يمكن استخدام المقاطعات الخارجية (External interrupt) مثلا لقراءة حساس.

3- انتقل الى مايكرو ذو امكانيات اكبر لتوفير اكبر عدد من التايمرات والمقاطعات الاضافية عند الحاجة.

4- اذا كانت هناك بعض المهام اهم من بعض فيمكن استخدام ما يسمى بالاولوية فى المقاطعات وذلك عند التعارض بين المهام. فاذا كانت هناك اكثر من مهمة يجب تنفيذها فى نفس اللحظة . يمكن عمل اولوية فيتم تنفيذ المهمة الاهم ثم المهم ثم الاقل اهمية.
عائلة 18 فى البيك توفر هذه الخاصية كهاردوير وهذا افضل من ان تقوم ببرمجتها بنفسك كسوفت وير .

5- اذا كانت المهام اكثر من ان تقوم بها ميكرو واحدة بعد استخدام المقاطعات و فيمكن تقسيم المهام على اكثر من ميكرو والربط بينهما باى ويسلة من وسائل الاتصال المعروفة.

6- استخدم كريستالة باقصى تردد ممكن لتقليل زمن تنفيذ الايعازات , لكن انتبه فزيادة تردد الكريستالة قد يسبب الكثير المشاكل , منها زيادة استهلاك الطاقة مما يقلل من عمر البطارية او مصدر الطاقة , ايضا زيادة التردد تكون سبب فى جعل التطبيق عرضة للضجيج (noise) فالامر هنا يحتاج الى موازنة بين المزايا والمساوئ.

بالتوفيق


the lion
:: مهندس متواجد ::
تاريخ التسجيل: Feb 2009
الدولة: egypt
المشاركات: 117
نشاط [ the lion ]
قوة السمعة:
قديم 18-09-2011, 06:45 AM المشاركة 22   
افتراضي


ماشاء الله ..دائما متألق مهندس Robota
احب او اؤكد معلومه قالها مهندس Robota
عند تصميم اي انظمه معقده وصعبه عليك باستخدام نظام تشغيل وان كان ما تصممه
يعتمد بشكل كبير علي التحكم الوقتي(الزمني) فعليك ب RTOS
ولكن قبل دخولك الي عالم RTOS الواسع عليك اتقان الميكروكنترولر جيدا والانتربت
والطرفيات وكيفيه استعمالها كما يجب ان تقووم باتقان لغه السي بشكل جيد جدا
وعليك ان تنسي ما يسمي بالميكروسي وان تشرع باستخدام Embedded c
وعليك ان تتعلم misra c
وايضا autosar
قد تجد بعض ما اتحدث عنه مبهما قليلا ... لذلك اشرع باول خطوه وهي التعرف علي الميكروكنترولر بشكل جيد .. ومع تقدمك في العلم سيتضح امامك ماكان مبهما

موفق ان شاء الله


withagree
:: مهندس ::
تاريخ التسجيل: Aug 2010
المشاركات: 6
نشاط [ withagree ]
قوة السمعة:
قديم 18-09-2011, 07:35 AM المشاركة 23   
افتراضي


السلام عليكم و رحمة الله و بركاته
هذه فعلا مشكلة كبيرة قد نجدها فى بعض التطبيقات
و حل الاخ (ميكروشيب) سريع و يوفر الوقت و الجهد عند تنفيذ عدد اوامر قليلة 2 مثلا و فى التطبيقات التى لا تحتاج دقة متناهية فى الوقت
و لكن عند الحاجة لتنفيذ عدة اوامر و فى وقت دقيق يكون الامر فى غاية الصعوبة
شكرا جزيلا للاخ (روبوتا) على تقديم الحل لهذه المشكلة


ahmad abdullah
:: مهندس متميز ::
تاريخ التسجيل: Jun 2010
الدولة: لبنان-فلسطين
المشاركات: 584
نشاط [ ahmad abdullah ]
قوة السمعة:
قديم 18-09-2011, 10:52 AM المشاركة 24   
افتراضي


اشكر الاخ روبوتا ، فقط وصلتني الفكرة بوضوح 100% ... و الاخ the lion شكرا على التوضيح ... بارك الله فيكم ... بالفعل سوف اشرع بتعلم المقاطعات و التايمرات ... شكرا للجميع



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