أنت هنا:إصنعها»العقول الإلكترونية»المتحكم AVR ـ»البرمجة في bascom-AVR ـ»برمجة الأنظمة المدمجة ببيئة bascom avr – التقديم 2
×

تحذير

JUser: :_load: غير قادر على استدعاء المستخدم برقم التعريف: 16448

برمجة الأنظمة المدمجة ببيئة bascom avr – التقديم 2

كتبه البرمجة في bascom-AVR ـ 21089 2
آخر تعديل في الجمعة, 11 كانون1/ديسمبر 2020 17:56
برمجة الأنظمة المدمجة ببيئة BASCOM-AVR – تقديم 2
قيم الموضوع
(11 أصوات)

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


تسميات

إنتبه إلى أنه قد اعتمدنا التسميات التالية خلال هذه السلسلة:

  • متحكم (مصغر) عوض Microcontroller

  • زوج عوض bit

  • ثمن عوض byte بالإنجليزية و octet بالفرنسية

تجد جميع مصطلحات مقالات هذه السلسلة في قاموس المصطلحات التابع لها.


ملفات المقال

يمكنك تحميل ما يلي للاستفاذة أكثر من المقال:

Session_02_PPTX

إذ لم تكن تملك لوحة إلكترونية متميزة تستطيع تنفيذ برامج هذه السلسلة من الدروس عليها، فيمكنك حينئذ صنع اللوحة الإلكترونية iPhoenix-AVR إصدار 2012 التي صممتها بنفسي، وإليك الملفات الضرورية لصنعها:

iPhoenix-AVR 2012.zip

AVR_USBASP_Programmer.zip


محاضرة المقال

{jumi [*3]} 


تمهيد

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

 

للاستفادة من مهارات مطوري البرمجيات الحاسوبية، والحد من طابع تعقيدات برمجة الكيان الصلب بلغة التجميع، قامت شركات EDA بتطوير بيئات وأدوات برمجية تستخدم لغات عالية المستوى مثل اللغة C++/C القياسية أو لغة البيزك (Basic) أو لغة باسكال (Pascal) لتطوير وبرمجة الأنظمة المدمجة. هذه الأدوات البرمجية الجديدة تقوم على تحويل البرنامج من لغة عالية المستوى إلى برنامج بلغة التجميع منخفض المستوى وتدعى في أغلب الأحيان بـ Mappers أو Compilers. تمتلك هذه الأدوات المقدرة على تطوير وفحص وتتبع أخطاء البرامج التي هي مشابهة جدا لبيئات تطوير البرمجيات.

 

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

 

لقد انتاب المجتمع الهندسي في البدء بعضُ الشكوك في كون هذه الطريقة الجديدة قادرة على التفوق على البرامج المكتوبة يدوياً بلغة التجميع، ولكن سرعان ما ثبت أن البرامج المكتوبة بلغة Fortran قادرةٌ على العمل تقريباً بنفس فعالية تلك المكتوبة بلغة التجميع؛ وفي نفس الوقت، استطاعت لغة Fortran تقليص عدد التعليمات البرمجية المستخدمة لبناء برنامج ما بحوالي عشرين مرة، وهذا ما جعلها تعتبر أولى لغات البرمجة عالية المستوى، ولم يكن من المفاجئ أن لغة Fortran قد حصلت بسرعة كبيرة على رضى وقبول المجتمع العلمي في ذاك الوقت وحتى وقت متأخر. بعد نصف قرن، ما زلنا نستطيع استخلاص الكثير من العِبَر الهامة من هذه القصة وهي:

  • لأكثر من خمسين عاماً، حاول المهندسون ابتكار طرق أسهل وأسرع لحل المشكلات باستخدام البرمجة الحاسوبية.

  • لغات البرمجة التي اختارها المهندسون لتلبية متطلباتهم اتجهت نحو مستويات أعلى.


تصنيف لغات برمجة الأنظمة المدمجة

تصنف لغات برمجة الأنظمة المدمجة وفق أربع مجموعات رئيسية، وهي:

  1. لغات البرمجة منخفضة المستوى - التجميع. مثل: NASM و TASM و MASM وFASM ...

  2. لغات البرمجة عالية المستوى - الوظيفية، مثل: Basic و Pascal و C و Fortran...

  3. لغات البرمجة عالية المستوى - الإجرائية، مثل: C++/Embedded C...

  4. لغات البرمجة الرسومية، مثل: LabVIEW.


نحو لغات برمجية للأنظمة المدمجة عالية المستوى

إن الازدياد المتسارع في تعقيد بنية شرائح الدارات المتكاملة وفقاً لقانون مور “Moore” يؤدي إلى نشوء فجوة كبيرة بين عدد الكتل المنطقية التي يمكن إنشاؤها على مساحة محددة من شريحة سيليكونية وبين إمكانية مهندسي التصميم على استثمار هذه الشريحة المتكاملة برمجياً، وهذا ما يدعى الآن بفجوة التصميم”Design Gap”. الشكل1 يبين العلاقة بين الإنتاجية التصميمية لمهندسي تصميم الشرائح المتكاملة وبين عدد الترانزستورات التي يمكن أن توضع على شريحة سيليكونية.

الشكل 1: العلاقة بين ازدياد تعقيد الدارات المتكاملة ومقدرة المصممين على تطويرها

 
إن نشوء هذه الفجوة يقود إلى الحاجة في البحث عن طرائق ووسائل لبرمجة الكيان الصلب بمستويات برمجية أعلى وهو ما يعرف اصطلاحاً بـالتجريد عالي المستوى ”high-level abstraction”. على الرغم من أن التصميم الذي يمكن إنشاؤه من مستوى برمجي أعلى قد يكون أقل كفاءة مقارنةً مع التصميم الذي يتم إنشاؤه مباشرة باستخدام لغات التجميع، إلا أن هذا الأمر أقل أهمية بكثير من مسائل التعقيد البرمجي والجهود الكبيرة والزمن المصروف للبرمجة بلغات التجميع. على كل حال، فإنه مؤخراً تمّ بذل العديد من الجهود تهدف لإيجاد أدوات برمجية بلغات عالية المستوى تهدف إلى الوصول لتصميم أمثل.

 

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


معايير اختيار الحلول التكنلوجية

كما أن هناك عوامل مؤثرة في تصميم الأنظمة المدمجة (الفقرة 1-5)، فإنه في مشاريع الأنظمة المدمجة عموماً هناك معايير أساسية تعتمدها الشركات في اختيار الحلول التكنلوجية والعناصر الأساسية في المنتجات الإلكترونية – من أهم العناصر الأساسية هي الشريحة المدمجة؛ متحكم مصغر، معالج مصغر، معالج إشارة رقمية (DSP)، مصفوفة بوابات منطقية قابلة للبرمجة حقلياً، دارات متكاملة ذات تطبيقات خاصة (ASIC) – في منتجاتها والتي منها: تكلفة الشريحة، مستوى المرونة في بيئة التطوير، مستوى الدعم الفني من قبل الشركة المصنعة، مستوى الشركة المصنعة تجارياً.

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


