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

   

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 09-06-2011, 04:41 PM المشاركة 17   
افتراضي



13- من القائمة Chip اختار Compile to HEX (أو من شريط أدوات الترجمة ) عندئذ تفتح نافذة الترجمة وتبدأ ترجمة المشروع والتحقق من عدم وجود أى أخطاء . بمجرد اكتمال الترجمة تظهر رسالة بنجاح الترجمة







اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 09-06-2011, 04:44 PM المشاركة 18   
افتراضي


14- اختبار نتائج التطبيق ببرمجيات البروتيس















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

الصورة الرمزية noornader
noornader
:: عضو ذهبي ::
تاريخ التسجيل: Mar 2007
المشاركات: 608
نشاط [ noornader ]
قوة السمعة:
قديم 09-06-2011, 05:55 PM المشاركة 19   
افتراضي


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


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 09-06-2011, 11:27 PM المشاركة 20   
افتراضي


شرح غاية فى الروعة اخى الكريم

يساعد كل من ينظر الى فلوكود من بعيد ان يقترب منه
جزاك الله كل خير واعانك وبارك لك فى علمك
تحياتى

أخى الكريم

شكرا جزيلا لك

بارك الله فيك

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


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 09-06-2011, 11:29 PM المشاركة 21   
افتراضي


التجربة الثانية :
إدخال حلقة تحكم برمجية Software Control Loop لعمل وميض لليدات (حلقة التأخير)
تمهيد :
هذه التجرية إمتداد (توسعة) للتجربة السابقة وذلك بجعل الليدات المتصلة بأطراف المنفذ PORTC توصل وتفصل ON/OFF بفترات زمنية قدرها 1-second (وميض) .
فى هذه التجربة يتم توضيح مفهوم حلقة التحكم البرمجية بغرض الحفاظ على التنظيم والتدفق المنطقى لتنفيذ البرنامج . باقى التجرية سوف تقسم التطبيق المضمن embedded application إلى مربعات وظائف كما فى الشكل التالى :









بالرجوع إلى الشكل السابق : صندوق التهيئة Initialize يحتوى على جميع الأجهزة Hardware والبرمجيات Software (firmware) التى تهىء المحيطات peripherals والمتغيرات variables المستخدمة فى التطبيق .
لاحظ أن هذا الصندوق يستدعى مرة واحدة فقط خلال التنفيذ ( لوجوده خارج حلقة التكراتر الغير منتهية ).
بعد ذلك يتم استدعاء الصندوق Get_Inputs " الحصول على (قراءة) المداخل " . وهنا يتم تجديد (استرداد) حالة جميع المداخل سواء من أطراف الميكروكونترولر أو من مصادر السجلات الداخلية . بمجرد الحصول على المداخل يأتى صندوق القرار Decide والذى يحتوى على الأجهزة والبرمجيات التى سوف تصنع أى قرارات بناء على حالة المداخل . بمجرد أن يتم تحليل معلومات الدخل يأتى صندوق المخارج Do_Outputs فيخرج معلومات الخرج إما إلى أطراف منفذ مخارج الميكروكونترولر أو إلى سجلات داخلية بناء على صندوق القرار السابق . وأخيرا يأتى صندوق التوقيت Timing ليحدد معدل تنفيذ حلقة التحكم البرمجية .
فى هذه التجربة لن نحتاج إلى كل الوظائف لعمل وميض لليدات المتصلة بأطراف المنفذ PORTC . لن نحتاج إلى المداخل ومن ثم نزيل الصندوق Get_Inputs . يتم تنظيم صناديق الوظائف المتبقية كما يلى :
أ‌- التهيئة للبدء Initialize : سوف تقةم هذه الوظيفة بتهيئة متغير 8-bit باسم LED_Output والذى سوف يحتوى على القيمة المراد إخراجها إلى المنفذ PORTC . استخدام متغير بدلا من ببساطة تخصيص قيمة للمنفذ PORTC يسمح بمعالجة البيانات برمجيا فى متغير بدون إخراج البيانات إلى أطراف المداخل / المخارج حتى يتم تخصيصه فى النهاية للمنفذ PORTC فى الصندوق Do_Outputs .
ب‌- القرار Decide : هذه الوظيفة سوف تجرى عملية XOR المنطقية على البيانات الموجودة بالمتغير LED_Output فى كل مرة تكرار خلال حلقة التحكم . عندما تتم العملية المنطقية XOR بين القيمة ونفسها تكون النتيجة بصفر‘0’ :
1 XOR’d with 1 = 0,
0 XOR’d with 0 = 0
عندما تجرى العملية المنطقية XOR بين القيمة وقيمة مختافة عنها فإن النتيجة تكون بواحد ‘1’ :
1 XOR’d with 0 = 1
نتيجة لذلك فى كل مرة تتكرر فيها الحلقة تتحول فيها بيانات خانات المتغير LED_Output من الواحد إلى الصفر أو من الصفر إلى الواحد تبعا لقيمتها الحالية . تذكر أنه عندما تكون القيمة على طرف المخرج تساوى صفر تكون الليد فى حالة الفصل off وعندما تكون القيمة بواحد تتحول الليد إلى حالة توصيل on .
ت‌- وظيفة الإخراج Do_Ouputs : تقوم هذه الوظيفة بتخصيص القيمة الحالية للمتغير LED_Output لسجل المنفذ PORTC والذى بدوره يعمل على إضاءة الليدات المتصلة بالأطراف المرتبطة به .
ث‌- وظيفة التوقيت Timing : هذه الوظيفة تقوم بتنفيذ التأخير اللازم لوميض الليدات المتصلة بأطراف المنفذ PORTC على شكل توصيل وفصل ON/OFF على فترات زمنية قدرها واحد ثانية . عند تهيئة الميكروكونترولر على العمل بتردد ساعة 4MHz فسوف يتم عندئذ مليون تعليمة لكل ثانية . عند هذا المعدل فإن الحلقة البرمجية تحتاج إلى الإبطاء حتى تستطيع العين مشاهدة الوميض . يتم تحقيق ذلك باستخدام رمز التأخير فى المخطط الرئيسى للفلوكود .

