السبت، 7 ديسمبر 2013

Basics of Serial Communication and USART

كما تكلمنا من قبل في الI/O Ports أن من المهم جدا لأي computer system  أن يمتلك عدة وسائل للتوصل وتبادل المعلومات مع العالم الخارجي بشكل مناسب لمتطلبات التطبيقات التي يتم تطويرها، لهذا يوجد داخل الmicrocontroller عدة طرفيات peripherals تقوم بهذه الوظيفة يعمل كل منها بشكل مختلف(USART, I2C, SPI, USB, CAN, LIN,...etc) ليتمكن المطور من تمكين الmicrocontroller من التواصل مع أنواع مختلفة من الchips وحتي الsystems الأخري.
في هذا الفيديو نتكلم بالتفصيل الUSART والSerial Communication.
نبدأ الشرح بالمفاهيم الأساسية للاتصال بين الmicrocontroller والعالم الخارجي:
- Serial Communication VS Parallel Communication
- Simplex, Half Duplex and Full Duplex 
- Synchronous VS Asynchronous communication
ونوضح مزايا وعيوب كل نوع ومتي يستخدم. ثم نبدأ في شرح طريقة عمل الUSART وكيف نتحكم فيه طبقاً للapplication المطلوب. ثم نشرح مثالاً مبسطاً باستخدام الUSART الموجود بالPIC 18F877A.


وأيضاً الslides موجودة بالأسفل لمن يفضل القراءة عن الدرس المصور:



Interfacing to the Analog World: the A/D

في هذا الفيديو نتكلم عن ال A/D واستخدامه للتواصل مع الphysical world الذي هو بطبيعته Analog. نبدأ بمراجعة الأساسيات عن الSignals: 
- Continous VS Discrete
- Analog VS Digital
ثم نتكلم بعدها عن وظيفة الsensors في التعبير عن الاشارة من الanalog domain للنظم الرقمية لتتمكن الاخيرة من معالجتها، ثم ننتقل إلي Architecture الA/D عامة، وبعدها نتكلم عن الmapping الذي يحدث بين قيم الاشارة الكهربية في الanalog domain إلي الdigital domain والأخطاء الناتجة من هذه العملية Quantization Error وأيضاً نشرح بشكل مبسط الDynamic Range للاشارة المراد معالجتها وكيف يساعدنا حسابه في اختيار الA/D المناسب للتطبيق المراد تطويره. بعدها نتكلم تحديداً عن الA/D الموجود داخل الPIC 16F877A.



وأيضاً الslides موجودة بالأسفل لمن يفضل القراءة عن الدرس المصور:



السبت، 30 نوفمبر 2013

Timers + 7-Seg Counter Example

من المهم جداً للmicrocontroller أن يكون عنده peripheral يعطيه indication عن الوقت الذي مر ليقوم بمهامه الدورية المفترض منه القيام بها Periodic tasks. ومهم أيضاً للأنظمة التي تقوم بجمع المعلومات من البيئة المحيطة بها (Data acquisition systems) وتنفذ algorithms محددة وفقاً للمعطي القادم من البيئة المحيطة، غالباً يكون تصميم هذه الأنظمة في التحكم أو الاتصالات اعتماداً علي أن الsampling time بقيمة معينة وأن الalgorithm سيتم تنفيذه والoutput سيخرج قبل انتهاء هذا الوقت ومطور الembedded system هو المسئول عن تحقيق هذه الفرضية. لهذا يجب علينا فهم الmicrocontroller عامة بشكل عام والtimers بشكل خاص لتنفيذ أنظمة التحكم والاتصالات بكفاءة وبأقل استهلاك ممكن للطاقة وبشكل يحقق الtiming requirements المطلوبة منها.

في هذا الفيديو نشرح الtimers بالتفصيل ثم نشرح طريقة عمل ال7-seg ونقدم مثالاً علي الtimers عبارة عن عداد يعد من 0 الي 99 ويغير قيمته كل ثانية.




وأيضاً الslides موجودة بالأسفل لمن يفضل القراءة عن الدرس المصور:




الثلاثاء، 26 نوفمبر 2013

3. Interrupts

من أهم الperipherals الموجودة داخل جميع الmicrocontrollers والتي لا غني عنها للdeveloper لكي يستطيع تصميم الembedded system ويحقق كل المتطلبات الزمنية timing requirments المظلوبة. أيضاً مهم جدا لاستغلال وقت الprocessor بكفاءة بدلا من الsoftware polling وأيضاً لمعرفة الوقت الذي مر علي حدث معين ةذلك مهم جداً للOS لتشغيل الscheduler الخاص به والتنقل بين الtasks. وبالرغم من هذه الأهمية الكبيرة فهو سهل جداً في الاستخدام كما سنري في هذا الفيديو من كورس الmicrocontroller.




وأيضاً الslides موجودة بالأسفل لمن يفضل القراءة عن الدرس المصور:



الجمعة، 22 نوفمبر 2013

2. IO Ports

تاني فيديو في الكورس بيتكلم عن الIO Ports وفي نفس الوقت عن الشكل العام للبرامج المكتوبة للmicrocontrollers بدون استخدام RTOS : اللي نقدر نسميها Baremetal programs في أبسط صورها. أيضاً أبدأ من هذا الجزء في كتابة برامج وتجربتها علي الProteus بشكل تفاعلي. أتمني أن تستفيدوا من هذا الفيديو وأرحب بأي تعليقات أو feedback.