معايير اختيار الشركات المصنعة

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

  • الدعم الفني والتقني.

  • الريادة في التكنولوجيا.

  • توفير الأدوات والحلول البرمجية.

  • تطوير أجيال المنتجات بشكل متجدد.

  • تزويد منتجات بمواصفات ومزايا إبداعية.

  • توفر العديد من عائلات الشرائح بميزات عديدة.

  • دعم وتصنيع عائلات الشرائح لفترات طويلة جداً.

  • تزويد الوحدات البرمجية المتوافقة مع الحلول البرمجية.


عوامل اختيار الشريحة المناسبة للتطبيق

بما أن الشركات المصنعة الرائدة توفر العديد من العائلات والشرائح التي تتفاوت في ميزتها وأدائها وسعرها، فإنه من الضروري اختيار الشريحة المناسبة للتطبيق من خلال تحديد العوامل المطلوبة وهي:

  • السعر.

  • الحجم.

  • الطاقة.

  • السرعة.

  • مصادر الذاكرة.

  • عدد أقطاب الدخل والخرج.

  • ميزات أدوات التصميم وانتشارها.

  • مصادر إدارة تردد عمل الشريحة.

  • المصادر المنطقية الأساسية على الشريحة.

  • شكل الشريحة الفيزيائي (Packaging).

  • واجهة الربط مع المحيطيات (Interface requirements).

  • إمكانية وجود بدائل للشريحة (Common footprint component migration options).

 

خلال دراستنا هذه وقع الاختيار على شركة ATMEL الرائدة في مجال تصنيع المتحكمات المصغرة حيث تعتبر من أقوى الشركات عالمياً في مجال تطوير وتصنيع متحكمات 8bit وفقاً لتقرير Gartner، كما أن تنتج طيفاً واسعاً من متحكمات 8bit بأداء عالٍ وميزات كبيرة جداً وكل ذلك بسعر منخفض. أضف إلى ذلك انتشارها الواسع جداً (حتى في أسواقنا المحلية المتواضعة) وكثرة المصادر التعليمية المتوفرة على الشبكة..


لغات برمجة المتحكمات المصغرة

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

 

تـختلف اللغات المستخدمة في كتابة برنامج المتحكم وتتفاوت في مقدار صعوبتها وتعقيدها, وسابقاً كانت تتم برمجة المتحكمات بشكل أساسي باستخدام لغة التجميع، حيث يمتلك كل نوع من المتحكمات لغة تجميع خاصة به تتعلق بنواة المعالج, حتى أن متحكمات نفس الشركة تـختلف في لغة التجميع الخاصة بها من نوعٍ إلى آخر؛ فمتحكمات شركة ATMEL – على سبيل المثال – ذات نواة AT89xxxx تمتلك لغة تجميع تـختلف عن لغة التجميع الخاصة بنواة متحكمات AT90xxxx. ومن المعروف أن لغة التجميع لغة اختصاصية وغير مرنة، كما أنها صعبة التدقيق والمراجعة والتطوير... فكتابة برنامج ما باستخدام لغة التجميع سيـحتاج إلى وقت طويل وخبرة كبيرة من قبل المبرمج.

 

مع التطور التكنولوجي الكبير في صناعة الأنظمة المدمجة عموماً والمتحكمات المصغرة خصوصاً تنبهت الشركات إلى أن استمرار استخدام لغة التجميع يـحد من سهولة استخدام هذه المتحكمات، وبالتالي تبقى محصورة ضمن فئة معينة من المهندسين المختصين، لذلك تم البحث عن طرق أسهل لبرمجة المتحكمات، مما أدى إلى ظهور لغات البرمجة عالية المستوى مثل: لغة C++/C ولغة BASIC ولغة PASCAL وغيرها... في هذه اللغات يقوم المبرمج بكتابة البرنامج بإحدى لغات البرمجة عالية المستوى ويقوم مترجم خاص (Compiler) بتحويل هذا البرنامج إلى البرنامج المقابل له في لغة التجميع الخاصة بالمتحكم المصغر, وبالتالي لا حاجة إلى تعلم لغة التجميع كلما احتاج المبرمج استخدام عائلة جديدة من المتحكمات. من أشهر مترجمات متحكمات AVR نذكر:

 

اسم المترجم

اللغة

موقع الشركة

BASCOM-AVR

Basic

http://www.mcselec.com

AVR-Studio

C/C++

http://www.atmel.com

CodeVisionAVR

C

http://www.hpinfotech.ro

Win-AVR

C++

http://winavr.sourceforge.net

ImageCraft ICC-AVR

C

http://www.imagecraft.com

MikroPascal For AVR

Pascal

http://www.mikroe.com

MikroBasic For AVR

Basic

http://www.mikroe.com

وبالتالي وباستخدام لغات برمجة عالية المستوى انكسر حاجز الاختصاص التي تفرضه لغة التجميع وأصبحت المتحكمات في متناول الجميع ممن لديهم خبرة متواضعة في لغات البرمجة ومعرفة كافية في بنية المتحكمات, كما أن وجود المكتبات المختلفة في هذه المترجمات جعلت عملية برمجة المتحكمات عملية مـمتعة وسلسة ولا تحتاج إلى الكثير من الوقت في دراسة متطلبات الكيان الصلب. فيما يلي مقارنة سريعة لبعض الميزات الأساسية للّغات عالية المستوى مع ما يقابلها من اللغات المنخفضة المستوى.

 

برامج مكتوبة بلغات برمجة منخفضة المستوى

(Assembly)

برامج مكتوبة بلغات برمجة عالية المستوى

(Basic, Pascal, C)

  • تحتاج إلى وقت كبير لتعلمها

  • كتابتها تـحتاج إلى خبرة كبيرة وأشخاص مختصين

  • صعوبة في كتابة البرامج وتنقيحها ومراجعتها وتطويرها

  • برامج طويلة تتألف من عدد كبير جداً من التعليمات

  • برامج صعبة الكتابة القراءة والفهم

  • تستهلك مساحة أصغر من ذاكرة البرنامج

  • عدد محدود جداً من التعليمات الأساسية

  • يمكن تعلمها بوقت قصير جداً

  • كتابتها لا تـحتاج إلى تلك الخبرة وهي متاحة للجميع

  • سلاسة في كتابة البرامج وتنقيحها وتطويرها

  • برامج أقصر وذات تعليمات أقل وأبسط

  • برامج سهلة الكتابة وواضحة القراءة وتفهم بسهولة

  • تستهلك مساحة أكبر من ذاكرة البرنامج

  • عدد كبير جداً من التعليمات الوظيفية تسهل البرمجة


