متحكمات AVR



AVR هي عائلة من المتحكمات الدقيقة التي طورتها شركة Atmel منذ عام 1996 ، واستحوذت عليها شركة Microchip Technology في عام 2016. وهي عبارة عن متحكمات دقيقة أحادية الشريحة ذات بنية Harvard معدلة 8 بت RISC . كانت AVR واحدة من أولى عائلات المتحكمات الدقيقة التي تستخدم ذاكرة فلاش على الشريحة لتخزين البرامج، على عكس ذاكرة القراءة فقط القابلة للبرمجة أو EPROM أو EEPROM التي تستخدمها المتحكمات الدقيقة الأخرى في ذلك الوقت.
تُستخدم متحكمات AVR في العديد من التطبيقات كأنظمة مضمنة . وهي شائعة بشكل خاص في التطبيقات المضمنة للهواة والتعليم، واكتسبت شعبية كبيرة من خلال تضمينها في العديد من لوحات تطوير الأجهزة المفتوحة من سلسلة Arduino .
تاريخ
تم تصميم هندسة AVR من قبل طالبين في المعهد النرويجي للتكنولوجيا (NTH)، [1] Alf-Egil Bogen [2] و Vegard Wollan. [3]
تقول شركة Atmel أن اسم AVR ليس اختصارًا ولا يرمز إلى أي شيء بعينه. ولم يقدم مبتكرو AVR إجابة قاطعة حول ما يرمز إليه مصطلح "AVR". [3] ومع ذلك، فمن المقبول عمومًا أن AVR يرمز إلى معالج Alf و R ISC من شركة Vegard . [ 4] لاحظ أن استخدام "AVR" في هذه المقالة يشير عمومًا إلى خط RISC ذي 8 بتات من متحكمات Atmel AVR.
تم تطوير وحدة التحكم الدقيقة AVR الأصلية في منزل ASIC محلي [ بحاجة لتوضيح ] في تروندهايم، النرويج ، والذي كان يسمى Nordic VLSI في ذلك الوقت، والآن Nordic Semiconductor ، حيث كان بوغن ووولان يعملان كطلاب. [ بحاجة لمصدر ] كانت تُعرف باسم μRISC (Micro RISC) [5] وكانت متاحة ككتلة بناء IP/سيليكون من Nordic VLSI. [6] عندما تم بيع التكنولوجيا إلى Atmel من Nordic VLSI ، تم تطوير البنية الداخلية بشكل أكبر بواسطة بوغن ووولان في Atmel Norway، وهي شركة تابعة لشركة Atmel. عمل المصممون بشكل وثيق مع كتاب المترجمين في IAR Systems لضمان أن مجموعة تعليمات AVR توفر تجميعًا فعالًا للغات عالية المستوى . [7]
كان AT90S8515 من أوائل خطوط AVR، والذي يحتوي على حزمة DIP ذات 40 سنًا بنفس توزيع الدبابيس مثل متحكم 8051 ، بما في ذلك عنوان الإرسال المتعدد الخارجي وناقل البيانات. كانت قطبية خط RESET معاكسة (لدى 8051 إعادة تعيين نشطة عالية، بينما يحتوي AVR على إعادة تعيين نشطة منخفضة )، ولكن بخلاف ذلك كان توزيع الدبابيس متطابقًا.
تم تقديم بنية متحكم AVR 8 بت في عام 1997. وبحلول عام 2003، شحنت شركة Atmel 500 مليون متحكم فلاش AVR. [8] تم إصدار منصة Arduino ، التي تم تطويرها لمشاريع إلكترونية بسيطة، في عام 2005 وتضمنت متحكمات AVR ATmega8.
نظرة عامة على الجهاز
إن AVR عبارة عن آلة ذات هندسة هارفارد معدلة، حيث يتم تخزين البرامج والبيانات في أنظمة ذاكرة مادية منفصلة تظهر في مساحات عناوين مختلفة، ولكنها تتمتع بالقدرة على قراءة عناصر البيانات من ذاكرة البرنامج باستخدام تعليمات خاصة.
العائلات الأساسية
يتم تصنيف أجهزة تنظيم الجهد الكهربي (AVR) بشكل عام على النحو التالي:
tinyAVR – سلسلة ATtiny
| حجم الفلاش | التردد [ميجا هرتز] |
طَرد | سرام | ذاكرة إي إي بي آر أو إم |
|---|---|---|---|---|
| 0.5–32 كيلو بايت | 1.6–20 | حزمة 6-32 دبوسًا | 32–3072 بايت | 64–512 بايت |
تتميز سلسلة ATtiny بوحدات تحكم دقيقة صغيرة الحجم مع مجموعة محدودة من الأجهزة الطرفية المتاحة. ومع ذلك، تتضمن سلسلة tinyAVR 0/1/2 المحسنة (التي تم إصدارها في عام 2016) ما يلي:
- الأجهزة الطرفية التي تساوي أو تفوق سلسلة megaAVR 0
- نظام الحدث
- تم تحسين مجموعة تعليمات AVRxt (تحسين توقيت المكالمات)، مضاعفة الأجهزة
megaAVR – سلسلة ATmega
| حجم الفلاش | التردد [ميجا هرتز] |
طَرد | سرام | ذاكرة إي إي بي آر أو إم |
|---|---|---|---|---|
| 4–256 كيلو بايت | 1.6–20 | حزمة 28–100 دبوس | 256–16384 بايت | 256–4096 بايت |
تتميز سلسلة ATmega بوحدات تحكم دقيقة توفر مجموعة تعليمات موسعة (تعليمات مضاعفة وتعليمات للتعامل مع ذاكرة برامج أكبر)، ومجموعة أجهزة محيطية شاملة، وكمية كبيرة من ذاكرة البرامج، بالإضافة إلى مجموعة واسعة من الدبابيس المتاحة. كما تتميز سلسلة megaAVR 0 (التي تم إصدارها في عام 2016) بوظائف مثل:
- نظام الحدث
- أجهزة طرفية جديدة ذات وظائف محسّنة
- تم تحسين مجموعة تعليمات AVRxt (تحسين توقيت المكالمات)
AVR Dx – تتميز عائلة AVR Dx بسلسلة متعددة من المتحكمات الدقيقة، تركز على HCI ومعالجة الإشارة التناظرية والسلامة الوظيفية.
| حجم الفلاش | التردد [ميجا هرتز] |
طَرد | سرام | ذاكرة إي إي بي آر أو إم | سنة الإصدار |
|---|---|---|---|---|---|
| 16–128 كيلو بايت | 20–24 عند 1.8–5.5 فولت | حزمة 14–64 دبوسًا | 4–16 كيلو بايت | 512 بايت | 2020 |
يتم تنسيق أرقام الأجزاء على النحو التالي: AVR ff D xpp ، حيث ff هو حجم الفلاش، و x هي العائلة، و pp هو عدد الدبابيس. مثال: AVR128DA64 – سلسلة DA ذات 64 دبوسًا مع فلاش 128 كيلو بايت. تشمل جميع الأجهزة في عائلة AVR Dx ما يلي:
- مؤقت من النوع D غير المتزامن الذي يمكنه العمل بشكل أسرع من وحدة المعالجة المركزية
- محول تناظري رقمي 12 بت
- محول رقمي إلى تناظري 10 بت
- سلسلة AVR DA (أوائل عام 2020) - تجعل كثافة الذاكرة العالية هذه وحدات التحكم الدقيقة مناسبة تمامًا لكل من الوظائف التي تعتمد على الاتصالات السلكية واللاسلكية.
- سلسلة AVR DB (منتصف إلى أواخر عام 2020) - ترث العديد من الميزات من عائلة DA، مع إضافة ميزاتها الخاصة:
- 2 أو 3 مكبرات تشغيلية على الشريحة
- إدخال وإخراج متعدد الجهد (MVIO) على PORTC
- يدعم الكريستال HF الخارجي
- سلسلة AVR DD
- فلاش 16-64 كيلو بايت
- 2-8 كيلو بايت SRAM
- حزمة 14-32 دبوس
- مذبذب داخلي 24 ميجا هرتز
- محول تفاضلي من تناظري إلى رقمي (ADC) مكون من 7 إلى 23 قناة و130 كيلو سيمنز/ثانية و12 بت،
- لا يوجد مكبرات صوت
- 1 مقارن تناظري
- وحدتا USART، ووحدة SPI واحدة، ووحدة TWI ثنائية الوضع
- دعم الإدخال/الإخراج متعدد الجهد (MVIO) على 3 أو 4 دبابيس في المنفذ C
- 4 خلايا منطق مخصصة قابلة للتكوين (CCL)، و6 قنوات لنظام الأحداث
- سلسلة AVR EA
- فلاش 8–64 كيلو بايت
- حزمة 28–48 دبوسًا
- مذبذب داخلي 20 ميجا هرتز
- محول تفاضلي من تناظري إلى رقمي (ADC) 12 بت 130 كيلو سيمنز/ثانية 24-32 قناة
- مضخم مكسب قابل للبرمجة (PGA) بمكسب يصل إلى 16x
- 2 مقارنات تناظرية
- ثلاثة وحدات USART، ووحدة SPI واحدة، ووحدة TWI ثنائية الوضع
- لا يوجد مدخل/مخرج متعدد الجهد (MVIO)
- 4 خلايا منطق مخصصة قابلة للتكوين (CCL)، و6 قنوات لنظام الأحداث
إكس ميجا
| حجم الفلاش | التردد [ميجا هرتز] |
طَرد | سرام | ذاكرة إي إي بي آر أو إم | سنة الإصدار |
|---|---|---|---|---|---|
| 16–256 كيلو بايت | 32 | حزمة 44–100 دبوس | 1–32 كيلو بايت | 512–2048 بايت | — |
توفر سلسلة ATxmega مجموعة واسعة من الأجهزة الطرفية والوظائف مثل:
- ميزات الأداء الموسعة، مثل DMA، و"نظام الأحداث"، ودعم التشفير
- مجموعة محيطية واسعة النطاق مع محولات تناظرية إلى رقمية
AVR خاص بالتطبيق
- أجهزة AVR الضخمة ذات ميزات خاصة لا توجد في الأجهزة الأخرى من عائلة AVR، مثل وحدة تحكم LCD، ووحدة تحكم USB ، وPWM المتقدمة، وCAN، وما إلى ذلك.
FPSLIC (AVR مع FPGA)
- بوابات FPGA من 5k إلى 40k
- SRAM لرمز برنامج AVR، على عكس جميع أجهزة AVR الأخرى
- يمكن أن يعمل نواة AVR بسرعة تصل إلى 50 ميجا هرتز [9]
أجهزة استقبال الصوت والفيديو 32 بت
- في عام 2006، أصدرت شركة Atmel وحدات تحكم دقيقة تعتمد على بنية AVR32 ذات 32 بت . كانت هذه بنية مختلفة تمامًا لا علاقة لها بـ AVR ذات 8 بت، وكان الغرض منها التنافس مع المعالجات القائمة على ARM . كان لديها مسار بيانات 32 بت، وتعليمات SIMD و DSP ، إلى جانب ميزات أخرى لمعالجة الصوت والفيديو. كانت مجموعة التعليمات مماثلة لنواة RISC الأخرى، لكنها لم تكن متوافقة مع AVR الأصلي (ولا أي من نوى ARM المختلفة). منذ ذلك الحين، تم إسقاط دعم AVR32 من Linux اعتبارًا من kernel 4.12؛ لم يتم أبدًا تضمين دعم المترجم للبنية في GCC في مستودع الكود المصدر المركزي للمترجم وكان متاحًا بشكل أساسي في شوكة مدعومة من البائع. في الوقت الذي تم فيه تقديم AVR32، كانت شركة Atmel بالفعل مرخصة لبنية ARM ، حيث تم إصدار كل من وحدات التحكم الدقيقة ARM7 و ARM9 قبل AVR32 وبالتزامن معه؛ وفي وقت لاحق، ركزت شركة Atmel معظم جهود التطوير على شرائح 32 بت مع أنوية ARM Cortex-M و Cortex-A .
هندسة الجهاز
.png/440px-ATMEL_MEGA32U4_(Micro_Controller).png)
تحتوي أجهزة AVR على 32 سجلًا أحادي البايت ويتم تصنيفها كأجهزة RISC ذات 8 بت.
يتم دمج ذاكرة Flash و EEPROM و SRAM جميعها على شريحة واحدة، مما يزيل الحاجة إلى ذاكرة خارجية في معظم التطبيقات. تحتوي بعض الأجهزة على خيار ناقل خارجي موازٍ للسماح بإضافة ذاكرة بيانات إضافية أو أجهزة مخصصة للذاكرة. تحتوي جميع الأجهزة تقريبًا (باستثناء أصغر شرائح TinyAVR) على واجهات تسلسلية، والتي يمكن استخدامها لتوصيل ذاكرة EEPROM أو شرائح فلاش تسلسلية أكبر.
ذاكرة البرنامج
يتم تخزين تعليمات البرنامج في ذاكرة فلاش غير متطايرة . وعلى الرغم من أن وحدات التحكم الدقيقة تتكون من 8 بتات، فإن كل تعليمة تأخذ كلمة أو كلمتين تتكون كل منهما من 16 بتًا. وعادةً ما يتم الإشارة إلى حجم ذاكرة البرنامج في تسمية الجهاز نفسه (على سبيل المثال، يحتوي سطر ATmega64x على 64 كيلو بايت من الفلاش، بينما يحتوي سطر ATmega32x على 32 كيلو بايت). ولا يوجد شرط لذاكرة البرنامج خارج الشريحة؛ حيث يجب أن توجد جميع التعليمات البرمجية التي ينفذها نواة AVR في الفلاش الموجود على الشريحة. ومع ذلك، لا ينطبق هذا القيد على شرائح AT94 FPSLIC AVR/FPGA.
ذاكرة البيانات الداخلية
تتكون مساحة عنوان البيانات من ملف السجل ، وسجلات الإدخال/الإخراج، وذاكرة SRAM . تقوم بعض النماذج الصغيرة أيضًا بتعيين ذاكرة القراءة فقط للبرنامج في مساحة عنوان البيانات، ولكن النماذج الأكبر لا تفعل ذلك.
السجلات الداخلية
في متغيرات tinyAVR وmegaAVR من بنية AVR ، يتم تعيين السجلات العاملة كأول 32 عنوان ذاكرة بيانات (0000 16 –001F 16 )، تليها 64 سجل إدخال/إخراج (0020 16 –005F 16 ). في الأجهزة ذات الأجهزة الطرفية العديدة، تتبع هذه السجلات 160 سجل "إدخال/إخراج ممتد"، يمكن الوصول إليها فقط كإدخال /إخراج مُعين للذاكرة (0060 16 –00FF 16 ).
تبدأ ذاكرة SRAM الفعلية بعد أقسام السجل هذه، عند العنوان 0060 16 أو، في الأجهزة ذات "الإدخال/الإخراج الممتد"، عند 0100 16 .
على الرغم من وجود مخططات توجيه منفصلة وأكواد تشغيل مُحسَّنة للوصول إلى ملف السجل وأول 64 سجل إدخال/إخراج، إلا أنه يمكن أيضًا توجيهها جميعًا ومعالجتها كما لو كانت في SRAM.
تستخدم أصغر أنواع tinyAVR بنية مخفضة تحتوي على 16 سجلاً فقط (تم حذف r0 إلى r15) والتي لا يمكن معالجتها كمواقع للذاكرة. تبدأ ذاكرة الإدخال/الإخراج عند العنوان 0000 16 ، تليها ذاكرة SRAM. بالإضافة إلى ذلك، تحتوي هذه الأجهزة على انحرافات طفيفة عن مجموعة تعليمات AVR القياسية. والأمر الأكثر أهمية هو أن تعليمات التحميل/التخزين المباشرة (LDS/STS) تم تقليصها من كلمتين (32 بت) إلى كلمة واحدة (16 بت)، مما يحد من إجمالي الذاكرة القابلة للمعالجة المباشرة (مجموع كل من الإدخال/الإخراج وذاكرة SRAM) إلى 128 بايت. وعلى العكس من ذلك، يتم توسيع مساحة عنوان 16 بت لتعليمة التحميل غير المباشر (LD) لتشمل أيضًا ذاكرة غير متطايرة مثل بتات الفلاش والتكوين؛ وبالتالي، فإن تعليمة تحميل ذاكرة البرنامج (LPM) غير ضرورية ويتم حذفها. (للحصول على معلومات مفصلة، راجع مجموعة تعليمات Atmel AVR .)
في متغير XMEGA، لا يتم تعيين ملف السجل العامل في مساحة عنوان البيانات؛ وبالتالي، ليس من الممكن التعامل مع أي من سجلات العمل في XMEGA كما لو كانت ذاكرة وصول عشوائي ثابتة. بدلاً من ذلك، يتم تعيين سجلات الإدخال/الإخراج في مساحة عنوان البيانات بدءًا من بداية مساحة العنوان. بالإضافة إلى ذلك، نمت كمية مساحة عنوان البيانات المخصصة لسجلات الإدخال/الإخراج بشكل كبير إلى 4096 بايت (0000 16 –0FFF 16 ). ومع ذلك، كما هو الحال مع الأجيال السابقة، لا يمكن لتعليمات معالجة الإدخال/الإخراج السريعة الوصول إلا إلى أول 64 موقعًا لسجل الإدخال/الإخراج (أول 32 موقعًا لتعليمات البتات). باتباع سجلات الإدخال/الإخراج، تخصص سلسلة XMEGA نطاقًا يبلغ 4096 بايتًا لمساحة عنوان البيانات، والذي يمكن استخدامه اختياريًا لتعيين EEPROM الداخلية إلى مساحة عنوان البيانات (1000 16 –1FFF 16 ). يقع SRAM الفعلي بعد هذه النطاقات، بدءًا من 2000 16 .
منافذ GPIO
يحتوي كل منفذ GPIO على محرك AVR صغير أو كبير على ما يصل إلى ثمانية دبابيس ويتم التحكم فيه بواسطة ثلاثة سجلات 8 بت: DDR x و PORT x و PIN x ، حيث x هو معرف المنفذ.
- DDR x : سجل اتجاه البيانات، يقوم بتكوين الدبابيس كمدخلات أو مخرجات.
- PORT x : سجل منفذ الإخراج. يحدد قيمة الإخراج على الدبابيس التي تم تكوينها كمخرجات. يقوم بتمكين أو تعطيل مقاومة السحب على الدبابيس التي تم تكوينها كمدخلات.
- PIN x : سجل إدخال، يستخدم لقراءة إشارة إدخال. في بعض الأجهزة، يمكن استخدام هذا السجل لتبديل الدبابيس: كتابة رقم منطقي واحد إلى بت PIN x يبدل البت المقابل في PORT x ، بغض النظر عن إعداد بت DDR x . [10]
تحتوي أجهزة ATtiny AVR الأحدث، مثل ATtiny817 وأخواتها، على سجلات تحكم في المنفذ محددة بشكل مختلف إلى حد ما. تحتوي أجهزة xmegaAVR على سجلات إضافية لتكوينات الدفع/السحب، والعمود الطوطم، والسحب لأعلى.
ذاكرة إي إي بي آر أو إم
تحتوي جميع وحدات التحكم الدقيقة AVR تقريبًا على ذاكرة EEPROM داخلية لتخزين البيانات بشكل شبه دائم. ومثل ذاكرة الفلاش، يمكن لذاكرة EEPROM الاحتفاظ بمحتوياتها عند إزالة الطاقة الكهربائية.
في أغلب أشكال بنية AVR، لا يتم تعيين ذاكرة EEPROM الداخلية هذه في مساحة الذاكرة القابلة للعنونة في وحدة التحكم الدقيقة. ولا يمكن الوصول إليها إلا بنفس الطريقة التي يمكن بها الوصول إلى جهاز محيطي خارجي، باستخدام سجلات مؤشرات خاصة وتعليمات القراءة/الكتابة، مما يجعل الوصول إلى EEPROM أبطأ كثيرًا من ذاكرة الوصول العشوائي الداخلية الأخرى.
ومع ذلك، تستخدم بعض الأجهزة في عائلة SecureAVR (AT90SC) [11] تعيين EEPROM خاصًا للبيانات أو ذاكرة البرنامج، اعتمادًا على التكوين. تسمح عائلة XMEGA أيضًا بتعيين EEPROM في مساحة عنوان البيانات.
نظرًا لأن عدد عمليات الكتابة إلى EEPROM محدود - تحدد شركة Atmel 100000 دورة كتابة في أوراق البيانات الخاصة بها - فيجب أن تقارن روتين كتابة EEPROM المصمم جيدًا محتويات عنوان EEPROM بالمحتويات المطلوبة وأداء الكتابة الفعلية فقط إذا كان من الضروري تغيير المحتويات.
تنفيذ البرنامج
تتميز أجهزة التحكم الآلي من Atmel بتصميم خط أنابيب أحادي المستوى ومكون من مرحلتين . وهذا يعني أن التعليمات التالية للجهاز يتم جلبها أثناء تنفيذ التعليمات الحالية. تستغرق معظم التعليمات دورة ساعة واحدة أو دورتين فقط، مما يجعل أجهزة التحكم الآلي سريعة نسبيًا بين وحدات التحكم الدقيقة ذات الثماني بتات .
تم تصميم معالجات AVR مع وضع التنفيذ الفعال للكود C المترجم في الاعتبار، كما تحتوي على العديد من المؤشرات المضمنة للمهمة.
مجموعة التعليمات
إن مجموعة تعليمات AVR أكثر عمودية من تلك الموجودة في معظم وحدات التحكم الدقيقة ذات الثماني بتات، وخاصة وحدات التحكم الدقيقة 8051 ووحدات التحكم الدقيقة PIC التي تتنافس معها AVR اليوم. ومع ذلك، فهي ليست منتظمة تمامًا:
- تتمتع سجلات المؤشر X وY وZ بقدرات عنونة مختلفة عن بعضها البعض.
- تتمتع مواقع السجلات من R0 إلى R15 بقدرات توجيه أكثر محدودية من مواقع السجلات من R16 إلى R31.
- يمكن معالجة منافذ الإدخال/الإخراج من 0 إلى 31 بالبتات، على عكس منافذ الإدخال/الإخراج من 32 إلى 63.
- يؤثر CLR (مسح كل البتات إلى الصفر) على العلامات، بينما لا يؤثر SER (تعيين كل البتات إلى واحد)، على الرغم من أنهما تعليمات تكميلية. (CLR هي عملية شبه عملية لـ EOR R، R؛ بينما SER هي اختصار لـ LDI R،$FF. تعمل العمليات الحسابية مثل EOR على تعديل العلامات، بينما لا تفعل عمليات النقل/التحميل/التخزين/الفروع مثل LDI ذلك.)
- يتطلب الوصول إلى البيانات للقراءة فقط المخزنة في ذاكرة البرنامج (الفلاش) تعليمات LPM خاصة؛ أما ناقل الفلاش فيتم حجزه لذاكرة التعليمات.
بالإضافة إلى ذلك، تؤثر بعض الاختلافات الخاصة بالرقاقة على توليد التعليمات البرمجية. يبلغ طول مؤشرات التعليمات البرمجية (بما في ذلك عناوين الإرجاع على المكدس) بايتين على الرقاقات التي تحتوي على ذاكرة فلاش تصل إلى 128 كيلو بايت، ولكنها ثلاثة بايتات على الرقاقات الأكبر؛ لا تحتوي كل الرقاقات على مضاعفات أجهزة؛ تحتوي الرقاقات التي تحتوي على ذاكرة فلاش تزيد عن 8 كيلو بايت على تعليمات فرعية واستدعاء ذات نطاقات أطول؛ وهكذا.
تجعل مجموعة التعليمات المنتظمة في الغالب مُجمِّعات C (وحتى Ada) واضحة وفعَّالة إلى حدٍ ما. وقد تضمنت GCC دعم AVR لبعض الوقت، وهذا الدعم مستخدم على نطاق واسع. كما تحتوي LLVM على دعم AVR بدائي. في الواقع، طلبت Atmel مدخلات من كبار مطوري المُجمِّعات للميكروكنترولر الصغيرة، لتحديد ميزات مجموعة التعليمات الأكثر فائدة في مُجمِّع للغات عالية المستوى. [7]
سرعة وحدة التحكم الدقيقة
يمكن لخط AVR أن يدعم عادةً سرعات الساعة من 0 إلى 20 ميجا هرتز، مع وصول بعض الأجهزة إلى 32 ميجا هرتز. يتطلب التشغيل منخفض الطاقة عادةً سرعة ساعة منخفضة. تتميز جميع أجهزة AVR الحديثة (Tiny وMega وXmega، ولكن ليس 90S) بمذبذب على الشريحة، مما يزيل الحاجة إلى ساعات خارجية أو دوائر مرنان. تحتوي بعض أجهزة AVR أيضًا على مُقسّم مسبق لساعة النظام يمكنه تقسيم ساعة النظام إلى ما يصل إلى 1024. يمكن إعادة تكوين هذا المُقسّم المسبق بواسطة البرنامج أثناء وقت التشغيل، مما يسمح بتحسين سرعة الساعة.
نظرًا لأن جميع العمليات (باستثناء الضرب والجمع/الطرح 16 بت) على السجلات R0–R31 تتم بدورة واحدة، فإن AVR يمكن أن يحقق ما يصل إلى 1 MIPS لكل ميغا هرتز، أي أن المعالج بسرعة 8 ميغا هرتز يمكن أن يحقق ما يصل إلى 8 MIPS. تستغرق عمليات التحميل والتخزين من/إلى الذاكرة دورتين، وتستغرق التفرعات دورتين. تكون التفرعات في أحدث أجزاء "الكمبيوتر الشخصي ذي البايتات الثلاثة" مثل ATmega2560 أبطأ بدورة واحدة من الأجهزة السابقة.
تطوير
تتمتع أجهزة التحكم في المدخلات والمخرجات (AVR) بمتابعة كبيرة نظرًا لأدوات التطوير المجانية وغير المكلفة المتاحة، بما في ذلك لوحات التطوير ذات الأسعار المعقولة وبرامج التطوير المجانية. تُباع أجهزة التحكم في المدخلات والمخرجات (AVR) تحت أسماء مختلفة تشترك في نفس النواة الأساسية، ولكن مع مجموعات مختلفة من الأجهزة الطرفية والذاكرة. التوافق بين الرقائق في كل عائلة جيد إلى حد ما، على الرغم من أن ميزات وحدة التحكم في الإدخال/الإخراج قد تختلف.
انظر الروابط الخارجية للمواقع المتعلقة بتطوير AVR.
سمات
توفر أجهزة AVR مجموعة واسعة من الميزات:
- منافذ إدخال/إخراج متعددة الوظائف وثنائية الاتجاه للأغراض العامة مع مقاومات سحب مدمجة قابلة للتكوين
- مذبذبات داخلية متعددة، بما في ذلك مذبذب RC بدون أجزاء خارجية
- ذاكرة فلاش داخلية للتعليمات قابلة للبرمجة ذاتيًا تصل إلى 256 كيلو بايت (384 كيلو بايت على XMega)
- قابلة للبرمجة داخل النظام باستخدام واجهات خاصة منخفضة الجهد متسلسلة/متوازية أو JTAG
- قسم رمز التمهيد الاختياري مع أجزاء قفل مستقلة للحماية
- دعم تصحيح الأخطاء على الشريحة (OCD) من خلال JTAG أو debugWIRE على معظم الأجهزة
- يتم إرسال إشارات JTAG (TMS وTDI وTDO وTCK) بشكل متعدد على منافذ GPIO . يمكن تكوين هذه الدبابيس للعمل كـ JTAG أو GPIO حسب إعداد بت الصمامة ، والذي يمكن برمجته عبر ISP أو HVSP. بشكل افتراضي، تأتي أجهزة AVR التي تحتوي على JTAG مع تمكين واجهة JTAG.
- يستخدم debugWIRE دبوس /RESET كقناة اتصال ثنائية الاتجاه للوصول إلى دوائر التصحيح الموجودة على الشريحة. وهو موجود على الأجهزة ذات عدد الدبابيس الأقل، لأنه يتطلب دبوسًا واحدًا فقط.
- بيانات داخلية EEPROM تصل إلى 4 كيلوبايت
- ذاكرة SRAM داخلية تصل إلى 16 كيلوبايت (32 كيلوبايت على XMega)
- مساحة بيانات خارجية صغيرة بحجم 64 كيلوبايت على بعض الطرز، بما في ذلك Mega8515 وMega162.
- يتم وضع مساحة البيانات الخارجية فوق مساحة البيانات الداخلية، بحيث لا تظهر مساحة العنوان الكاملة 64 كيلو بايت على الناقل الخارجي، وسوف يصل الوصول إلى العنوان 0100 16 على سبيل المثال إلى ذاكرة الوصول العشوائي الداخلية، وليس الناقل الخارجي.
- في بعض أجهزة سلسلة XMega، تم تحسين مساحة البيانات الخارجية لدعم كل من SRAM وSDRAM. كما تم توسيع أنماط معالجة البيانات للسماح بمعالجة ما يصل إلى 16 ميجا بايت من ذاكرة البيانات بشكل مباشر.
- مؤقتات 8 بت و 16 بت
- مخرج PWM (تحتوي بعض الأجهزة على جهاز محيطي PWM معزز يتضمن مولد وقت ميت)
- التقاط الإدخال الذي يسجل طابعًا زمنيًا يتم تشغيله بواسطة حافة الإشارة
- المقارن التناظري
- محولات A/D ذات 10 أو 12 بت ، مع إرسال متعدد يصل إلى 16 قناة
- محولات رقمية إلى تناظرية 12 بت
- مجموعة متنوعة من الواجهات التسلسلية، بما في ذلك
- واجهة ثنائية الأسلاك متوافقة مع I²C (TWI)
- الأجهزة الطرفية التسلسلية المتزامنة/غير المتزامنة ( UART /USART) (تستخدم مع RS-232 و RS-485 والمزيد)
- ناقل واجهة الطرفية التسلسلي (SPI)
- الواجهة التسلسلية العالمية (USI): وحدة اتصال أجهزة متعددة الأغراض يمكن استخدامها لتنفيذ واجهة SPI، [12] I 2 C [13] [14] أو UART [15] .
- كشف انقطاع التيار الكهربائي
- مؤقت المراقبة (WDT)
- أوضاع نوم متعددة لتوفير الطاقة
- نماذج التحكم في الإضاءة والمحركات ( PWM -specific)
- دعم وحدة تحكم CAN
- دعم وحدة تحكم
USB
- أجهزة كاملة السرعة (12 ميجابت/ثانية) ووحدة تحكم محورية مع جهاز AVR مدمج.
- تتوفر أيضًا محاكاة مجانية لبرامج bitbanging منخفضة السرعة (1.5 ميجابت/ثانية) ( HID )
- دعم وحدة تحكم إيثرنت
- دعم وحدة تحكم LCD
- الأجهزة ذات الجهد المنخفض التي تعمل حتى 1.8 فولت (حتى 0.7 فولت للأجزاء التي تحتوي على محول تيار مستمر إلى تيار مستمر مدمج)
- أجهزة بيكو باور
- وحدات تحكم DMA واتصالات محيطية "لنظام الأحداث".
- دعم التشفير السريع لـ AES و DES
واجهات البرمجة
توجد العديد من الوسائل لتحميل كود البرنامج في شريحة AVR. وتختلف طرق برمجة شرائح AVR من عائلة AVR إلى أخرى. وتستخدم أغلب الطرق الموضحة أدناه خط RESET للدخول إلى وضع البرمجة. ومن أجل تجنب دخول الشريحة عن طريق الخطأ إلى هذا الوضع، يُنصح بتوصيل مقاومة سحب بين دبوس RESET ومصدر الطاقة الموجب. [16]
مزود خدمة الإنترنت