الخطوات :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 10-06-2011, 05:18 PM المشاركة 22   
افتراضي


الخطوات :
1- إنشأ مشروع جديد كما فى التجربة السابقة واحفظه باسم GPIO_Lab2.fcf فى المسار
C:\Flowcode\GPIO_Lab2 على سبيل المثال .
2- فى البداية يتم إنشاء متغير باسم LED_Output من نوع البايت Byte(0-255) .









3- الخطوة التالية بناء حلقة التحكم . فى البداية يتم أنشاء صندوق تهيئة لتهيئة المتغيرLED_Output لقيمة معلومة . من الأشياء المهمة فى البرمجة عمليا هو البدء والتهيئة initialize للمتغيرات بقيمة معلومة . لتحقيق ذلك فى الفلوكود نستخدم رمز الحساب Calculation icon . انقر واسحب واسقط رمز الحساب من شريط أدوات الرموز فى منطقة العمل بين صندوق البداية وصندوق النهاية .








4- افتح نافذة خواص رمز صندوق الحساب . إنقر على الزر Variables... لفتح نافذة مدير المتغيرات وانقر على المتغير LED_Output لاختياره ثم انقر على الزر Use Variable "استخدم المتغير " لإضافته إلى نافذة خواص رمز الحساب . فى الخانة“Display name:” "الاسم المعروض" أدخل Initialize "تهيئة" ليدل على وظيفته .أضف كود حساب بغرض تخصيص القيمة الإبتدائية 0b11111111 ( جميع خانات المتغير LED_Output مرتفعة) كما فى الشكل التالى :










إنقر على الزر OK لغلق النافذة .
5- تحت صندوق التهيئة مباشرة إنقر واسحب واسقط رمز الحلقة Loop icon لإنشاء حلقة غير منتهية كما سبق ويصبح الشكل كما يلى :







6- بعد ذلك يتم إضافة رمز صندوق وظيفة القرار والذى سوف ينفذ العملية المنطقية XOR على خانات بيانات المتغير LED_Output . مرة أخرى نستخدم رمز الحساب . إنقر واسحب واسقط رمز حساب جديد فى منطقة العمل كما فى الخطوة رقم 3 ولكن هذه المرة داخل حلقة While . إفتح نافذة خواص الرمز (بالنقر المزدوج عليه) وفى الخانة “Display name:” إدخل Decide وأضف المتغير LED_Output كما سبق وأضف العملية المنطقية XOR كما فى الشكل التالى :