حول منهجية تنفيذ التجارب العملية

في هذا المنهاج العملي التطبيقي سوف نعالج بشكل خاص برمجة المتحكمات المصغرة من العائلة AVR باستخدام لغة عالية المستوى وهي لغة BASCI والتي تعتمدها بيئة التطوير (IDE)هBascom-AVR. كذلك سنقوم بمحاكاة جميع الأمثلة والتطبيقات في بيئة المحاكاة LabCenter Proteus الذي يعد من أقوى البرامج التي تحاكي عمل المعالجات. سنقوم بعدها بتنفيذ التجارب عملياً على لوحة التطوير mini-Phoenix المعدة خصيصاً لهذا المختبر والتي تم تصميمها بحيث ترتقي بالمتعلم من مستوى مبتدئ إلى مستوى متقدم متضمنةً أكثر من 25 تجربة تشمل جميع الوظائف الأساسية للمتحكمات بالإضافة إلى وظائف متقدمة أخرى.


بيئة المحاكاة

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

الشكل 2: استخدام بيئة المحاكاة PROTEUS لتحليل دارة عداد تصاعدي تنازلي قابل للضبط

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

 


بيئة التطوير Bascom-AVR

تعتبر بيئة التطوير Bascom-AVR من أشهر وأقوى بيئات التطوير البرمجية التي تستخدم لغة عالية المستوى وهي لغة BASCI لبرمجة المتحكمات المصغرة من العائلة AVR. تمتلك هذه البيئة واجهات تطبيقات متعددة وهي:

  1. الواجهة البرمجية الرئيسية: وهي محرر التعليمات والأوامر البرمجية.

  1. واجهة المبرمجة: وفيها يتم برمجة المعالج بعد إجراء عملية توليد الملف البرمجي بالأمر Compile.

  1. واجهة الربط البيني: وفيها يتم عرض المعلومات المرسلة والمتلقاة بين المعالج والحاسب بهدف مراقبة بارامترات النظام بشكل آني.

  1. واجهة المحاكاة: وفيها يتم تشغيل البرنامج خطوة_خطوة ومراقبة حالة المسجلات الداخلية الذواكر.

  1. بالإضافة إلى الواجهات الأربعة يملك برنامج Bascom-AVR أدوات مساعدة وهي:

 

أداة تحويل الصور
(Graphic Converter)
:

تستخدم لتحويل امتداد الصور المراد إظهارها على شاشة الإظهار الرسومية GLCD إلى الصيغة bgf.*

أداة تصميم المحارف
(LCD Designer)
:

تستخدم لتصميم المحارف التي لا توجد على لوحة مفاتيح الحاسب من أجل إظهارها على شاشة الإظهار الكريستالية.

أداة مترجم الملفات المتعددة
(Patch Compiler)
:

تستخدم لتوليد الملف البرمجي لعدة ملفات في آن واحد.

أدارة إدارة المكتبات
(LIB Manager)
:

تستخدم لإدارة مكتبات البرنامج (حذف \ إضافة).

أداة مدير الإضافات

(Plugin Manager):

تستخدم لإضافة/حذف الأدوات والموديولات الخارجية.

أداة محلل حالة المكدس
(Stack Analyzer)
:

تستخدم لتحديد حجم المكدس المناسب للتطبيق.

أداة ملفات الوثائق الفنية
(PDF Update)
:

تقوم هذه الأداة بالاتصال مع موقع شركة ATMEL وإحضار آخر تحديث للوثائق الفنية للمعالجات المستخدمة من العائلة AVR.

أداة التحكم بالبروتوكول TCP/IP:

تستخدم للتحكم ومراقبة المعلومات الموجودة على خط المعطيات.

 

تتميز بيشة التطوير Bascom-AVR بمكتباتها الوظيفية القوية التي تمكن المطور أو المصمم من بناء نظام معقد بزمن قصير نسبياً مقارنة بباقي بيئات التطوير التي تستخدم اللغة C++/C.. الشكل3 يبين تصنيف أنواع التعليمات في البيئة Bascom-AVR حسب وظيفتها.

الشكل 3: تصنيف أنواع التعليمات في البيئة Bascom-AVR حسب وظيفتها

 


لوحة التطوير المخبرية

لقد تم تصميم هذه اللوحة خصيصاً بحيث تخدم المبتدئ والمتقدم في تعلم برمجة المتحكمات المصغرة من العائلة AVR، حيث تضم أكثر من 25 وحدة محيطية على نفس اللوحة لتغطي ما يقارب 50 تجربة أساسية، وقد تصل إلى أكثر من 75 تجربة بالدمج بين الوظائف المحيطية على اللوحة، بالإضافة إلى إمكانية ربط وحدات خارجية عن طريق وحدات التوسعة المحيطية الموزعة على أطراف اللوحة.

 

يمكن الرجوع إلى الملف “mini-Phoenix-AVR Manual.pdf” من أجل معرفة تفاصيل عن لوحة التطوير (طريقة تجميع اللوحة وميزاتها ومخططاتها التصميمية ...).

الشكل 4: لوحة التطوير mini-Phoenix-AVR

 


مقدمة إلى متحكمات AVR

تعتبر متحكمات AVR إحدى منتجات شركة ATMEL الأمريكية، وقد تم تطويرها في مختبرات الشركة الموجودة في النرويج في أواخر التسعينيات، وتعتبر من أكثر المتحكمات المصغرة انتشاراً لما تتميز به من العديد من الميزات التي جعلتها مناسبة لكثير من التطبيقات.

 

لقد أحدثت شركة ATMEL ثورة في عالم المتحكمات المصغرة بإنتاجها لمتحكمات AVR التي تفوّقت بشكلٍ كبير على العديد من نظيراتها من متحكمات 8bit، حيث تم استخدام البنية RISC التي تتميز بالأداء العالي وبالطاقة المنخفضة، واحتوت قائمة التعليمات في متحكمات AVR على 132 تعليمة - يُنفذ معظمها خلال دورة آلة واحدة (1-cycle) – وبالتالي عند وصل هزاز 16MHz إلى المتحكم فإنه سينفذ حوالي 16MIPS (مليون تعليمة في الثانية الواحدة)، كما زُوّدت هذه المتحكمات بذاكرة برنامج قابلة للمسح والكتابة لأكثر من 100000 مرة، وضمنت شركة ATMEL أن يبقى البرنامج داخل المتحكم يعمل بشكل صحيح حتى 25 سنة، كما تملك متحكمات AVR وحدات محيطية مدمجة متعددة الوظائف الأمر الذي يوفر استخدام دارات متكاملة خارجية، كذلك زُوّدت معظم متحكمات AVR بمبدل تشابهي رقمي متعدد الأقنية مدمج داخل المتحكم، إضافةً إلى إمكانية برمجة ضمنية للمتحكم أي دون فصله عن النظام (In-System Programming)، وكذلك تتوفر في الأسواق بكميات كبيرة وسعرها منخفض مقارنة مع ميزاتها.

 