تتم عملية برمجة النظام (ISP) وظيفيًا من خلال SPI ، بالإضافة إلى بعض التعديلات على خط إعادة الضبط. طالما أن دبابيس SPI الخاصة بـ AVR غير متصلة بأي شيء مزعج، يمكن أن تظل شريحة AVR ملحومة على PCB أثناء إعادة البرمجة. كل ما هو مطلوب هو موصل بستة دبابيس ومحول برمجة. هذه هي الطريقة الأكثر شيوعًا للتطوير باستخدام AVR.
يتصل جهاز Atmel-ICE أو AVRISP mkII (الجهاز القديم) بمنفذ USB الخاص بالكمبيوتر ويقوم بإجراء برمجة داخل النظام باستخدام برنامج Atmel.
يعمل AVRDUDE (AVR Downloader/UploaDEr) على Linux و FreeBSD و Windows و Mac OS X ، ويدعم مجموعة متنوعة من أجهزة البرمجة داخل النظام، بما في ذلك Atmel AVRISP mkII وAtmel JTAG ICE ومبرمجي Atmel الأقدم المستندين إلى المنفذ التسلسلي ومختلف المبرمجين من جهات خارجية ومبرمجي "افعل ذلك بنفسك". [17]
مؤشر أسعار المستهلك
واجهة البرمجة والتصحيح (PDI) هي واجهة مملوكة لشركة Atmel للبرمجة الخارجية وتصحيح أخطاء أجهزة XMEGA على الشريحة. تدعم PDI البرمجة عالية السرعة لجميع مساحات الذاكرة غير المتطايرة (NVM)؛ الفلاش، وEEPROM، والصمامات، وبتات القفل وصف توقيع المستخدم. يتم ذلك عن طريق الوصول إلى وحدة تحكم XMEGA NVM من خلال واجهة PDI، وتنفيذ أوامر وحدة تحكم NVM. PDI عبارة عن واجهة ذات دبوسين تستخدم دبوس إعادة الضبط لإدخال الساعة (PDI_CLK) ودبوس بيانات مخصص (PDI_DATA) للإدخال والإخراج. [18]
UPDI
واجهة البرنامج والتصحيح الموحدة (UPDI) هي واجهة أحادية السلك للبرمجة الخارجية وتصحيح أخطاء الأجهزة ATtiny وATmega الأحدث. تتمتع Atmel-ICE وPICkit 4 بالقدرة على برمجة شرائح UPDI. من الممكن أيضًا استخدام Arduino بفضل jtag2updi، [19] أو محول USB-UART القياسي مع دبوس الإرسال والاستقبال المقطوع بواسطة مقاومة 1 كيلو أوم وأداة pymcuprog المقدمة من Microchip. [20]
تسلسل عالي الجهد
البرمجة التسلسلية عالية الجهد (HVSP) [21] هي في الغالب وضع النسخ الاحتياطي في أجهزة تنظيم الجهد التلقائي الأصغر حجمًا. لا تترك حزمة تنظيم الجهد التلقائي ذات الثمانية دبابيس العديد من مجموعات الإشارات الفريدة لوضع تنظيم الجهد التلقائي في وضع البرمجة. ومع ذلك، فإن إشارة 12 فولت هي شيء يجب أن يراه تنظيم الجهد التلقائي فقط أثناء البرمجة ولا يراه أبدًا أثناء التشغيل العادي. يمكن أيضًا استخدام وضع الجهد العالي في بعض الأجهزة حيث تم تعطيل دبوس إعادة الضبط بواسطة الصمامات.
الجهد العالي المتوازي
تعتبر البرمجة المتوازية ذات الجهد العالي (HVPP) "الملاذ الأخير" وقد تكون الطريقة الوحيدة لتصحيح إعدادات الصمامات السيئة على شريحة AVR.
محمل الإقلاع
يمكن لمعظم طرز AVR حجز منطقة محمل الإقلاع ، من 256 بايت إلى 4 كيلوبايت، حيث يمكن أن يوجد كود إعادة البرمجة. عند إعادة الضبط، يعمل محمل الإقلاع أولاً ويقوم ببعض التحديدات المبرمجة من قبل المستخدم سواء لإعادة البرمجة أو الانتقال إلى التطبيق الرئيسي. يمكن إعادة برمجة الكود من خلال أي واجهة متاحة، أو يمكنه قراءة ثنائي مشفر من خلال محول إيثرنت مثل PXE . لدى Atmel ملاحظات تطبيقية وكود يتعلق بالعديد من واجهات الناقل. [22] [23] [24] [25]
ذاكرة للقراءة فقط
تتوفر سلسلة AT90SC من أجهزة AVR مع ذاكرة ROM قناعية مصنعية بدلاً من فلاش لذاكرة البرنامج. [26] ونظرًا للتكلفة الأولية الكبيرة وكمية الطلب الدنيا، فإن ذاكرة ROM القناعية فعالة من حيث التكلفة فقط في عمليات الإنتاج العالية.
أوير
aWire هي واجهة تصحيح أخطاء جديدة أحادية السلك متاحة على أجهزة UC3L AVR32 الجديدة.
تصحيح أخطاء الواجهات
يوفر AVR عدة خيارات لتصحيح الأخطاء، والتي تتضمن في الغالب تصحيح الأخطاء على الشريحة أثناء وجود الشريحة في النظام المستهدف.
تصحيح الأسلاك
debugWIRE هو حل Atmel لتوفير إمكانيات تصحيح الأخطاء على الشريحة من خلال دبوس واحد من متحكم دقيق. وهو مفيد بشكل خاص للأجزاء ذات عدد الدبابيس الأقل والتي لا يمكنها توفير الدبابيس "الاحتياطية" الأربعة اللازمة لـ JTAG. تدعم JTAGICE mkII وmkIII وAVR Dragon debugWIRE. تم تطوير debugWIRE بعد إصدار JTAGICE الأصلي، والآن تدعمه النسخ المستنسخة.
جيه تي أي جي
توفر ميزة مجموعة عمل الاختبار المشترك ( JTAG ) إمكانية الوصول إلى وظيفة تصحيح الأخطاء على الشريحة أثناء تشغيل الشريحة في النظام المستهدف. [27] تسمح JTAG بالوصول إلى الذاكرة الداخلية والسجلات، وتعيين نقاط توقف على الكود، والتنفيذ بخطوة واحدة لمراقبة سلوك النظام.
توفر شركة Atmel سلسلة من محولات JTAG لجهاز AVR:
- يعد Atmel-ICE [28] أحدث محول. وهو يدعم واجهات JTAG وdebugWire وaWire وSPI وTPI وPDI.
- JTAGICE 3 [29] هو مصحح أخطاء متوسط المدى في عائلة JTAGICE (JTAGICE mkIII). وهو يدعم واجهات JTAG وaWire وSPI وPDI.
- يحل JTAGICE mkII [30] محل JTAGICE وهو بنفس السعر. يتصل JTAGICE mkII بالكمبيوتر الشخصي عبر USB، ويدعم كل من JTAG وواجهة debugWIRE الأحدث. بدأ شحن العديد من النسخ المستنسخة من جهاز Atmel JTAGICE mkII من جهات خارجية بعد أن أصدرت Atmel بروتوكول الاتصال. [31]
- يعد AVR Dragon [32] بديلاً منخفض التكلفة (حوالي 50 دولارًا) لـ JTAGICE mkII لأجزاء مستهدفة معينة. يوفر AVR Dragon برمجة تسلسلية داخل النظام وبرمجة تسلسلية عالية الجهد وبرمجة متوازية، بالإضافة إلى محاكاة JTAG أو debugWIRE للأجزاء التي تحتوي على 32 كيلو بايت من ذاكرة البرنامج أو أقل. غيرت ATMEL ميزة تصحيح أخطاء AVR Dragon بأحدث البرامج الثابتة لـ AVR Studio 4 - AVR Studio 5 والآن يدعم الأجهزة التي تزيد عن 32 كيلو بايت من ذاكرة البرنامج.
- تتصل محولات JTAGICE بالكمبيوتر الشخصي عبر منفذ تسلسلي قياسي. [33] وعلى الرغم من إعلان شركة Atmel عن انتهاء صلاحية محولات JTAGICE ، إلا أنها لا تزال مدعومة في AVR Studio والأدوات الأخرى.
يمكن أيضًا استخدام JTAG لإجراء اختبار مسح الحدود ، [34] والذي يختبر التوصيلات الكهربائية بين أجهزة تنظيم الجهد التلقائي والرقائق الأخرى القادرة على مسح الحدود في النظام. يعد مسح الحدود مناسبًا تمامًا لخط الإنتاج، بينما من الأفضل للهواة إجراء الاختبار باستخدام مقياس متعدد أو منظار الذبذبات.
أدوات التطوير ومجموعات التقييم

تحتوي أدوات تطوير وتقييم Atmel AVR الرسمية على عدد من مجموعات البدء وأدوات التصحيح مع دعم لمعظم أجهزة AVR:
طقم البدء STK600
مجموعة البدء ونظام التطوير STK600 عبارة عن تحديث لـ STK500. [35] يستخدم STK600 لوحة أساسية ولوحة توجيه إشارة ولوحة هدف.
اللوحة الأساسية مشابهة للوحة STK500، حيث توفر مصدر طاقة، وساعة، وبرمجة داخل النظام، ومنفذ RS-232 ومنفذ CAN (شبكة منطقة التحكم، معيار السيارات) عبر موصلات DE9، ودبابيس تثبيت لجميع إشارات GPIO من الجهاز المستهدف.
تحتوي اللوحات المستهدفة على مقابس ZIF لحزم DIP أو SOIC أو QFN أو QFP ، اعتمادًا على اللوحة.
توجد لوحة توجيه الإشارة بين اللوحة الأساسية ولوحة الهدف، وتوجه الإشارات إلى الدبوس المناسب على لوحة الجهاز. هناك العديد من لوحات توجيه الإشارة المختلفة التي يمكن استخدامها مع لوحة هدف واحدة، اعتمادًا على الجهاز الموجود في مقبس ZIF.
يتيح لك STK600 برمجة النظام من الكمبيوتر الشخصي عبر USB، مما يترك منفذ RS-232 متاحًا لوحدة التحكم الدقيقة المستهدفة. يمكن لرأس التوصيل رباعي السنون الموجود على STK600 والمسمى "RS-232 احتياطي" توصيل أي منفذ USART بمستوى TTL على الشريحة بشريحة MAX232 مدمجة لترجمة الإشارات إلى مستويات RS-232. يتم توصيل إشارات RS-232 بدبابيس RX وTX وCTS وRTS على موصل DB-9.
مجموعة أدوات البدء STK500
تتميز مجموعة البدء ونظام التطوير STK500 ببرمجة ISP والجهد العالي (HVP) لجميع أجهزة AVR، إما بشكل مباشر أو من خلال لوحات التمديد. تم تجهيز اللوحة بمقابس DIP لجميع أجهزة AVR المتوفرة في حزم DIP.
وحدات التوسعة STK500: تتوفر عدة وحدات توسعة للوحة STK500:
- STK501 – إضافة دعم لوحدات التحكم الدقيقة في حزم TQFP ذات 64 سنًا.
- STK502 – يضيف الدعم لأجهزة LCD AVR في حزم TQFP ذات 64 سنًا.
- STK503 – إضافة دعم لوحدات التحكم الدقيقة في حزم TQFP ذات 100 سن.
- STK504 – يضيف الدعم لأجهزة LCD AVR في حزم TQFP ذات 100 سن.
- STK505 – يضيف الدعم لأجهزة AVR ذات 14 و20 دبوسًا.
- STK520 – يضيف الدعم لوحدات التحكم الدقيقة ذات 14 و20 و32 سنًا من عائلة AT90PWM وATmega.
- STK524 – يضيف الدعم لعائلة ATmega32M1/C1 32-pin CAN/LIN/Motor Control.
- STK525 – يضيف الدعم لوحدات التحكم الدقيقة AT90USB في حزم TQFP ذات 64 سنًا.
- STK526 – يضيف الدعم لوحدات التحكم الدقيقة AT90USB في حزم TQFP ذات 32 سنًا.
مجموعة أدوات البدء STK200
تحتوي مجموعة البدء ونظام التطوير STK200 على مقبس DIP يمكنه استضافة شريحة AVR في حزمة مكونة من 40 أو 20 أو 8 دبابيس. تحتوي اللوحة على مصدر ساعة 4 ميجا هرتز، و8 مصابيح LED ، و8 أزرار إدخال، ومنفذ RS-232 ، ومقبس لذاكرة SRAM سعة 32 كيلو بايت والعديد من منافذ الإدخال والإخراج العامة. يمكن برمجة الشريحة باستخدام دونجل متصل بالمنفذ الموازي.
| رقاقة | حجم الفلاش | ذاكرة إي إي بي آر أو إم | سرام | التردد [ميجا هرتز] |
طَرد |
|---|---|---|---|---|---|
| ايه تي 90 اس 1200 | 1 كيلو بايت | 64 ب | 0 ب | 12 | خطة عمل التنمية الاقتصادية رقم 20 |
| ايه تي 90 اس 2313 | 2 كيلوبايت | 128 ب | 128 ب | 10 | خطة عمل التنمية الاقتصادية رقم 20 |
| AT90S/LS2323 | 2 كيلوبايت | 128 ب | 128 ب | 10 | خطة عمل التنمية الاقتصادية رقم 8 |
| AT90S/LS2343 | 2 كيلوبايت | 128 ب | 128 ب | 10 | خطة عمل التنمية الاقتصادية رقم 8 |
| AT90S4414 | 4 كيلو بايت | 256 ب | 256 ب | 8 | بي دي آي بي-40 |
| AT90S/LS4434 | 4 كيلو بايت | 256 ب | 256 ب | 8 | بي دي آي بي-40 |
| AT90S8515 | 8 كيلو بايت | 512 ب | 512 ب | 8 | بي دي آي بي-40 |
| AT90S/LS8535 | 8 كيلو بايت | 512 ب | 512 ب | 8 | بي دي آي بي-40 |
أتميل-ICE
يعد Atmel ICE أداة غير مكلفة مدعومة حاليًا لبرمجة وتصحيح أخطاء جميع أجهزة AVR (على عكس AVRISP/AVRISP mkII وDragon وما إلى ذلك التي تمت مناقشتها أدناه). يتصل ويستقبل الطاقة من جهاز كمبيوتر عبر USB، ويدعم واجهات JTAG و PDI و aWire و debugWIRE و SPI و SWD وTPI وUPDI (واجهة Microchip Unified Program and Debug).
يمكن لـ ICE برمجة وتصحيح أخطاء جميع أجهزة AVR عبر واجهة JTAG، وبرمجتها باستخدام واجهات إضافية كما هو مدعوم على كل جهاز:
- أجهزة AVR XMEGA 8 بت عبر واجهة PDI ثنائية الأسلاك
- أجهزة 8 بت megaAVR وtinyAVR عبر SPI لجميع الأجهزة التي تدعم OCD (مصحح الأخطاء على الشريحة)
- وحدات تحكم صغيرة AVR ذات 8 بتات مع دعم TPI
- وحدات تحكم دقيقة تعتمد على Arm Cortex-M ذات 32 بت من SAM عبر SWD
يتم دعم نطاقات جهد التشغيل المستهدفة من 1.62 فولت إلى 5.5 فولت بالإضافة إلى نطاقات الساعة التالية:
- يدعم ترددات ساعة JTAG وPDI من 32 كيلو هرتز إلى 7.5 ميجا هرتز
- يدعم معدلات نقل البيانات من aWire من 7.5 كيلوبت/ثانية إلى 7 ميجابت/ثانية
- يدعم معدلات نقل البيانات debugWIRE من 4 كيلوبت/ثانية إلى 0.5 ميجابت/ثانية
- يدعم ترددات ساعة SPI من 8 كيلو هرتز إلى 5 ميجا هرتز
- يدعم ترددات ساعة SWD من 32 كيلو هرتز إلى 2 ميجا هرتز
يتم دعم ICE بواسطة Microchip Studio IDE، بالإضافة إلى واجهة سطر الأوامر (atprogram).
يدعم Atmel-ICE تنفيذًا محدودًا لواجهة بوابة البيانات (DGI) عندما لا تكون ميزات التصحيح والبرمجة قيد الاستخدام. واجهة بوابة البيانات هي واجهة لبث البيانات من جهاز مستهدف إلى الكمبيوتر المتصل. الغرض من ذلك هو أن تكون بمثابة ملحق مفيد للوحدة للسماح بعرض ميزات التطبيق وكمساعد في تصحيح أخطاء مستوى التطبيق.
AVRISP و AVRISP mkII

تعد AVRISP و AVRISP mkII أدوات غير مكلفة تسمح ببرمجة جميع أجهزة التحكم في الجهد الكهربي (AVRs) عبر ICSP .
يتصل AVRISP بجهاز كمبيوتر عبر منفذ تسلسلي ويستمد الطاقة من النظام المستهدف. يسمح AVRISP باستخدام أي من موصلات ICSP "القياسية"، إما الموصل ذي العشرة دبابيس أو الموصل ذي الستة دبابيس.
يتصل جهاز AVRISP mkII بجهاز كمبيوتر عبر USB ويستمد الطاقة من USB. تشير مصابيح LED المرئية عبر العلبة الشفافة إلى حالة الطاقة المستهدفة.
نظرًا لأن AVRISP mkII يفتقر إلى دوائر متكاملة للتشغيل/الذاكرة المؤقتة، [36] فقد يواجه صعوبة في برمجة لوحات الهدف ذات الأحمال المتعددة على خطوط SPI الخاصة به. في مثل هذه الحالات، يلزم وجود مبرمج قادر على توفير تيار أكبر. بدلاً من ذلك، لا يزال من الممكن استخدام AVRISP mkII إذا كان من الممكن وضع مقاومات تحديد الحمل ذات القيمة المنخفضة (~150 أوم) على خطوط SPI قبل كل جهاز محيطي.
تم الآن إيقاف إنتاج كل من AVRISP وAVRISP mkII، وتم إزالة صفحات المنتج من موقع Microchip على الويب. اعتبارًا من يوليو 2019، لا يزال AVRISP mkII متوفرًا لدى عدد من الموزعين. كما يتوفر عدد من النسخ المستنسخة من جهات خارجية.
AVR التنين

يعتبر Atmel Dragon أداة غير مكلفة تتصل بجهاز كمبيوتر عبر USB. يمكن لـ Dragon برمجة جميع أجهزة AVR عبر JTAG أو HVP أو PDI [37] أو ICSP. كما يسمح Dragon بتصحيح أخطاء جميع أجهزة AVR عبر JTAG أو PDI أو debugWire؛ تمت إزالة القيد السابق على الأجهزة التي تحتوي على ذاكرة برنامج 32 كيلوبايت أو أقل في AVR Studio 4.18. [38] يحتوي Dragon على منطقة نموذجية صغيرة يمكنها استيعاب جهاز AVR ذي 8 أو 28 أو 40 سنًا، بما في ذلك التوصيلات بدبابيس الطاقة والبرمجة. لا توجد مساحة لأي دوائر إضافية، على الرغم من أنه يمكن توفير ذلك بواسطة منتج تابع لجهة خارجية يسمى "Dragon Rider". [39]
جتاجيس
تدعم أداة تصحيح أخطاء JTAG In Circuit Emulator (JTAGICE) تصحيح أخطاء أجهزة AVR التي تحتوي على واجهة JTAG. تستخدم أداة JTAGICE الأصلية (والتي يشار إليها أحيانًا بأثر رجعي باسم JTAGICE mkI) واجهة RS-232 للكمبيوتر الشخصي ولا يمكنها برمجة أجهزة AVR التي تحتوي على واجهة JTAG إلا. لم تعد أداة JTAGICE mkI في الإنتاج، ولكن تم استبدالها بأداة JTAGICE mkII.
جيتاجيس mkII
تدعم أداة تصحيح الأخطاء JTAGICE mkII تصحيح الأخطاء على الشريحة (OCD) لمنظمي التيار المتردد باستخدام واجهات SPI وJTAG وPDI وdebugWIRE. تتيح واجهة debugWire تصحيح الأخطاء باستخدام دبوس واحد فقط (دبوس إعادة الضبط)، مما يسمح بتصحيح أخطاء التطبيقات التي تعمل على وحدات تحكم دقيقة ذات عدد دبابيس منخفض.
يتصل JTAGICE mkII باستخدام USB، ولكن هناك اتصال بديل عبر منفذ تسلسلي، والذي يتطلب استخدام مصدر طاقة منفصل. بالإضافة إلى JTAG، يدعم mkII برمجة ISP (باستخدام محولات 6 أو 10 دبابيس). يستخدم كل من وصلات USB والتسلسلية نسخة من بروتوكول STK500.
جيتاجيس3
يقوم JTAGICE3 بتحديث mkII بقدرات تصحيح أخطاء أكثر تقدمًا وبرمجة أسرع. يتم توصيله عبر USB ويدعم واجهات JTAG وaWire وSPI وPDI. [40] تتضمن المجموعة عدة محولات للاستخدام مع معظم موصلات الواجهة.
أڤر واحد!
يعد AVR ONE! أداة تطوير احترافية لجميع أجهزة Atmel AVR ذات 8 بت و32 بت مع إمكانية التصحيح على الشريحة. وهو يدعم أوضاع البرمجة SPI وJTAG وPDI وaWire والتصحيح باستخدام واجهات debugWIRE وJTAG وPDI وaWire. [41]
لوحة عرض الفراشة