وأيضاً الslides موجودة بالأسفل لمن يفضل القراءة عن الدرس المصور:




الأربعاء، 20 نوفمبر 2013

Introduction to ARM

شركة ARM هي شركة انجليزية تقوم بتصميم الARM Processor وتبيع تصميمه كIP للشركات التي تصمم SoC's لمختلف التطبيقات. تقوم ARM بتطوير الProcessor families المشتقة من الARM لتناسب كافة التطبيقات بداية من الmicrocontrollers وحتي الapplication processors المستخدمة في الsmartphones والtablets وأيضاً الservers.
الARM Processor يعتبر من أشهر الProcessors الموجودة في عدد كبير جدا من الMicrocontrollers والApplication processors علي حد سواء.
ما سبب الانتشار الكبير لاستخدام الARM Processors ؟
1- الARM architecture  تم تصميمه ليقدم اداء عالي جدا مع الحفاظ علي استهلاك منخفض للطاقة قدر الامكان، وهو ما جعله الاختيار الأمثل لنسبة كبيرة من الembedded applications.
2- توفر العديد من ال3rd party tools لهذا البروسيسور والمستخدمة في برمجته واكتشاف الأخطاء في برامجه (|Debugging)  من عدد كبير من الشركات بالاضافة الي توفر  GCC Compiler للARM architecture مفتوح المصدر ومجاني ويمكن للطلبة والجميع استخدامه دون أي تكلفة وأيضاً Debugger مفتوح المصدر (Open OCD) مما شجع العديد من الChip vendors لأن يبنوا الSoC's  التي يقدمونها للسوق حول Processor مقدم من شركة ARM لأنهم لن يضطروا لتطوير Compilers & Debuggers لهذة الشرائح الالكترونية الجديدة وفي نفس الوقت سيتمكن عملائهم من المحترفين والهواة علي حد سواء من تطوير تطبيقاتهم باستخدام الشرائح الجديدة طالما أنها ARM-based.
3- نتيجة لتبني عدد كبير من الVendors لأستخدام الARM processors في شرائحهم الالكترونية تفضل أيضاً الشركات التي تستخدم الmicrocontrollers والSoC's  لبناء تطبيقاتها وأنظمتها استخدام تلك المبنية بناء علي ال ARM processors لأن هكذا نقل البرنامج من العمل علي شريحة Vendor معين يستخدم الARM Processor للعمل علي شريحة Vendor اخر يستخدم أيضاً الARM processor سيكون أسهل كثيراً من نقل البرنامج لArchitecture مختلف تماماً --> Easier Porting وهو أمر في غاية الأهمية للشركات اذا أرادوا عمل Upgrade لمنتجاتهم باستخدام شرائح أعلي اداءً وأيضاً بعض الشركات توفر نفس الSW فقط للعديد من العملاء فاذا كان نقل هذه البرامج سهل ستقل التكلفة وسيتمكنوا من تقديم برامجهم للعملاء والانتهاء من مشاريعهم بشكل أسرع.
باختصار الARM الأن تحول لstandard processor مستخدم في أغلب الأجهزة المحمولة والأجهزة التي تتطلب اداء عالي مع استهلاك قدر منخفض من الطاقة. 
من المثير للاهتمام أيضاً اصدار بعض الARM-based microcontrollers المنخفضة التكلفة بشكل كبير جدا (أقل من 1\2 دولار!) والتي تقدم اداء قويا للapplications التي اعتادت الشركات تصميمها باستخدام ال 8-bit وال 16-bit  وأيضاً باستهلاك للطاقة ينافس هذه المعالجات الصغيرة وذلك بالتصنيع باستخدام 90nm  لتقليل الdynamic power، ربما الان يمكننا أن نتوقع انقراض المعالجات الأصغر من 32 bit بعد أعوام نتيجة لهذا التطور المتسارع في اداء وتقليل استهلاك الطاقة للمعالجات ذات ال32-bit. 
مثال: Kinetis Family from Freescale, LPC from NXP
ولهذه الأسباب يتجه العديد من أساتذة الجامعات لاستخدام معالجات ذات 32-bit في الكورسات الأولية عن الmicrocontroller  والembedded systems حيث لا معني من التدريس باستخدام المعالجات الأصغر بينما يقل استخدامها والاحتياج اليها.ولهذه الأسباب  ينبغي علينا أيضاً  تعلم الARM architecture جيداً واستخدام المعالجات التي تحتوي عليه بشكل جيد.
ولكل من يبدأ في هذا الاتجاه، هذه الtutorials مقدمة من ARM وهي مفيدة جداً ومبسطة أيضاً وسأنشر المزيد لاحقاً ان شاء الله.


السبت، 16 نوفمبر 2013

1. Introduction to Embedded Systems

ده أول فيديو من سلسلة فيديوهات تعليمية عن ال embedded systems  والmicrocontrollers وباستهدف فيها الناس اللي عندها خلفية بسيطة عن الmicroprocessors والC programming  . ان شاء الله سأستكمل السلسلة قريباً لشرح موضوعات أخري مهمة عن الmicroontrollers وأيضاً سأنشر فيديوهات وكورسات ودروس تعليمية في نفس الموضوع من مواقع\جامعات أخري.


وأيضاً الslides موجودة بالأسفل لمن يفضل القراءة عن الدرس المصور: