علوم الحاسب

مدخل إلى متحكمات عائلة AVR

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

1. لمحة تاريخية عن متحكمات AVR

طُوِّرت عائلة المتحكمات الصغرية AVR من قبل شركة Atmel، وفي عام 2016 استحوذت عليها شركة Microchip، ويعتبر المتحكم AT90S1200 أول متحكم يتم طرحه في الأسواق، توصف عائلة AVR بأنها متحكمات 8bit، أي أنها تستطيع معالجة بيانات بحجم 8 بت في اللحظة الواحدة، كما أن هذا الرقم يدل على عرض ممر البيانات فيها Data Bus، تعتبر من أوائل المتحكمات التي استخدمت ذاكرة من النوع “فلاش” flash memory لتخزين البرنامج، حيث كانت المتحكمات في ذلك الوقت تستخدم ذاكرة قابلة للبرمجة مرة واحدة من النوع ROM.

تتواجد متحكمات AVR في العديد من تطبيقات الأنظمة المدمجة، ولها شعبية واسعة بين الهواة وحتى المحترفين، وذلك لعدة أسباب أهمها:

  • سهولة كتابة الأكواد باستخدام لغات برمجية عالية المستوى من أشهرها لغة سي C.
  • سهولة البرمجة (حقن الكود) حيث يمكن برمجتها دون الحاجة إلى فصلها عن النظام المُتحكم به من خلال ما يعرف بواجهة ISP.
  • انخفاض تكلفتها مقارنة بالمزايا التي تقدمها.
  • توفرها بالشكل DIP سهل التعامل والقابل للتشغيل على لوحة التجريب الإلكترونية breadboard.
  • وجود مجتمع ضخم يضم مشاريع ومكتبات برمجية وشروحات مفتوحة المصدر تساعد أي مهتم على الدخول في عالم AVR.

2. عوائل متحكمات AVR

تُصنَّف متحكمات AVR ضمن 3 أصناف رئيسية وهي:

  1. سلسلة ATtiny: تتميز بصغر حجمها وذاكرتها، فهي ملائمة للتطبيقات البسيطة.
  2. سلسلة ATmega: وهي الأكثر شُهرة بسبب حجم ذاكرتها الذي يناسب التطبيقات المتوسطة والمعقدة.
  3. سلسلة ATXmega: تستخدم للتطبيقات المعقدة التي تحتاج سرعة عالية وذاكرة كبيرة.

وفيما يلي جدول لتوضيح الفروق بين تلك العوائل من حيث حجم الذاكرة وعدد المغارز:

السلسلةذاكرة Flashذاكرة SRAMعدد المغارز
TinyAVR1KB – 16KB32Byte – 1024Byte6 – 32
MegaAVR4KB – 256KB512Byte – 16KB28 – 100
XmegaAVR16KB – 384KB1KB – 16KB44 – 100

3. البنية الداخلية لمتحكمات AVR

تعتمد متحكمات AVR على المعمارية RISC وهي اختصار لعبارة Reduced Instruction Set Computer، حيث ترتكز هذه البنية على مجموعة تعليمات بسيطة بالمقارنة مع البنية CISC، وبالتالي فهي الأسرع في التنفيذ (ولكن في المقابل يكون الكود البرمجي أطول)، حيث يتم تنفيذ معظم التعليمات في نبضة ساعة واحدة، أي أن المتحكم الذي يعمل بتردد 1MHz يستطيع تنفيذ مليون تعليمة تقريبا في الثانية الواحدة.

كما أن هذه البنية تعتمد على المسجلات Registers في تنفيذ التعليمات، حيث تكون معاملات التعليمة (دخل التعليمة) مخزنة في مسجلات، وأيضا يتم تخزين النتيجة (خرج التعليمة) في مسجل آخر، يحوي متحكم AVR على 32 مسجل للأغراض العامة، تستخدمها وحدة الحساب والمنطق ALU لتنفيذ التعليمات المطلوبة.

على سبيل المثال: عند استدعاء التعليمة (ORI A,B) وبفرض أن المسجل A كان يحوي القيمة (0xAA) والمسجل B كان يحوي القيمة (0x55)، سيُجري المتحكم عملية OR منطقية بين المسجلين ويخزن النتيجة في المسجل الأول A “كل هذا في نبضة ساعة واحدة”، كما في الشكل التالي:

تعتمد متحكمات AVR على المعمارية هارفرد Harvard Architecture التي تستخدم ذاكرة خاصة للبرنامج (حيث تُخزَّن التعليمات) من النوع Flash ROM التي لا تُمحى بانقطاع التغذية الكهربائية، وذاكرة أخرى للبيانات من النوع SRAM التي تتلاشى بانقطاع التغذية الكهربائية، ومن ضمن ذاكرة SRAM يوجد مسجلات الأغراض العامة ومسجلات التحكم، وإلى جانب هاتين الذاكرتين يوجد ذاكرة ثالثة من النوع EEPROM يمكن استخدامها من قبل المبرمج لتخزين المتحولات الهامة التي يجب أن تبقى مخزنة حتى بعد انقطاع التغذية الكهربائية، وفيما يلي استعراض سريع لأهم المكونات الداخلية لمتحكمات AVR:

  • منافذ الدخل والخرج I/O ports: يختلف عددها حسب المتحكم وتكون بعرض 8 بت.
  • هزاز داخلي Internal oscillators: ذو بنية مقاومة-مكثف RC.
  • مؤقت/عداد Timer/Counter: يمكن أن يكون بعرض 8 بت أو بعرض 16 بت.
  • مؤقت مراقبة Watchdog Timer: يعيد إقلاع المتحكم إذا تعطَّل تنفيذ التعليمات عند نقطة واحدة لفترة زمنية معينة.
  • محول تشابهي رقمي ADC: يمكن أن يكون بدقة 10 أو 12 بت.
  • واجهات اتصال متنوعة: USART – SPI – I2C – TWI.
  • مقارن تشابهي Analog comparator.

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