لوحة العرض AVR Butterfly الشهيرة جدًا عبارة عن كمبيوتر مستقل يعمل بالبطارية يعمل بوحدة التحكم الدقيقة Atmel AVR ATmega169V. تم تصميمها لعرض عائلة AVR، وخاصة واجهة LCD المدمجة الجديدة آنذاك. تتضمن اللوحة شاشة LCD وعصا التحكم ومكبر الصوت والمنفذ التسلسلي وساعة الوقت الحقيقي (RTC) وشريحة ذاكرة فلاش ومستشعرات درجة الحرارة والجهد. تحتوي الإصدارات السابقة من AVR Butterfly أيضًا على مقاومة ضوئية CdS ؛ وهي غير موجودة في لوحات Butterfly المنتجة بعد يونيو 2006 للسماح بالامتثال لـ RoHS . [42] تحتوي اللوحة الصغيرة على دبوس قميص على ظهرها حتى يمكن ارتداؤها كشارة اسم.
يأتي جهاز AVR Butterfly محملاً مسبقًا ببرنامج لإظهار قدرات المتحكم الدقيق. يمكن للبرامج الثابتة للمصنع تمرير اسمك وعرض قراءات المستشعر وإظهار الوقت. يحتوي جهاز AVR Butterfly أيضًا على محول كهربائي ضغطي يمكن استخدامه لإعادة إنتاج الأصوات والموسيقى.
يوضح AVR Butterfly تشغيل شاشة LCD من خلال تشغيل شاشة عرض مكونة من 14 جزءًا وستة أحرف أبجدية رقمية. ومع ذلك، تستهلك واجهة LCD العديد من دبابيس الإدخال/الإخراج.
تبلغ سرعة وحدة المعالجة المركزية ATmega169 في Butterfly 8 ميجا هرتز، ولكن تم ضبطها بواسطة برنامج المصنع على 2 ميجا هرتز للحفاظ على عمر بطارية الزر. يسمح برنامج محمل التشغيل المثبت مسبقًا بإعادة برمجة اللوحة عبر موصل تسلسلي RS-232 قياسي ببرامج جديدة يمكن للمستخدمين كتابتها باستخدام أدوات Atmel IDE المجانية.
مفتاح AT90USB
يبلغ سعر هذه اللوحة الصغيرة، التي يبلغ حجمها نصف حجم بطاقة العمل، أكثر قليلاً من سعر AVR Butterfly. وهي تتضمن AT90USB1287 مع دعم USB On-The-Go (OTG)، و16 ميجابايت من ذاكرة DataFlash ، ومصابيح LED، وعصا تحكم صغيرة، ومستشعر درجة الحرارة. تتضمن اللوحة برنامجًا يسمح لها بالعمل كجهاز تخزين USB ضخم (يتم شحن وثائقه على DataFlash)، وعصا تحكم USB، والمزيد. لدعم إمكانية استضافة USB، يجب تشغيلها من بطارية، ولكن عند تشغيلها كجهاز محيطي USB، فهي تحتاج فقط إلى الطاقة المقدمة عبر USB.
يستخدم منفذ JTAG فقط موصلات توصيل تقليدية مقاس 2.54 مم. تتطلب جميع منافذ الإدخال والإخراج الأخرى الخاصة بـ AVR موصلات توصيل أصغر مقاس 1.27 مم.
يمكن لـ AVR Dragon برمجة وتصحيح الأخطاء منذ إزالة حد 32 كيلوبايت في AVR Studio 4.18، كما أن JTAGICE mkII قادر على برمجة وتصحيح أخطاء المعالج. يمكن أيضًا برمجة المعالج عبر USB من مضيف Windows أو Linux، باستخدام بروتوكولات "تحديث البرامج الثابتة للجهاز" عبر USB. تقوم Atmel بشحن برامج أمثلة خاصة (مضمنة في الكود المصدري ولكن توزيعها مقيد) ومجموعة بروتوكولات USB مع الجهاز.
LUFA [43] عبارة عن مجموعة بروتوكولات USB مجانية من جهة خارجية ( ترخيص MIT ) لجهاز USBKey وأجهزة USB AVRs الأخرى ذات 8 بت.
مجموعة الغراب اللاسلكية
تدعم مجموعة RAVEN التطوير اللاسلكي باستخدام شرائح Atmel IEEE 802.15.4 ، لـ Zigbee وغيرها من مجموعات الأجهزة اللاسلكية. وهي تشبه زوجًا من بطاقات Butterfly اللاسلكية الأكثر قوة، بالإضافة إلى USBKey اللاسلكية؛ وتكلف حوالي هذا المبلغ (أقل من 100 دولار أمريكي). تدعم كل هذه اللوحات التطوير القائم على JTAG.
تتضمن المجموعة لوحتين AVR Raven، كل منهما مزود بجهاز إرسال واستقبال 2.4 جيجاهرتز يدعم IEEE 802.15.4 (ومكدس Zigbee مرخص بحرية). يتم تشغيل أجهزة الراديو بواسطة معالجات ATmega1284p، والتي تدعمها شاشة LCD مجزأة مخصصة تعمل بواسطة معالج ATmega3290p. تشبه الأجهزة الطرفية Raven Butterfly: مكبر صوت piezo، وDataFlash (أكبر)، وEEPROM خارجي، وأجهزة استشعار، وبلورة 32 كيلوهرتز لـ RTC ، وما إلى ذلك. وهي مخصصة للاستخدام في تطوير عقد الاستشعار عن بعد، للتحكم في المرحلات، أو أي شيء مطلوب.
تستخدم عصا USB AT90USB1287 للاتصال بجهاز مضيف USB والروابط اللاسلكية بتردد 2.4 جيجاهرتز. والغرض من هذه الاتصالات هو مراقبة العقد البعيدة والتحكم فيها، بالاعتماد على طاقة المضيف بدلاً من البطاريات المحلية.
مبرمجو الطرف الثالث
تتوفر مجموعة كبيرة ومتنوعة من أدوات البرمجة وتصحيح الأخطاء من جهات خارجية لمنظم الاستجابة التلقائية. تستخدم هذه الأجهزة واجهات مختلفة، بما في ذلك RS-232 ومنفذ الكمبيوتر الموازي وUSB. [44]
الاستخدامات

