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

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

الصورة الرمزية sobhe afana
sobhe afana
:: مهندس ::
تاريخ التسجيل: Mar 2010
الدولة: gaza
المشاركات: 26
نشاط [ sobhe afana ]
قوة السمعة:0
قديم 01-04-2010, 09:40 PM المشاركة 1   
افتراضي الى الخبراء /// كيف يمكن جعل ال pic تعمل عدة احداث في نفس الحظة Twitter FaceBook Google+



كيف يمكنني جعل المتحكم الدقيق يقوم بعدة احداث في نفس الحظة
مثل ان يكون على portb فلاشر وعلى بورت a مداخل وعلى بورت c شاشة عرض نقوم بالكتابة عليها وعمل ازاحة في نفس الوقت



الرجاااااااااااااااااااء التوضيح بالأمثلة

اعلانات

frank_hugo_1100
:: مهندس متواجد ::
تاريخ التسجيل: Jun 2007
المشاركات: 169
نشاط [ frank_hugo_1100 ]
قوة السمعة:0
قديم 01-04-2010, 10:29 PM المشاركة 2   
افتراضي


هناك دورات هنا كثيرة باكثر من لغه برمجه
اختار ما يناسبك وستجد شروحات كثيرة وامثله ستفيدك ان شاء الله

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

الصورة الرمزية صقر الافق
صقر الافق
:: مهندس جيد ::
تاريخ التسجيل: Dec 2009
الدولة: المغرب
المشاركات: 218
نشاط [ صقر الافق ]
قوة السمعة:0
قديم 01-04-2010, 10:38 PM المشاركة 3   
Arrow


نقطة مهمة ...أشكرك على طرحها..المرجو من الاخوة من لديه المعلومة أن يضيفها


ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:409
قديم 02-04-2010, 03:53 AM المشاركة 4   
افتراضي


كيف يمكنني جعل المتحكم الدقيق يقوم بعدة احداث في نفس الحظة
مثل ان يكون على portb فلاشر وعلى بورت a مداخل وعلى بورت c شاشة عرض نقوم بالكتابة عليها وعمل ازاحة في نفس الوقت
الرجاااااااااااااااااااء التوضيح بالأمثلة
لا يمكن أن تجعل ميكرو يفعل ذلك فتشغيل الفلاشر سيتم بكود من عدة أوامر كل أمر يأخذ زمن عدة نبضات clock و قراءة البورت الثانى أيضا
أما إن كان قصدك أن لا يلاحظ المستخدم أن هذه الأوامر تتم متتابعة فلأن السرعة التى يعمل بها عالية فلا يلاحظ المستخدم ذلك شرط ألا تجعل الميكرو يعلق فى مهمة حتى ينتهى منها مثلا الا يبقى مع اللوحة فى انتظار الكتابة ولكن يقرأ ما عليها فإن كان هناك شيء يحفظه و يحلله و غلآ ينتقل للجزء التالى


الصورة الرمزية -hassan-
-hassan-
:: مهندس متميز ::
تاريخ التسجيل: Aug 2009
الدولة: syria
المشاركات: 318
نشاط [ -hassan- ]
قوة السمعة:0
قديم 02-04-2010, 06:42 AM المشاركة 5   
افتراضي


لايستطيع المايكروكونترولر القيام باكثر من عمليه في الوقت نفسه

اما الFPGA يستطيع القيام باكثر من عملية بالوقت نفسه


الصورة الرمزية sheimy
sheimy
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: Egypt
المشاركات: 789
نشاط [ sheimy ]
قوة السمعة:99
قديم 02-04-2010, 08:32 AM المشاركة 6   
Thumbs up


نعم تسطيع ذلك
انا قمت بعمل ذلك ولكن باستخدام

CCS compiler
وهذا هو الكود الذى ينفذ اكثر من تاسك فى نفس الوقت
للعلم
الميكرو لا ينفذ الامور فى نفس الوقت

ولكن هناك مكتبة تسمى
RTOS
هى اللتى تنظم العملية حتى لايشعر بها المستخدم
فتبدوا انها تنفذ معا

وهذا هو الكود
كود:
#include "rtos.h"
#byte PORTB=6
#use delay (clock=4000000)
//
// Define which timer to use and minor_cycle for RTOS
// 
   #use rtos(timer=0, minor_cycle=10ms)
//
// Declare TASK 1 - called every 250ms
//

   #task(rate=250ms, max=10ms)
   void task_B0()
   {
       //PORTB=~PORTB;
    output_toggle(PIN_B0);    // Toggle RB0
   }
//
// Declare TASK 2 - called every 500ms
//
   #task(rate=500ms, max=10ms)
   void task_B1()
   {
      output_toggle(PIN_B1);                 // Toggle RB1
   }
//
// Declare TASK 3 - called every second
//
   #task(rate=1s, max=10ms)
   void task_B2()
   {
      output_toggle(PIN_B2);                 // Toggle RB2
   }
  
//
// Declare TASK 4 - called every 2 seconds
//
   #task(rate=2s, max=10ms)
   void task_B3()
   {
      output_toggle(PIN_B3);                 // Toggle RB3
   }
  
  
  
//
// Start of MAIN program
//
void main()
{
   set_tris_b(0);                           // Configure PORTB as outputs
   rtos_run();                               // Start RTOS
}
مهندس
احمد الشيمى
مصر
http://sheimymicro.freehostia.com/


hamzazayyad
:: مهندس متميز ::
تاريخ التسجيل: Aug 2005
الدولة: موزنبيق
المشاركات: 701
نشاط [ hamzazayyad ]
قوة السمعة:0
قديم 02-04-2010, 05:05 PM المشاركة 7   
افتراضي


السلام عليكم
يمكنك دلك باي لغه تريدها ولا تعتمد على compiler معين
الفكره هي تعتمد على السرعه للميكروكنتولر فقط
انت تريد متلا عمل فلشر بمعنى انك تريد اضاءه led واطفاءه متلا كل نصف تانيه
اي كل 500msec
لاحظ ان هده القيمه كبيره جدا بالنسبه للميكروكنترولر

فاليك حل بسيط
اولا ازا كنت لا تريد استخدام امر المقاطعه intrrupt
اعمل متلا امر for loop بحيت تخرج من البرنامج الرئيسي بعد كل نصف تانيه والقفز لاطفاء او اضاءه led
ومن تم تعود البرنامج الرئيسي

تانيا
وهو الحل الافضل
يمكنك تفعيل interrpt المقاطعه اي استخدام timer1
وعند انقضاء نصف تانيه يخرج من البرنامج الرئيسي وينفد برنامج المقاطعه الدي هو اطفاء اليلد led ومن تم يعود للبرنامج الرئيسي
لاحط ان عمليه القفز لبرنامج المقاطعه الدي هو لاطفاء وتشغيل led لن ياخد وقت طويل فلو كانت الكستاله لديك 4mhz
وكان متلا عدد الاوامر 1000 (بلغه الاسمبلي )امر فيستغرق حوالي 1msec
( اي سترى وكان العمليتتين تعملان بنفس الوقت)


الصورة الرمزية sheimy
sheimy
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: Egypt
المشاركات: 789
نشاط [ sheimy ]
قوة السمعة:99
قديم 02-04-2010, 08:53 PM المشاركة 8   
افتراضي


تمام جدا
وهذا ما تفعله المكتبة
RTOS

فهى تستخدم التايمرز لتظبيط هذا الجزء

وللعلم هناك مكتبة للميكرو سى تسمى

OSA RTOS

وهذا هو شكل المحاكاة باستخدام بروتوس و CCS




إضافة رد

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

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

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


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

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