عائلات متحكمات AVR

تقسم عائلات متحكمات AVR ذات عرض ناقل 8bit إلى أربع مجموعات أساسية، إضافة إلى مجموعات أخرى ذات وظائف خاصة، تمتلك جميعها نفس البنية وتـختلف عن بعضها البعض بالميزات والخصائص الموجودة في كل نوع:

 

العائلة AT90Sxxxx: العائلة الكلاسيكية التي كان منها الانطلاقة الأولى لمتحكمات AVR في عام 1997 وقد توقف تصنيعها.

 

العائلة ATtinyxx: وهي العائلة الصغرى لمتحكمات AVR المطورة والتي ظهرت في أوائل عام 2000، وهي تملك عدد أقطاب قليل (6 إلى 32 قطبا) وحجم ذاكرة برنامج صغير نسبياً (0.5KB إلى16KB) وموارد محدودة على الشريحة الأمر الذي يجعل سعرها منخفض مقارنة مع متحكمات ATmega.

الشكل 5: توزع متحكمات العائلة ATinyxxx وفقاً لعدد الأقطاب وحجم ذاكرة البرنامج

 

العائلة ATmegaxxxx: وهي العائلة الكبرى لمتحكمات AVR المطورة والتي ظهرت في أوائل عام 2000 وهي تملك عدد أقطاب كبير (من 28 إلى 100 قطبا) وحجم ذاكرة برنامج كبير نسبياً (من 8 إلى 256KB) وموارد متنوعة على الشريحة.

الشكل 6: توزع متحكمات العائلة ATmega وفقاً لعدد الأقطاب وحجم ذاكرة البرنامج

 

العائلة ATxmegaxxxx: وهي العائلة المتطورة والأحدث لمتحكمات AVR وقد ظهرت في عام 2008 وهي تملك ميزات متنوعة وسعة معالجة كبيرة نسبياً وتعمل بترددات أعلى من سابقاتها (32MHz)... كما أنها تملك عدد أقطاب كبير (من 44 إلى 100 قطبا) وحجم ذاكرة برنامج كبيرة (من 16KB إلى 384KB) إضافة إلى ميزات جديدة لا تتوفر في سابقاتها.

الشكل 7: توزع متحكمات العائلة ATxmega وفقاً لعدد الأقطاب وحجم ذاكرة البرنامج

 
إضافةً إلى العائلات الأربعة الأساسية يوجد عائلات أخرى ذات وظائف وتطبيقات خاصة موضحة في الجدول أدناه.

 

العائلة

الاستخدام

Automotive AVR

تستخدم في أنظمة التحكم بالمحركات وأنظمة التحكم بالسيارات

Z-Link AVR

تستخدم في بروتوكولات الإرسال الراديوي اللاسلكي في

IEEE 802.15.4 / ZigBee

Battery Management AVR

تستخدم للتحكم في شحن المدخرات ومراقبتها وهي تعمل في جهود مرتفعة من 1.8 إلى25 فولط

CAN AVR

تستخدم للتحكم بالبروتوكول CAN وتدعم:

CANopen، DeviceNet، OSEK

LCD AVR

تستخدم كمعالجات تشغيل أساسية لشاشات الإظهار الكريستالية LCD

Lighting AVR

تستخدم في تطبيقات التحكم الاستطاعية بسرعة المحركات وشدة الإضاءة

USB AVR

تستخدم كموزع أو مخدم للبروتوكول USB

 

الشكل 8 بين ملخصاً للعائلات والخصائص الأساسية لكل منها...

الشكل 8: الخصائص العامة لعائلات متحكمات AVR


مقارنة بين أشهر عائلات المتحكمات المصغرة

الجدول التالي يبين مقارنة بين أشهر عائلات متحكمات 8bit.

 

الميزة / العائلة

AVR
(Atmel)

8051
(Intel)

PIC
(Microchip)

HC11
(Motorola)

البنية الأساسية

Harvard

Von-Neumann

Harvard

Von-Neumann

تقنية النواة

RISC

CISC

RISC

CISC

تردد التشغيل القصوي

20MHz

24MHz

20MHz

8MHz

نبضة لكل تعليمة

1

12

4

8

تعليمة في الثانية

16MIPS

2MIPS

5MIPS

1MIPS

عدد التعليمات

132

215

32

200

حجم ذاكرة البرنامج

256KB

32KB

64KB

32KB

عرض ناقل التعليمات

16bit

8bit

12-bit

8bit

 

من خلال قراءة الجدول نستنتج أفضلية متحكمات AVR للأسباب التالية:

  1. متحكمات AVR أسرع من متحكمات PIC بأربع مرات، وأسرع من متحكمات 8051 بثمانية مرات.

  2. متحكمات AVR تملك ذاكرة برنامج ذات حجم أكبر من باقي العائلات مما يمكن من كتابة برامج ضخمة.

  3. متحكمات AVR مبنية بالاعتماد على تقنية Harvard التي تقوم على الفصل بين ذاكرة البيانات وذاكرة التعليمات بحيث يكون لكل من الذاكرتين خطوط عنونة منفصلة (عناوين فيزيائية مستقلة) وكذلك الأمر بالنسبة لخطوط التحكم وممر المعطيات، الأمر الذي يمكن من أن تحدث عملية قراءة التعليمات مع قراءة أو كتابة البيانات في نفس اللحظة، وكذلك يتيح لطول كلمة البيانات أن يكون مختلفاً عن طول كلمة التعليمات بسبب عدم اشتراك البيانات والتعليمات في نفس الذاكرة. بالمقارنة مع البنية von-Neumann فإن هذه الأخيرة منظمة بحيث لا يوجد فصل بين ذاكرة التعليمات وذاكرة البيانات ولهما نفس خطوط العنونة ونفس ممر المعطيات، بالتالي فإن الفائدتين اللتان تم ذكرهما سابقاً لا توفرهما البنية von-Neumann مما يجعل بنية Harvard ذات أداء أعلى من حيث سرعة المعالجة وتنفيذ البرنامج.

  4. متحكمات AVR تملك نواة من التقنية RISC التي تمكن من إنجاز تعليمة خلال دورة هزاز واحدة بخلاف التقنية CISC التي تحتاج عدة دورات هزاز لتنفيذ تعليمة واحدة. كذلك فإن البنية RISC أقل تكلفة من البنية CISC.

 


قراءة تكويد معالجات العائلة AVR

بشكل عام تزود الشرائح المتكاملة والعناصر الإلكترونية برقم أود تكويد خاص بكل صنف. في هذه الفقرة سنشرح تكويد شركة Atmel لمعالجات العائلة AVR بحيث يمكنننا معرفة الكثير عن الشريحة من خلال التكويد الموجود على غلافها الخارجي. لنأخذ على سبيل المثال المتحكم المصغر ATmega8 الموضح على الشكل9 نلاحظ أن الغلاف يحوي على رمز الشركة المصنعة (Atmel) ورقم تصنيع تسلسلي (0619I) خاص برقم الدفعة وبيئة عمل المعالج ومن ثم تكويد المعالج وهو: ATmegaa8-16PU.

الشكل9: المتحكم المصغر ATmegaa8-16PU


بالنسبة لرمز بيئة عمل المعالج فهو يستخدم للدلالة على نوع التطبيق الذي يمكن أن يستخدم المعالج لأجله، فإما أن يكون تجارياً
(C) أو صناعياً (I) أو عسكرياً (M) والاختلاف في ذلك هو من حيث قدرة المعالج على تحمل درجات الحرارة والضجيج العالي:

 

تطبيقات عسكرية

تطبيقات صناعية

تطبيقات تجارية

M (Martial)

I (Industrial)

C (Commercial)

 

بالنسبة لكود المعالج فهو على الشكل التالي:

الرمز

الدلالة

AT

اختصار لاسم الشركة المصنعة ATMEL.

Mega

العائلة التي ينتمي إليها هذا المعالج (90S أو Tiny أو Mega أو Xmega).

8

هذا الرقم يعبر عن حجم ذاكرة البرنامج بالكيلوبايت (8، 16، 32، 64، 128، 256 KB).

L

في حال أن الكود يملك حرف L فهذا يعني أنه قابل على العمل بجهود منخفضة (2.7V إلى 5.5V) وبدون هذا الحرف فهذا يعني أن المعالج يعمل عند جهود (4.5V إلى 5.5V).

8

تردد العمل القصوي للمعالج (8، 16، 20، 24، 36).

PU

شكل غلاف الشريحة، فإما أن تكون من نوع يتم لحامه على الطبقة السفلية للدارة المطبوعة ورمزه PU (PDIP)i، أو من النوع السطحي الذي يتم لحامه على الطبقة العلوية للدارة المطبوعة ورمزه AU (TQFP)i.

 

الشكل 10: نموذج من متحكمات AVR بغلاف خارجي من النوع PDIP والنوع TQFP

 

من الجدير ذكره أن شركة Atmel قامت بدمج المعالج ذو اللاحقة ATmegaxxxL-8xx (يعمل عند جهد منخفض 2.7V وتردد منخفض8MHz ) مع المعالج ATmegaxxx-16xx (يعمل عند جهد 4.5V وتردد حتى 16MHz) في معالج جديد متطور ATmegaxxxA-xx يجمع خصائص كلا المعالجين؛ هذا الأخير يعمل عند جهود من 5V5 – 2V5 وتردد 1MHz – 16MHz وقد صدر هذا الإصدار من المتحكمات في عام 2010 ليحل محل الإصدارات القديمة ذات اللاحقة 8-L واللاحقة -16.

الشكل جانباً يبين مقارنة بين الحالات الثلاث لتكويد المتحكم ATmega128 حيث:

  • ATmega128L-8AU قديم لم يعد في طور التصنيع.

  • ATmega128-16AU قديم لم يعد في طور التصنيع.

  • ATmega128A-AU الجيل الجديد وهو موافق تماماً لسابقيه.

 


نواة معالجات العائلة AVR

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


نظرة عامة على البنية الداخلية للنواة

تعتمد العائلة AVR البنية Harvard بهدف زيادة مستوى الأداء والعمل المتوازي – بحيث تكون هناك ذاكرة مخصصة للبيانات مع ممر معطيات خاص وذاكرة أخرى منفصلة لتعليمات البرنامج مع ممر خاص أيضاً. يتم تنفيذ التعليمات في ذاكرة البرنامج بمستوى واحد من المعالجة التفرعية بحيث أنه في الوقت الذي تقوم فيه وحدة المعالجة المركزية (CPU) بتنفيذ إحدى التعليمات يتم إحضار شفرة التعليمة التالية لها من ذاكرة البرنامج؛ إن هذا المبدأ يسمح بتنفيذ تعليمة عند كل نبضة ساعة.

الشكل 11: مخطط البنية الداخلية لنواة متحكمات AVR
 

يرتبط مع وحدة الحساب والمنطق ALU ملف المسجل ذو الولوج السريع والذي يحتوي على 32 مسجلاً للأغراض العامة كل منها بطول 8bit وبزمن ولوج قدره نبضة واحدة من نبضات الهزاز – ويقصد بالولوج السريع لملف المسجلات على أنه الولوج الذي يستغرق زمن قدره دورة ساعة واحدة؛ هذا يعني أنه خلال دورة ساعة واحدة تقوم وحدة الحساب والمنطق بتنفيذ عملية واحدة، فهي تقوم أولاً بإخراج المعاملين من ملف السجلات، ومن ثم تنفذ العملية، ومن ثم تعيد تخزين النتيجة في ملف المسجلات، وكل ذلك يتم خلال دورة ساعة واحدة.


وحدة الحساب والمنطق

تدعم وحدة الحساب والمنطق العمليات الحسابية والمنطقية بين محتوى المسجلات أو بين محتوى المسجل وقيمة ثابتة، كما يمكن إجراء عملية معينة على محتوى مسجل وحيد، وبعد تنفيذ العملية يتم تحديث مسجل الحالة ليعطي المعلومات عن ناتج تلك العملية. تتمتع وحدة الحساب والمنطق ALU عالية الأداء في العائلة AVR بالارتباط المباشر مع مسجلات العمل الاثنين والثلاثين ذات الأغراض العامة، فخلال دورة ساعة واحدة تنفذ وحدة الحساب والمنطق عملية ما بين مسجلين في ملف المسجلات أو بين مسجل وقيمة ثابتة. ويمكن تقسيم عمليات ALU إلى ثلاث فئات رئيسية: فئة حسابية - فئة منطقية - فئة العمليات على مستوى الزوج (Bit). كما تملك معالجات العائلة AVR في بنيتها ضارب متطور يدعم عمليات ضرب للأعداد المؤشرة وغير المؤشرة والاعداد الكسرية.

 


الذواكر في متحكمات AVR

تمتلك معظم متحكمات AVR ثلاث أنواع من الذواكر المدمجة على الشريحة وهي:

ذاكرة المعطيات (EEPROM)

ذاكرة البيانات (Data Memory)

ذاكرة البرنامج (Flash Memory)

 

 ذاكرة البرنامج