ومن المزايا الإضافية التي تتوفر في متحكمات AVR، وجود عدة أنماط لتوفير الطاقة Power save modes، ووجود حماية من انخفاض جهد التغذية Brownout detection التي تضع المتحكم في وضع إعادة الإقلاع إلى أن يعود جهد التغذية إلى المستوى الطبيعي، وهنا نذكر أن معظم متحكمات AVR تعمل ضمن مجال تغذية (4.5V-5.5V) إلا أن المتحكمات التي تأتي بلاحقة L تعمل ضمن المجال (2.7V-5.5V).

4. برمجة متحكمات AVR – بيئة التطوير مايكروتشيب ستوديو Microchip Studio

يوجد العديد من الطرق من أجل برمجة متحكمات عائلة AVR، إلا أنه يمكن القول أن أهم وسيلة يمكن استخدامها هي عبر بيئة التطوير البرمجية مايكروتشيب ستوديو Microchip Studio من شركة مايكروتشيب، والتي يمكن الحصول عليها واستخدامها بشكلٍ مجانيّ.

توّفر بيئة مايكروتشيب ستوديو واجهة استخدام شبيهة ببرنامج Microsoft Visual Studio، وذلك كونها مبنية عليه، ويمكن من خلالها إنشاء مشاريع خاصة بمتحكمات AVR (وغيرها من المتحكمات التي تنتجها شركة مايكروتشيب) وبرمجتها باستخدام لغات سي أو سي بلس بلس البرمجية. تتيح البيئة أيضاً برمجة المتحكمات، أي حقن الملف التنفيذي بصيغة .hex على المتحكم وذلك عبر تشكيلةٍ واسعة من معايير البرمجة المستخدمة مع هذه العائلة من المتحكمات.

شكل واجهة بيئة التطوير مايكروتشيب ستوديو التي يمكن استخدامها لبرمجة متحكمات عائلة AVR

من الجدير بالذكر أن بيئة مايكروتشيب ستوديو كانت تُعرف باسم أتميل ستوديو Atmel Studio، ولكن بعد أن استحوذت شركة مايكروتشيب على شركة أتميل قررت دمج كل بيئات التطوير الخاصة بها ضمن بيئةٍ واحدة هي مايكروتشيب ستوديو.

يمكن تحميل بيئة التطوير مايكروتشيب ستوديو من موقع شركة مايكروتشيب: اضغط هنا.

5. العلاقة بين AVR و Arduino

تُستخدم متحكمات AVR بشكل واسع في المشاريع التعليمية وذلك للأسباب التي ذكرناها سابقاً، ولكن هناك عامل آخر ساهم بذلك، وهو استخدامها من قبل مشروع أردوينو Arduino كمتحكم رئيسي للعديد من لوحاتها التطويرية، ومن أشهر هذه اللوحات Arduino UNO التي تعتمد على المتحكم AtMega328، واللوحة Arduino MEGA التي تعتمد على المتحكم AtMega 2560.

يمكن القول أن ميزات اللوحة التطويرية لها علاقة مباشرة بميزات المتحكم الرئيسي فيها، إلا أن ما يميز لوحة Arduino عن متحكم AVR هو وجود كود برمجي يسمى محمل الإقلاع Bootloader، الذي يأخذ قسماً من ذاكرة الفلاش في المتحكم، ولكن في المقابل يجعل عملية نقل البرنامج إلى المتحكم في غاية السهولة والبساطة، حيث أن وظيفته الأساسية استقبال الكود البرمجي من البئية Arduino IDE وتخزينها في ذاكرة المتحكم الرئيسي، وبالتالي أنت بحاجة فقط لكبل USB لنقل الكود من جهاز الحاسب إلى المتحكم بخلاف المتحكمات التقليدية التي تحتاج عادة إلى أداة خاصة تدعى “مبرمجة” programmer.

6. ملخص

  • تعتبر متحكمات AVR من أشهر المتحكمات الصغرية ذات بنية 8-بت والمستخدمة على نطاقٍ واسع في تطبيقات الأنظمة المدمجة
  • يتم في الوقت الحالي إنتاج متحكمات AVR من قبل شركة مايكروتشيب بعد أن استحوذت على شركة أتميل التي قامت بإطلاق هذه العائلة
  • هنالك ثلاث عوائل أساسية لمتحكمات AVR وهي ATtiny, ATmega و Xmega
  • تستخدم متحكمات AVR اليوم على نطاقٍ واسع في لوحات الأردوينو المختلفة
  • يمكن إنشاء المشاريع باستخدام متحكمات AVR مباشرةً بدون الحاجة لاستخدام لوحات الأردوينو، ومن أجل ذلك يجب بناء دارة المشروع بشكلٍ منفصل واستخدام بيئة تطوير برمجية مثل مايكروتشيب ستوديو

مقالات ذات صلة

زر الذهاب إلى الأعلى