تم استخدام أجهزة تنظيم الجهد التلقائي في تطبيقات السيارات المختلفة مثل أنظمة الأمن والسلامة وتروس نقل الحركة والترفيه. أطلقت شركة Atmel مؤخرًا إصدارًا جديدًا بعنوان "Atmel Automotive Compilation" لمساعدة المطورين في تطبيقات السيارات. بعض الاستخدامات الحالية موجودة في BMW وDaimler-Chrysler وTRW.
تعتمد منصة الحوسبة الفيزيائية Arduino على متحكم ATmega328 ( ATmega168 أو ATmega8 في إصدارات اللوحة الأقدم من Diecimila). كما تم استخدام ATmega1280 وATmega2560، مع المزيد من إمكانيات التوصيل والذاكرة، لتطوير منصة Arduino Mega . يمكن استخدام لوحات Arduino مع لغتها و IDE ، أو مع بيئات برمجة أكثر تقليدية ( C ، التجميع ، إلخ) كمنصات AVR موحدة ومتاحة على نطاق واسع.
تم استخدام أجهزة التحكم AVR المستندة إلى USB في وحدات التحكم اليدوية الخاصة بـ Xbox من Microsoft. الرابط بين وحدات التحكم و Xbox هو USB.
تنتج العديد من الشركات لوحات متحكم دقيقة تعتمد على AVR مخصصة للاستخدام من قبل الهواة وبناة الروبوتات والمجربين ومطوري الأنظمة الصغيرة بما في ذلك: Cubloc، [45] gnusb، [46] BasicX ، [47] Oak Micros، [48] ZX Microcontrollers، [49] وmyAVR. [50] يوجد أيضًا مجتمع كبير من اللوحات المتوافقة مع Arduino والتي تدعم مستخدمين مشابهين.
كانت شركة Schneider Electric تنتج محرك M3000 وشريحة التحكم في الحركة، والتي تتضمن نواة Atmel AVR ووحدة تحكم حركة متقدمة للاستخدام في مجموعة متنوعة من تطبيقات الحركة ولكن تم إيقاف هذا الإنتاج. [51]
استنساخات FPGA
مع تزايد شعبية وحدات FPGA بين مجتمع المصادر المفتوحة، بدأ الناس في تطوير معالجات مفتوحة المصدر متوافقة مع مجموعة تعليمات AVR. يسرد موقع OpenCores الإلكتروني مشاريع استنساخ AVR الرئيسية التالية:
- يهدف pAVR، [52] المكتوب بلغة VHDL ، إلى إنشاء أسرع معالج AVR وذو أقصى قدر من الميزات، من خلال تنفيذ تقنيات غير موجودة في معالج AVR الأصلي مثل خطوط الأنابيب العميقة.
- avr_core، [53] المكتوب بلغة VHDL ، هو استنساخ يهدف إلى أن يكون أقرب ما يمكن إلى ATmega103.
- Navré، [54] المكتوبة بلغة Verilog ، تنفذ جميع تعليمات Classic Core وتهدف إلى تحقيق أداء عالٍ واستخدام موارد منخفض. ولا تدعم المقاطعات .
- softavrcore، [55] المكتوبة في Verilog ، تنفذ تعليمات AVR التي تم إعدادها حتى AVR5، وتدعم المقاطعات جنبًا إلى جنب مع إقرار المقاطعة التلقائي الاختياري، وتوفير الطاقة عبر وضع السكون بالإضافة إلى بعض واجهات الأجهزة الطرفية ومسرعات الأجهزة (مثل UART و SPI ووحدة حساب فحص التكرار الدوري ومؤقتات النظام ). توضح هذه الأجهزة الطرفية كيف يمكن توصيلها وتكوينها لهذا النواة. داخل الحزمة، يتوفر أيضًا منفذ FreeRTOS كامل الميزات كمثال لاستخدام النواة + الأجهزة الطرفية.
- يشرح محاضرة مشروع opencores CPU [56] المكتوبة بلغة VHDL بواسطة الدكتور يورجن ساويرمان بالتفصيل كيفية تصميم نظام كامل قائم على AVR على شريحة (SoC).
بائعين آخرين
بالإضافة إلى الرقائق المصنعة بواسطة Atmel، تتوفر نسخ طبق الأصل من LogicGreen Technologies. [57] هذه الأجزاء ليست نسخ طبق الأصل تمامًا - فهي تحتوي على بعض الميزات غير الموجودة في الرقائق التي تعد "نسخًا طبق الأصل" منها، وسرعات ساعة قصوى أعلى، ولكنها تستخدم SWD ( Serial Wire Debug ، وهو أحد أشكال JTAG من ARM ) بدلاً من ISP للبرمجة، لذلك يجب استخدام أدوات برمجة مختلفة.
يتم تصنيع وحدات التحكم الدقيقة التي تستخدم بنية ATmega بواسطة NIIET في فورونيج ، روسيا، كجزء من سلسلة 1887 من الدوائر المتكاملة. يتضمن هذا ATmega128 تحت تسمية 1887VE7T ( بالروسية : 1887ВЕ7Т ). [58]
مراجع
- ^ منذ عام 1996، أصبحت NTH جزءًا من الجامعة النرويجية للعلوم والتكنولوجيا (NTNU)
- ^ مدونة alfbogen.com
- ^ تم أرشفته في Ghostarchive وWayback Machine: "قصة AVR". youtube.com.
- ^ "UNSW School of Computer Science and Engineering - General AVR Info". Cse.unsw.edu.au. مؤرشف من الأصل في 2012-06-23 . تم الاسترجاع في 2012-09-19 .
- ^ مقدمة عن Atmel ووحدة التحكم الدقيقة AVR [ رابط ميت دائم ]
- ^ "الأنظمة المضمنة ووحدات التحكم الدقيقة" (PDF) . مؤرشف من الأصل (PDF) في 2004-12-24 . تم الاسترجاع 2018-10-01 .
- ^ ab Myklebust, Gaute. The AVR Microcontroller and C Compiler Co-Design (PDF) . Atmel Norway. CiteSeerX 10.1.1.63.1447 . تم الاسترجاع في 2012-09-19 .
- ^ بيان صحفي لشركة Atmel. "شحن 500 مليون وحدة من متحكم AVR من Atmel".
- ^ دائرة متكاملة قابلة للبرمجة على مستوى النظام. محفوظ في 2012-11-27 على موقع واي باك مشين .
- ^ atmel.com
- ^ دوائر متكاملة لبطاقات Atmel الذكية
- ^ "AVR319: استخدام وحدة USI للاتصال عبر SPI" (PDF) . Atmel . 2004. مؤرشف من الأصل (PDF) في 2012-06-17 . تم استرجاعه في 10 يونيو 2014 .
- ^ "Atmel AVR310: استخدام وحدة USI كوحدة رئيسية I2C" (PDF) . Atmel . 2013. مؤرشف من الأصل (PDF) في 2014-07-14 . تم الاسترجاع في 10 يونيو 2014 .
- ^ "AVR312: استخدام وحدة USI كجهاز تابع لـ I2C" (PDF) . Atmel . 2005. مؤرشف من الأصل (PDF) في 2014-07-14 . تم الاسترجاع في 10 يونيو 2014 .
- ^ "AVR307: Half Duplex UART Using the USI Module" (PDF) . Atmel . 2003. مؤرشف من الأصل (PDF) في 2014-07-14 . تم الاسترجاع في 10 يونيو 2014 .
- ^ "اعتبارات تصميم أجهزة AVR" (PDF) (ملاحظة التطبيق). شركة Atmel. يونيو 2015. ص. 5. مؤرشف (PDF) من الأصل في 2014-12-22 . تم الاسترجاع في 14 يونيو 2015 .
يحتوي خط إعادة الضبط على مقاومة سحب داخلية، ولكن إذا كانت البيئة صاخبة فقد تكون غير كافية وبالتالي يمكن أن تحدث إعادة الضبط بشكل متقطع.
- ^ "مبرمج AVRDUDE". Savannah.nongnu.org . تم الاسترجاع في 2012-09-19 .
- ^ "برنامج تشغيل برمجة PDI" (PDF) . مؤرشف من الأصل (PDF) في 2020-03-25 . تم الاسترجاع في 2012-09-19 .
- ^ "GitHub - ElTangas/Jtag2updi: برنامج برمجة UPDI لـ Arduino (يستهدف Tiny AVR-0/1/2 وMega AVR-0 وAVR-DA/DB MCUs)". GitHub . 17 ديسمبر 2021.
- ^ "pymcuprog - Python MCU Programmer". Github . Microchip PIC&AVR Tools. 13 نوفمبر 2022 . تم الاسترجاع في 18 نوفمبر 2022 .
- ^ "HVSP_Description". Support.atmel.no. مؤرشف من الأصل في 2009-10-12 . تم الاسترجاع في 2012-09-19 .
- ^ "DES-encrypted AVR Bootloader" (PDF) . مؤرشف من الأصل (PDF) في 2005-05-16 . تم استرجاعه في 2012-09-19 .
- ^ "AES-encrypted AVR Bootloader" (PDF) . تم الاسترجاع في 2012-09-19 .
- ^ "XMEGA Bootloader" (PDF) . تم الاسترجاع في 2012-09-19 .
- ^ "AVR USB Bootloader" (PDF) . مؤرشف من الأصل (PDF) في 2006-06-28 . تم استرجاعه في 2012-09-19 .
- ^ "وحدات التحكم الفلاشية ذاتية البرمجة من Atmel" (PDF) . تم الاسترجاع في 12 مارس 2020 .
- ^ "دليل لفهم JTAG وصمامات الأمان في AVR" . تم الاسترجاع في 2012-09-19 .[ رابط ميت دائم ]
- ^ "Atmel-ICE - Atmel Corporation". Atmel.com . تم الاسترجاع في 2015-09-11 .
- ^ "JTAGICE 3- Atmel Corporation". Atmel.com . تم الاسترجاع في 2012-09-19 .
- ^ "AVR JTAGICE mkII". Atmel . مؤرشف من الأصل في 15 فبراير 2013 . تم الاسترجاع 13 يناير 2013 .
- ^ "JTAGICE mkII Communication Protocol" (PDF) . مؤرشف من الأصل (PDF) في 2005-05-16 . تم استرجاعه في 2012-09-19 .
- ^ "AVR Dragon". Atmel . تم الاسترجاع في 13 يناير 2013 .
- ^ "دليل مستخدم AVR JTAGICE mkII" (PDF) . microchip.com . مؤرشف من الأصل (PDF) في 2017-07-02 . تم الاسترجاع في 25 مارس 2020 .
- ^ بيان صحفي صادر عن JTAGICE، 2004. محفوظ في 2011-07-07 على موقع Wayback Machine
- ^ "STK600". Atmel . مؤرشف من الأصل في 15 فبراير 2013 . تم الاسترجاع 13 يناير 2013 .
- ^ "AVRISP mkII Disassembled". مؤرشف من الأصل في 2014-11-08 . تم الاسترجاع في 2014-11-08 .
- ^ "AVR1005: البدء باستخدام XMEGA، الصفحة 7" (PDF) . Atmel. مؤرشف من الأصل (PDF) في 2009-10-07 . تم الاسترجاع في 7 نوفمبر 2011 .
- ^ "ملاحظات إصدار AVR Studio v4.18" . تم الاسترجاع في 2012-09-19 .
- ^ "ECROS Technology - Dragon Rider". Ecrostech.com. 2008-03-02 . تم الاسترجاع في 2012-09-19 .
- ^ صفحة منتج JTAGICE3
- ^ صفحة منتج AVR ONE!
- ^ AVR الفراشة
- ^ "LUFA (سابقًا MyUSB)". حجرة ذات أربعة جدران . تم استرجاعها في 2012-09-19 .
- ^ انظر avrffreaks.net للحصول على قائمة شاملة.
- ^ "Comfile Technology". Comfile Technology, Inc. مؤرشف من الأصل في 17 يناير 2013. تم الاسترجاع 13 يناير 2013 .
- ^ "gnusb: Open Source USB Sensor Box" . تم الاسترجاع في 13 يناير 2013 .
- ^ "BasicX". NetMedia, Inc. مؤرشف من الأصل في 23 مايو 2013. تم الاسترجاع 13 يناير 2013 .
- ^ "مرحبًا بكم في Oak Micros". Oak Micros . Oak Micros. مؤرشف من الأصل في 2012-10-25 . تم الاسترجاع في 13 يناير 2013 .
- ^ "ZBasic" . تم الاسترجاع في 13 يناير 2013 .
- ^ "myAVR". Laser & Co. Solutions GmbH . تم الاسترجاع في 13 يناير 2013 .
- ^ "M3000 Motion controller on a chip". imshome.com . Schneider Electric Motion USA. مؤرشف من الأصل في 2009-12-02 . تم الاسترجاع في 2011-08-02 .
- ^ "pAVR :: نظرة عامة". OpenCores . تم الاسترجاع في 2012-09-19 .
- ^ "AVR Core :: Overview". OpenCores . تم الاسترجاع في 2012-09-19 .
- ^ "نظرة عامة على Navré AVR clone (8-bit RISC)". OpenCores . تم الاسترجاع في 2012-09-19 .
- ^ "نظرة عامة على Soft AVR Core + Interfaces". OpenCores . تم الاسترجاع في 2020-06-16 .
- ^ "محاضرة وحدة المعالجة المركزية". OpenCores . تم الاسترجاع في 2015-02-16 .
- ^ "LGT8F88A FLASH Microcontroller". LogicGreen Technologies. مؤرشف من الأصل في 2017-08-29 . تم الاسترجاع في 2019-01-18 ,نسخة من ATmega88.
- ^ "Микроконтроллеы" [وحدات التحكم الدقيقة] (بالروسية). فورونيج: OAO "NIIET". أرشفة من الأصلي في 22 أغسطس 2017 . تم الاسترجاع في 22 أغسطس 2017 .
قراءة إضافية
- ويليامز، إليوت (2014). برمجة AVR: تعلم كيفية كتابة البرامج للأجهزة . Maker Media. ISBN 978-1449355784.
- شميدت، مايك (2011). أردوينو: دليل البدء السريع . مكتبة براجماتيك. رقم ISBN 978-1-934356-66-1.
- مارجوش، تيموثي س. (2011). بعض التجميع المطلوب: برمجة لغة التجميع باستخدام متحكم AVR . مطبعة CRC. رقم ISBN 978-1439820643.
- مزيدي، محمد علي؛ نعيمي، سرمد؛ نعيمي، سبهر (2010). متحكم AVR والأنظمة المضمنة: استخدام التجميع والسي . بيرسون. ISBN 978-0138003319.
روابط خارجية
- الموقع الرسمي
- جهاز التحكم الصوتي AVR من اتميل
- المجتمع الرسمي
- مجتمع AVR Freaks
- منتدى الميكروشيب
- مخططات التوصيلات الكهربائية
- حزم AVR DIP: ATtiny44/45/84/85، ATmega328P، ATmega644P، ATmega1284P
- حزم AVR SMD: ATmega328، ATmega2560، ATmega32U4
- المحاكيات
- AVR8js (محاكي 8 بت داخل المتصفح)