يملك المتحكم ATmega32A ذاكرة وميضية من النوع Flash مدمجة ضمن الشريحة بحجم 32KB (أي من $0000 إلى $7FFF) مخصصة لتخزين برنامج عمل المتحكم المصغر، وبما أن جميع تعليمات متحكماتAVR هي ذات شفرة وحيدة بطول كلمة واحدة (16bit) أو كلمتين (32bit)، فقد تم تنظيم ذاكرة البرنامج لتشكل 16K x 16، كما تم تقسيمها إلى قسمين منفصلين:

  • قسم برنامج الإقلاع (Boot Program)

  • قسم برنامج التطبيق (Application Program) وذلك بهدف الحماية من سرقة البرنامج.

تتميز ذاكرة البرنامج في متحكمات AVR بديمومة10,000 دورة مسح/كتابة على الأقل، كما أنها قابلة لإعادة البرمجة في النظام دون الحاجة إلى نقل المتحكم إلى مبرمجة خاصة وهو ما يدعى بـالبرمجة الضمنية أو In System Programing”. كذلك يملك المتحكم ATmega32A عداد برنامج (PC) بطول 16bit (وهو متغير الطول بالنسبة بكل معالج) وبذلك يستطيع عنونة كامل مجال ذاكرة البرنامج الذي هو بطول 16KB x 16bit.

الشكل 12: خريطة ذاكرة البرنامج

 

 ذاكرة البيانات SRAM

وهي عبارة عن ذاكرة وصول عشوائي مؤقتة يتم فيها إجراء العمليات على المتحولات؛ يملك المتحكم ATmega32A ذاكرة بيانات من النوع SRAM بطول 2KB.

 

ملاحظة: التسمية SRAM هي اختصار للجملة الإنجليزية Static Random Access Memory والتي تعني ذاكرة الوصول العشوائي الثابت باللغة العربية.

الشكل 13: تنظيم الذاكرة الدخلية SRAM للمتحكم ATmega128A


ذاكرة المعطيات
EEPROM

يملك المتحكم ATmega32A ذاكرة معطيات من النوع EEPROM بطول 1KB وهي منظمة مستقل لتخزين البيانات، ويمكن فيه القراءة من أو الكتابة على أي بايت من بايتات هذه الذاكرة بشكل مستقل، كما تسمح ديمومة الذاكرة EEPROM بـأكثر من 100000 عملية كتابة ومسح.

 


مصادر التوقيت في متحكمات AVR

تملك متحكمات AVR العديد من مصادر إشارة التوقيت والتي تقسم بشكل رئيسي إلى خمسة مصادر:

  • إشارة توقيت خارجية (External Clock).

  • هزاز RC خارجي (External RC Oscillator).

  • هزاز RC داخلي معاير (Calibrated Internal RC Oscillator).

  • هزاز كريستالي/سيراميكي خارجي (External Crystal/Ceramic Resonator).

  • هزاز كريستالي خارجي ذو تردد منخفض (External Low-frequency Crystal).

 

يتم ضبط مصدر إشارة التوقيت من خلال ضبط الفيوزات الداخلية للمتحكم والمسؤولة عن مصدر التوقيت (CKSEL3:0). لمزيد من التفاصيل يمكن الرجوع إلى الوثيقة الفنية للمتحكم/الفقرة "8.2 - Clock Sources".

 

  الهزاز RC الداخلي للمتحكم

تملك معظم متحكمات AVR وخصوصاً العائلة ATmega هزاز RC داخلي معاير مخبرياً بتردد ثابت يمكن ضبطه من أجل القيم 1MHz و 2MHz و 4MHz و 8MHz، وإن الحالة الافتراضية لمصدر إشارة التوقيت لمعظم متحكمات AVR-Mega هو "هزاز RC داخلي معاير" بتردد 1MHz ويمكن تغييره من خلال الفيوزات الداخلية للمتحكم الخاصة بمصدر إشارة التوقيت (CKSEL3:0).

 

  وصل هزاز كريستالي خارجي

من أجل دقة أعلى لإشارة التوقيت، أو من أجل تشغيل المعالج عند تردد عمل أكبر من 8MHz، فإنه يمكن استخدام هزاز كريستالي خارجي يتم وصله مع المتحكم عبر القطبين XTAL1 (الدخل) والقطب XTAL2 (الخرج) مع مراعات إضافة مكثفات تحميل خارجية بقيمة 12 إلى 22pF كما هو موضح على الشكل14.

الشكل 14: وصل هزاز كريستالي خارجي مع المتحكم المصغر

 

من الضروري إعادة ضبط الفيوزات الداخلية للمتحكم والخاصة بمصدر إشارة التوقيت (CKSEL3:0) على “External Crystal Resonator”.

 

  وصل هزاز كريستالي خارجي ذو تردد منخفض

يمكن وصل هزاز كريستالي خارجي بتردد منخفض 32.768KHz كمصدر توقيت مخصص لتطبيقات الساعات الرقمية بعد إعادة تعيين الفيوزات الداخلية للمتحكم الخاصة بمصدر إشارة التوقيت (CKSEL3:0) على“External Low-frequency Crystal” حيث ”CKSEL = “1001.

 

  وصل هزاز RC خارجي

من أجل التطبيقات التي لا تحتاج إلى دقة في إشارة التوقيت، فإنه يمكن استخدام دارة RC لتوليد إشارة التوقيت (100Hz إلى 12MHz) كما هو مبين على الشكل15.

 

القيمة التقريبية للتردد المولد يمكن حسابها من المعادلة:

f = 1/(3 × R × C)

حيث أن:

قيمة C يجب أن تكون أكبر من 22pF.

كما أن القيمة القصوية للتردد f يجب أن لا تتجاوز 12MHz.

الشكل 15: وصل هزاز RC خارجي مع المتحكم المصغر

 

يجب ضبط الفيوزات الداخلية للمتحكم الخاصة بمصدر إشارة التوقيت (CKSEL3:0) على “External RC Oscillator”.

 

  إشارة توقيت خارجية

يمكن كتطبيق إشارة توقيت خارجية مباشرة على القطب XTAL1 بعد إعادة تعيين الفيوزات الداخلية للمتحكم الخاصة بمصدر إشارة التوقيت (CKSEL3:0) على“External Clock” حيث CKSEL = “0000”. يبين الشكل16 طريقة تطبيق الإشارة.

الشكل16: تطبيق إشارة توقيت خارجية للمتحكم

 


الدراسة التطبيقية – المتحكم المصغر ATmega32A

السبب في اختيار المعالج ATmega32 هو أنه يعتبر من المعالجات المتقدمة في العائلة ATmegaxxx ويضم معظم الميزات والوحدات المحيطية المتوفرة في العائلة Mega وبالتالي فإننا ندرس الآن الحالة الأعم والأشمل، كما أنه متوفر بغلاف من النوع PDIP.

 