ينص الكود على " إجعل محتويات المتغير LED_Output مساوية لنتيجة العملية المنطقية XOR بين بيانات المتغير LED_Output و العدد 0b11111111 " .
إنقر على الزر OK لعلق النافذة .
7- الخطوة التالية إضافة صندوق لوظيفة الخرج Do_Outputs باستخدام رمز الخرج من شريط أدوات الرموز .إنقر واسحب واسقط رمز الخرج فى مخطط المسار بعد الصندوق Decide مباشرة . إفتح نافذة خواصه . فى الخانة “Display name:” أدخل Do_Outputs . تأكد من اختيار المنفذ PORTC وبكامل خاناته Entire Port . استخدم القائمة المنسدلة
Variable or value” لاختيار المتغير LED_Output كما فى الشكل التالى :









إنقر على الزر OK لغلق النافذة .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 10-06-2011, 05:22 PM المشاركة 23   
افتراضي


8- أخيرا يتم إضافة صندوق وظيفة التوقيت إلى مخطط المسار لإبطاء حلقة التحكم البرمجية لكى تنفذ على فترات زمنية قدرها 1 ثانية . لتحقيق ذلك نستخدم رمز التأخير Delay icon . إنقر واسحب واسقط رمز التأخير من شريط الأدوات فى مخطط المسار بعد صندوق الوظيفة Do_Outputs مباشرة .

9- إفتح نافذة الخواص لرمز التأخير بالنقر المزدوج عليه . فى الخانة “Display name:” أدخل Timing "التوقيت" وأدخل القيمة واحد ‘1’ بالخانة Value or Variable وتأكد من اختيار الثوانى Seconds كما فى الشكل التالى :











إنقر على الزر OK لغلق النافذة .
مخطط مسار المشروع يصبح كما فى الشكل التالى :







  • شغل المحاكاة . جميع الليدات المتصلة بأطراف المنفذ PORTC تومض ON/OFF فترات زمنية قدرها واحد ثانية .
  • ترجم المشروع لكى تحصل على ملف HEX لتحميله على الميكروكونترولر المستهدف .



الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 11-06-2011, 01:13 AM المشاركة 24   
افتراضي


التجربة الثالثة :
إستخدام الماكروهات فى إنشاء لإضاءة متحركة بالليدات Using Macros to Rotate LEDs :
تمهيد :
فى هذه التجربة سوف ندخل ماكرو (كود لبرنامج صغير يقوم بمهمة محددة) يستدعى بصندوق وظيفة القرار حيث يقوم بإزاحة shift الخانة العليا فى المتغير LED_Output من اليسار إلى اليمين (إزاحة جهة اليمين) فى كل مرة تتكرر فيها حلقة التحكم البرمجية وقبل التخصيص لسجل المنفذ PORTC للإخراج إلى الليدات فى صندوق الوظيفة Do_Outputs .





الماكروهات Macros هى أجزاء من كود والتى يمكن استخدامها وإعادة استخدامها فى المشروع . تسمح الماكروهات بالتعامل مع المهام المركبة (المعقدة) بسهولة عن طريق تقسيم البرنامج إلى مجموعات من الأكواد والتى يمكن استيرادها وتصديرها .
الماكرو المستدعى بصندوق وظيفة القرار فى البداية يتحقق من القيمة الابتدائية للمتغير LED_Output ليرى هل الخانة الأدنى أهمية LSB أى bit 0 فى الحالة المرتفعة ؟ إن كانت كذلك فهذا يعنى أنه فى الإزاحة التالية إلى اليمين تكون محتويات خانات المتغير LED_Output كلها أصفار . لتجنب هذه الحالة يقوم الماكرو بإعادة تهيئة المتغير LED_Output بجعل الخانة ذات الأهمية القصوى MSB أى bit 7 فى الحالة المرتفعة . وإن لم تكن كذلك أى إذا تواجدت أى حالة أخرى فإن محتويات المتغير LED_Output يتم إزاحتها بمقدار موقع خانة واحدة لجهة اليمين .

الخطوات :



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