بشكل عام وعند شراء دارة متكاملة ما، فإن أول ما يحتاج إليه هو معرفة خصائصها وميزاتها وكيفية عملها وتوزع أقطابها، وهذا يتم من خلال قراءة المعلومات المهمة من الوثيقة الفنية (Datasheet) الخاصة بالدارة المتكاملة. وهنا أود التنويه إلى أنه عند استخدام لغات البرمجة عالية المستوى فإن المبرمج لن يحتاج إلى قراءة الوثيقة الفنية للمتحكم المصغر كاملةً من أجل برمجته، وهذا بدوره يختصر وقتاً كبيراً في تعلم برمجة المتحكمات المصغرة بدون اللجوء إلى دراسة البنية الداخلية للمعالج مفصلةً كما هو الحال عند البرمجة بلغة التجميع (Assembly). لذلك، سوف أشرح المعلومات التي تفيدنا في الوثيقة الفنية كالميزات الأساسية للمعالج وتوزع الأقطاب، مع العلم أنه لابد – لاحقاً – من العودة إلى بعض التفاصيل في البنية الداخلية للمعالج عن مرحلة متقدمة.

 


الميزات الأساسية للمتحكم ATmega32A

الميزات الأساسية تأتي دائماً في الصفحة الأولى من الوثيقة الفنية لأي دارة متكاملة...

في ما يلي ميزات المعالج ATmega32A.

  • متحكم 8bit بأداء عالٍ واستهلاك منخفض للطاقة.

  • بنية متطورة من النوع RISC (أقل عدد ممكن من التعليمات):

    • عمل مستقر ومناعة ضد الضجيج

    • يحوي على مضاعف دورة العمل

    • 133 تعليمة معظمها تنفذ بدورة آلة واحدة

    • 32 × 8 مسجلات أغراض عامة + مسجلات تحكم محيطية

    • قادر على تنفيذ 16 مليون تعليمة في الثانية عند تردد 16MHz

  • ذاكرة معطيات دائمة:

    • 2KB ذاكرة وصول عشوائي مؤقتة SRAM

    • 1KB ذاكرة معطيات دائمة EEPROM قابلة للمسح والكتابة100000 مرة.

    • 32KB ذاكرة برنامج: يمكن برمجتها بدون فصل المعالج عن الدارة، قابلة للمسح والكتابة 10000 مرة.

    • أقفال برمجية من أجل حماية البرنامج على الشريحة

    • أقفال برمجية مستقلة مع قطاع مخصص لكود الإقلاع

    • إمكانية عنونة 64KB (وصل) ذاكرة برنامج خارجية

    • واجهة ربط تسلسلية (SPI) من أجل برمجة المعالج دون فصله

  • واجهة اختبار (JTAG):

    • دعم متقصي أخطاء (Debug) شامل للشريحة

    • إمكانية برمجة ذاكرة البرنامج وذاكرة المعطيات

    • قابلية مسح المسجلات الداخلية للمعالج وقراءة حالاتها

  • الميزات المحيطية:

    • نافذة مقارن تشابهي

    • نافذة اتصال تسلسلية ثنائية (I2C)

    • عداد الزمن الحقيقي مع هزاز مستقل

    • مؤقت مراقبة قابل للبرمجة مع هزاز مستقل

    • ثمان قنوات تبديل تشابهي/رقمي بدقة 10bit

    • نافذة اتصال تسلسلية (SPI) بنمطي عمل قائد/تابع

    • نافذتي اتصال تسلسلي (USARTs) قابلة للبرمجة

    • مؤقت/عداد 8bit عدد 2 مزود بأنماط مقسم ترددي وحادثة مقارنة

    • مؤقت/عداد 16bit موسع مزود بأنماط مقسم ترددي وحادثة مقارنة وحادثة مسك

    • قناتي مداخل تفاضلية للتبديل تشابهي/رقمي بدقة 10bit مع دارة ربح 1x أو 10x أو 200x

    • أربعة قنوات خرج (PWM) تعديل عرض النبضة16bit مع إمكانية التحكم بالدقة من 2 وحتى 16bit.

  • الميزات الخاصة للمعالج:

    • هزاز داخلي معاير

    • مصادر مقاطعة خارجية وداخلية

    • إمكانية تحديد تردد الهزاز الداخلي برمجياً

    • إلغاء شامل لمقاومات الرفع الداخلية للبوابات

    • ستة أنماط لتخفيض الطاقة ولتخفيض ضجيج المبدل

    • تصفير عند وصل التغذية وكاشف انخفاض جهد التغذية للشريحة

  • عدد أقطاب الدخل/الخرج وشكل الغلاف الخارجي المعالج:

    • 32 قطب دخل/خرج قابل للبرمجة متوفر من أجل شريحة 40 قطب بغلاف PDIP.

  • جهود العمل للشريحة في المجال 2.7 - 5.5V

  • تردد عمل قصوي حتى 0 - 16MHz

  • استهلاك الطاقة في النمط الفعال i(Active) 0.6mA وفي نمط البطالة i(Idle) 0.2mAوفي نمط الطاقة التحتية 1uA.

 


مخطط البنية الداخلية للمتحكم ATmega32A

لقد تم صناعة الشريحة ATmega32A باستخدام تقنية ذواكرATMEL الغير قابلة للزوال ذات الكثافة العالية، مع إمكانية برمجة ذاكرة البرنامج الوميضية (Flash) المبنية على شريحة المتحكم إما من خلال الوصلة التسلسلية SPI أو باستخدام مبرمجة تفرعية أو باستخدام برنامج إقلاع موجود على الشريحة (Boot program) حيث تستطيع البرمجية المخزنة في جزء الإقلاع (Bootloader) في الذاكرة الوميضية متابعة عملها أثناء تحديث القسم الرئيسي في ذاكرة البرنامج. لقد أدى الجمع ما بين معالجات RISC ذات 8bit مع ذاكرة البرنامج القابلة لإعادة البرمجة إلى إنتاج المتحكم ATmega132A الذي يتمتع بالقوة و المرونة العالية وبالكلفة المنخفضة للعديد من تطبيقات التحكم المتطورة. الشكل17 يبين المخطط الصندوقي للبنية الداخلية للمتحكم ATmega32 وهو يبين طريقة ربط الوحدات المحيطية والمسجلات مع وحدة المعالجة المركزية.

الشكل 17: المخطط الصندوقي للبنية الداخلية للمتحكم Atmega32A

 


تصنيفات الأقطاب وظيفياً في متحكمات AVR

يمكن تصنيف أقطاب متحكمات العائلة AVR من حيث وظائفها على الشكل التالي:

  1. أقطاب التغذية الرقمية (VCC, GND).

  2. أقطاب التغذية التشابهية (AVCC, AGND).

  3. أقطاب الدخل والخرج (Input / Output Pins = Ports).

  4. أقطاب البرمجة:

    الواجهة البرمجية PDI (PDO, PDI)i.

    الواجهة البرمجية ISP (MISO, MOSI, SCK, RESET)i.

  1. أقطاب القواطع الخارجية (INT0 – INT7).

  2. أقطاب مصادر التوقيت (XTAL1, XTAL2, TOSC1, TOSC2).

  3. أقطاب المؤقتات/العدادات (T0, T1, T2, ICP).

  4. أقطاب المبدلات التشابهية الرقمية (ADC0 – ADC7).

  5. أقطاب النوافذ التسلسلية:

    •     النافذة التسلسلية UART / USART (XCK, TXD, RXD)i.

    •     النافذة التسلسلية SPI (MISO, MOSI, SCK, SS)i.

    •     النافذة التسلسلية I2C (SDA, SCL)i.

  1. أقطاب المقارن التشابهي (AIN0, AIN1).

  2. أقطاب إشارات PWM (OCA1, OCB1, OCC1, …)i.

  3. أقطاب نافذة المراقبة JTAG (TDI, TDO, TMS, TCK)i.

  4. أقطاب الوصل مع ذاكرة خارجية XRAM (AD0-7, A8-15, WR/RD)i.

 


وصف أقطاب المتحكم ATmega32A

يملك المتحكم ATmega32A مجموعة من الأقطاب عددها 40 قطب موزعة على الأطراف الفيزيائية لشريحة المتحكم وهي:

الشكل 18: توزع الأقطاب على الشريحة ATmega32A

 

الاسم

الوظيفة

VCC

قطب جهد التغذية الموجب VCC = 2.5 – 5.5V

GND

قطب جهد التغذية الصفري (الأرضي) GND = 0V

Port A (PA7:PA0)

البوابة A: وهي عبارة عن بوابة دخل/خرج ذات ثمانية أقطاب ثنائية الاتـجاه، وقد زودت الأقطاب بمقاومات رفع داخلية (Pull-up) مع إمكانية اختيار مقاومة الرفع لكل قطب على حدى. تمتلك البوابة A وظيفة ثانوية أخرى وهي قنوات المبدلات التشابهية الرقمية (ADC0-ADC7).

Port B (PB7:PB0)

البوابة B: وهي عبارة عن بوابة دخل/خرج ذات ثمانية أقطاب ثنائية الاتـجاه، وقد زودت الأقطاب بمقاومات رفع داخلية (Pull-up) مع إمكانية اختيار مقاومة الرفع لكل قطب على حدى، كذلك تمتلك البوابة B وظائف ثانوية أخرى وهي: واجهة اتصال تسلسلية SPI (MISO, MOSI, SCK, SS)i، وقطب توليد إشارة PWM (OC0)i، وأقطاب المقارن التشابهي (AIN0, AIN1)، المقاطعة الخارجية (INT2)، العدادات (T0/T1).

Port C (PC7:PC0)

البوابة C: وهي عبارة عن بوابة دخل/خرج ذات ثمانية أقطاب ثنائية الاتـجاه، وقد زودت الأقطاب بمقاومات رفع داخلية (Pull-up) مع إمكانية اختيار مقاومة الرفع لكل قطب على حدى. تمتلك البوابة C وظائف ثانوية أخرى حيث تعمل كنافذة تتبع أخطاء JTAG (TDI, TDO, TMS, TCK)i، نافذة تسلسليةI2C (SDA, SCK)i.

Port D (PD7:PD0)

البوابة D: وهي عبارة عن بوابة دخل/خرج ذات ثمانية أقطاب ثنائية الاتـجاه، وقد زودت الأقطاب بمقاومات رفع داخلية (Pull-up) مع إمكانية اختيار مقاومة الرفع لكل قطب على حدى. تمتلك البوابة D وظائف ثانوية أخرى وهي:
القواطع الخارجية (INT0-INT1)
النافذة التسلسلية USART (RXD, TXD)i
مدخل حادثة المسك للموقت1 (ICP1).
وأقطاب توليد إشارات PWM (OC1A, OC1B, OC2)i.

RESET

مدخل تصفير الشريحة؛ عند تطبيق إشارة كهربائية ذات منطق منخفض على القطب RESET لمدة دورتي آلة، فإن دارة التصفير الداخلية تعمل على تصفير المتحكم – عداد البرنامج PC = 0.

XTAL1

مدخل الهزاز الخارجي: وهو عبارة عن مدخل دارة مضخم الهزاز العاكس.

XTAL2

مدخل الهزاز الخارجي: وهو عبارة عن خرج دارة مضخم الهزاز العاكس.

AVCC

قطب التغذية للمبدل التشابهي الرقمي (ADC)، إذا كان المبدل ADC غير مُستخدم فإن هذا القطب يجب وصله إلى القطب Vcc، أما إذا كان المبدل ADC مُستخدماً فيوصل هذا القطب مع Vcc عن طريق مرشح تمرير مُنخفض.

AGND

إذا كانت الدارة التي نقوم بتصميمها لها أرضي تشابهي مستقل، فيجب ربط هذا القطب مع هذا الأخير، وإلا يُربط هذا القطب مع القطب الأرضي العام GND.

AREF

مدخل الجهد المرجعي التشابهي للمبدل ADC ويـجب أن تتراوح قيمته عند عمل المبدل ما بين 2V - AVcc.


الحقوق الفكرية

حقوق النشر محفوطة م.وليد بليد

Copyright © 2012 Walid Balid All rights reserved


تأليف

 

المؤلف: وليد بليد (سوريا)


 {jumi [*3]}

التعليقات  

ابو مهيمن
+1 # ابو مهيمن 2016-06-14 10:09
شكرا لك....معلومات جدا قيمه.
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير
abohatem33
0 # abohatem33 2016-09-17 11:29
الاستاذ وليد طبق حديث الرسول صلى الله عليه وسلم
قال رسول الله صلى الله عليه وسلم :

(( لا تزولُ قدَمَا عبد يومَ القيامة ، حتى يُسألَ عن أربع : عن عُمُره فيمَ أفناه ؟ وعن عِلْمِهِ ما عمِل به ؟ وعن ماله من أين اكتسبه وفيم أنفقه ؟ وعن جسمه فيم أبلاه ؟ ))

اسأل الله العزيز الحكيم رب العرش الكبير ان يبارك لك في علمك وعملك وعمرك وبفضلكم بدأنا بكتابة البرامج وتطبيق الدارات
دمتم بكل خير و مودة
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير

أضف تعليقا


إصنعها يريد أن يتأكد أنك لست روبوتا، لذلك أحسب ما يلي:

كود امني
تحديث