شبیه سازی ربات

 Webots شبیه سازی ربات های متحرک

انتخاب بیش از 300 دانشگاه و مراکز تحقیقاتی در سراسر جهان

شبیه سازی سریع ربات های متحرک

نرم افزار Webots برای مدلسازی و برنامه نویسی و شبیه سازی ربات های متحرک مورد استفاده قرار می گیرد . کتابخانه های این محصول , این امکان رو به شما می دهد که برنامه های کنترلی خودتان را به منظور ساخت ربات های واقعی بر روی این ربات ها به اجرا در بیاورید .

این نرم افزار این امکان رو به شما می دهد که ربات های مختلفی را در یک محیط طراحی کنید و برای هر کدام می توانید ویژگی های متفاوتی را تعریف کنید , همانند , شکل , رنگ , تکسچر , جرم , اصطکاک و غیره . همچنین شما می توانید هر ربات را با تعداد زیادی از سنسورها و محرک ها مجهز کنید . شما قادر خواهید بود که برای آنها برنامه نویسی کنید و نتایج را بر روی ربات های واقعی پیاده کنید .

توانایی های این نرم افزار

1-مدلسازی و شبیه سازی هر ربات متحرک , شامل چرخ ها , پاها و حتی ربات های پرنده

2-شامل کتابخانه ی کاملی از سنسورها و محرک ها

3- استفاده از OpenGL و built-in 3D editor برای ربات ها و محیط , با امکانات وارد کردن مدل های سه بعدی

4- این امکان به شما داده شده است که برای رباتها به زبان های C و C++ و همچنین جاوا برنامه نویسی کنید

5- از کتابخانه ی ODE ( Open Dynamics Engine ) برای شبیه سازی فیزیکی سریع استفاده می کند .

6-انتقال کنترل ها به ربات های متحرک واقعی , همانند , Aibo , LEGO , Khepera , Hemisson ( نام ربات هایی هستند که به طور پیش فرض در نرم افزار وجود دارند )

7- ساخت فایل های ویدئویی AVI و MPEG برای وب و انتشار آنها

8- تعدا زیادی مثال با مدلها و کدهای کنترل , برای ربات های تجاری

9- توانایی شبیه سازی سیستم های چند منظوره

کتابخانه ی کامل سنسور

هر تعدادی سنسور می تواند به مدل ربات شما وصل شود و به طور جداگانه تنظیم شود . ( محدوده , نویزه , پاسخ , میدان , دیدگاه و غیره )


Distance sensors( IR & US )

Range finder

Light sensors

Touch sensors

Global Positioning Sensors ( GPS)

Cameras (1D , 2D , color , B&W )

Receivers

Position and force sensors for servos

Incremental encoders for wheels


به سادگی هر تعداد محرک می تواند به مدل ربات شما وصل شود


Differential wheel motor unit

Independent wheel motors

Servos ( for legs , arms , etc. )

LEDs

Emitters

Grippers

 

‌By:Wiki Eca

سنسور درب های اتوماتیک

امروزه سه نوع مختلف از سنسورهای دربهای اتوماتیک در بازار وجود دارد:

1- سنسورهای مادون قرمز اکتیو: این دسته از سنسورها ی استاتیک تنها اشخاص و اشیایی را تشخیص میدهند که باعث شکسته شدن پرتو نور ماودون قرمز شوند. محل تشخیص شامل نقاطی وابسته به یک سطح وسیع است که روی فواصل مرکزی نوری لنزهای فرستنده و گیرنده قرار میگیرند. این سنسورها امروزه در دو دسته ی مجزا تقسیم بندی میشوند:

حذف زمینه: این دتکتورها در قسمتهای متحرک مانند دربهای گردان یا چرخان استفاده میشوند (دقت کنید بنا بر چرخشی بودن درب امکان ایجاد زمینه Background وجود ندارد). بنابراین این سیستم نیازی به زمینه مانند دیوار یا سطح زمین ندارد.

آنالیز کننده زمینه: این نوع دتکتورها به سیگنالی از زمینه نیاز دارند تا بتوانند خروجی داشته باشند. در این سیستمها (1) سنسور نصب شده نیاز به بک گراند دارد (دیوار یا کف زمین). (2) سطح مورد نظر برای اسکن شدن درون فواصل ممکن از پیش تعریف شده بصورت مکانیکی تنظیم می شود. (3) هر شیئ درون این ناحیه بصورت استاتیکی نمایان میشود.


سنسور اکتیو مادون قرمز نصب شده در بالای درب

سنسور اکتیو مادون قرمز نصب شده در بالای درب

ناحیه تحت اسکن

ناحیه تحت اسکن

2-سنسورهای مادون قرمز پسیو: طرز کار این نوع سنسورها بسیار شبیه دوربین های مادون قرمزی است که برای یافتن تلفات حرارتی ساختمانها بکار میروند. سنسورهای حساس به مادون قرمز تصویری حرارتی از محل مشخص شده را بوجود می آورند. پس از یک زمان تنظیم اولیه – حدوداً 20 ثانیه – تصویر مادون قرمز ذخیره می شود. در مرحله ی بعد اگر تصویر حرارتی Heat Image تغییر کرد (حرکتی اتفاق افتاد) سنسور به خروجی سیستم سوئیچ می کند. در این حال باید دو شرط زیر را در نظر گرفت:

  • حتماً باید اختلاف دمای +/- (1.8) فارنهایت یا +/- (-16.8) سانتیگراد بین زمینه و شئ مورد نظر وجود داشته باشد.
  • شئ مورد نظر باید سرعت جابجایی حداقل 4 اینچ یا ده سانتیمتر بر ثانیه داشته باشد.

این میزان اختلاف دما بین شئ و بک گراند همواره سیستم تشخیص فوق را برای تشخیص موجودات زنده گارانتی میکند ولی برای بعضی از اشیاء ممکن است نتیجه خوبی بهمراه نداشته باشد.


سنسورهای دربهای لولایی یک طرفه باید بتوانند هر دو سوی درب را اسکن کنند.
سنسورهای دربهای لولایی یک طرفه باید بتوانند هر دو سوی درب را اسکن کنند.


3-میکروویو: امواجی الکترومغناطیسی منتشر شده بیشتر از یک گیگاهرتز بکمک آنتن های متحرک را براحتی میتوان ارسال و بدون مشکل آنها را از طریق کف زمین، دیوار و سایر سطوح به گیرنده برگشت داد. اگر هیچ حرکتی در محل تحت نظارت وجود نداشته باشد، فرکانس ارسال و دریافت یکسان باقی می ماند ( که بدین مفهوم است که محل عاری از هر جنبده ای است). با قرار گرفتن هر موجود زنده یا غیر زنده در محل تحت پوشش، فرکانس برگشتی در نتیجه برخورد به شئ با فرکانس ارسالی متفاوت بوده و این اختلاف توسط سیستم الکترونیکی آشکار شده و باعث فعال شدن سوئیچ خروجی میگردد. توان سنسورهای مایکروویو مورد استفاده از هر نظر برای انسانها وحیوانات ایمن است.


تفاوت ناحیه ی تحت پوشش توسط مایکروویو و سنسور مادون قرمز اکتیو
تفاوت ناحیه ی تحت پوشش توسط مایکروویو و سنسور مادون قرمز اکتیو


حذف تداخلات: عواملی نظیر باران، برف، لامپهای فلورسنت، لرزش ناشی از محرکهای درب (نظیر موتورها و اکچویترها)، تلفنهای موبایل، تجهیزات رادیویی و اشعه ایکس را بطور کلّی الکترواسماگ Electrosmog یا غبار الکترونیکی می نامند [برای مطالعه بیشتر در این مورد اینجا را کلیک کنید]. برای عملکرد بهینه سنسورهای دربهای اتوماتیک در مقابل این تداخلات نیاز به مدارات الکترونیکی بهینه ساز می باشد. این مدارات الکترونیکی را می توان بطور مجزا یا بهمراه سنسور درب تهیه نمود. برای سیستمهای ساده ای نظیر باز و بسته شدن درب شاید نیازی به تهیه این مدارات جانبی نباشد.

سنسورهای دربهای اتوماتیک شامل دربهای کشویی، تاشو، چرخان و گردان می توانند تنها یک سنسور ساده برای تشخیص جسم متحرک باشند. اما امروزه سنسورهای پیشرفته تری برای دربهای اتوماتیک ساخته شده اند که حتی میتوانند حرکت عرضی اشیاء از مقابل درب را نادیده بگیرند و تنها برای حرکتی سوئیچ کنند که مستقیماً بطرف درب می آید. این پیشرفت واقعاً باعث خوشحالی بسیاری از مدیران هتل ها و سایر مراکزی است که از باز و بسته شدنهای بی مورد درب عذاب می کشیدند. سنسورهای اکتیو مادون قرمز اکنون چنین نقشی را بعهده گرفته اند، بطوریکه تا شخصی روبروی مسیر ورود بطرف درب قرار نگرفته باشد عمل نمی کنند.

نهایتاً اینکه هر سیستم الکترونیکی تابع ضوابط و استانداردهایی است و صد البته سنسور دربهای اتوماتیک و سیستمهای وابسته به آنهم نیز تابع استاندارد است. این استانداردها بطور خلاصه در زیر ارائه شده اند:

NZS 4239-1992


Class 2 & Class 3 Automatic Sliding Door Assemblies

Class 2 -up to 200 kgs combined door mass

Class 3 -over 250 kgs combined door mass (HD3 has been tested to 450 kgs)

AS 2047-1-19961 NZS 4211 Amnd 31994


High Velocity Static & Dynamic wind load simulated test

AS 1939-1990 1 NZS 1939-1990


IPx3 -Degree of dust and moisture protection provided by enclosures for electrical equipment

AS 3000-19911 NZS 3000-1991


Wiring Rules for Buildings, Structures & Premises

AS 1044-1995 1 NZS 1044-1995


Electromagnetic Interference that an electrical device can emit. Denoted by the C-tick mark.

AS 3100-19971 NZS 3100-1997


General requirements for electrical equipment

AS 3108-19941 NZS 3108-1994


General requirements for Isolating Transformers

AS 3115-19961 NZS 3115-1996


General requirements for Motor Driven Electrical Appliances and Equipment

AS 3191-19961 NZS 3191-1998


General requirements for Flex & Plug Cords Interfacing with AS/NZS 3000 Compliant Buildings

AS 4695-1996 1 NZS 4695-1996


Fire Hazard Testing of Electromechanical Products & Equipment

AS 3820-1998 1 NZS 3820-1998


Essential Safety Requirements for Low Voltage Electrical Equipment

BCA Code Requirements


Complies with relevant sections of the Code including sections D2.29, D2-21-AS APPLICABLE

مراجع

منبع بخشی از مطلب

منبع استانداردها

منابع عکسها اینجا و اینجا

منبع

http://sensors.blogfa.com/

JTAG چیست ؟

JTAC یا Joint Test Action Group استانداردی است که توسط شرکتهای کلیدی تولید کننده PCB و IC تهیه و تدوین گردید و در سال 1990 به عنوان استاندارد در IEEE با شماره IEEE1149.1-1990 به ثبت رسید البته با نام کامل:

IEEE Standard 1149.1-1990 Test Access Portand Boundary-Scan Architecture

در این استاندارد سخت افزار و نرم افزار مورد نیاز برای فعال کردن قابلیت تست و ارتباط با دنیای خارج از آی سی ها و میکروکنترلر ها ارایه شده است .

در سال 1993 و همچنین در سال 1995 در این استاندارد تجدید نظرهایی شد و با شماره های IEEE1149.1a-1993 و IEEE1149.1b-1995 ارایه شد.


معماری سخت افزاری پین های پورت JTAG

هر وسیله ای که با استاندارد Jtag سازگار باشد لازم است تا پین های زیر را داشته باشد :


Clock ورودی که جدا از clock سیستم می باشد. Test Clock Input TCK
از طریق این پورت دیتا به وسیله سازگار با Jtag وارد می شود. Test Data In TDI
از طریق این پورت داده ها از وسیله سازگار با Jtag خارج می گردد. Test Data Out TDO
از طریق این پورت حالتهای مختلف تست که در استاندارد مذکور ذکر شده انتخاب می شود. Test Mode Select TMS
این پین امکان راه اندازی غیر همزمان TAP Controller را فراهم می کند. Test Reset Input TRST


چهار پین نخست برای ارتباط لازم است ولی پین آخر می تواند اختیاری باشد.

TAP Controller چیست ؟

این بخش دسترسی به بسیاری از توابع داخلی موجود برای تست کردن وسیله سازگار با Jtag را فراهم می کند.


کنترل کننده سخت افزاری JTAG:

شما برای برقرای ارتباط با وسیله سازگار با JTAG نیاز به استفاده از یک کنترل کننده سخت افزاری دارید که یا به صورت کارت در داخل کامپیوتر قرار می گیرد و یا اینکه از پروگرامر برای ایجاد ارتباط استفاده می کند.

وسیله سازگار با JTAG باید به تمام آدرس های حافظه فلش و سیگنال های کنترل و دیتا متصل باشد.

لزومی ندارد که فلش شما سازگار با استانداردهای Jtag باشد چرا که دستگاه شما دیتا را از کنترل کننده سخت افزاری دریافت نموده و از آن جهت که به تمام فلش دسترسی دارد آن را جای مورد نظر می نویسد. و یا از جای مورد نظر می خواند و به کنترل کننده انتقال می دهد.

خب تا اینجا راجع به تئوری قضایا صحبت شد.

از این جا به بعد می پردازم به بحث دستگاهای گیرنده دیجیتال

تقریبا 80 درصد رسیور ها که امروزه در بازار موجود می باشند دارای CPU از نوع ST می باشند و عمدتا از نوع :

STI5518

STI5516

STI5512

STI5500

وتمامی این CPU ها سازگار با JTAG می باشند، یعنی در داخل این CPU هاTAP Controller و Register های مربوط موجود می باشد.

و در نتیجه 5 پین مذکور در بالا در آنها کوجود می باشد.

فقط مهم پیدا کردن آنهاست که آن هم از Data Sheet CPU ها قابل استخراج می باشد.

خب بینیم که برای برقرای ارتباط به چه چیزهای نیاز داریم

1- یک کامپیوتر

2- نرم افزای که از طریق یک اینتر فیس با دستگاه ارتباط برقرار کند.

3- یک رابط یا اینتر فیس برای انتقال داده به کامپیوتر

کامپیوتر که حتما دارید

در مورد مورد نرم افزار هم معمولا از JKEY استفاده می شود البته استفاده از آن هم فوت و فن های خودش را دارد به عنوان مثال لازم است تا با داشتن اطلاعاتی راجع به نوع و مارک فلش موجود در دستگاهتان آن را در صورت عدم وجود برای برنامه معرفی کنید.

می رسیم به واسط یا اینتر فیس

امروزه اینترفیس های ساخته شده توسط شرکتهای مختلف موجود می باشد که قابل خرید می باشند از جمله معتبرترین آنها FLASH LINK می باشد که ساخت شرکت ST یعنی شرکت تولید کننده CPU های STI .

به صورت آماتوری نیز مدل های مختلفی ارائه شده است که معمولا البته با امکانات کمتر نسبت به مدل های فروشی.


یک موضوع راجع به پورت JTAG:

این پورت برروی بعضی از بردها وجود دارد مانند سامسونگ های 9500 قدیمی

جای این پورت 2- پین روی بردهای دیگر هم وجود دارد اما به صورت محو.


پین های JTAG

پین های زوج یعنی 2 و 4 و 6 و 8 و 10 و 12 و14 و16 و 18 و 20 به گراند متصل می شوند.

پین های 1 و 7 بدون استفاده

پین 3 گزارش خطا

پین 5 آنالیز cpu

پین 9 TMS

پین 11 TCK

پین 13 TDI

پین 15 TDO

پین 17 متصل به مدار ریست کننده دستگاه

پین 19 TRST

نکته: در مورد CPU های STI یک یا دو پین نیز وجود دارد که تعیین می کند آیا سیستم از روی فلش بوت شود یا از روی لینک بیرونی یا DCU

بنابراین لازم است تا به هنگام استفاده از Jtag وضعیت این پهنا برسی شود.

در cpu های STI5518 این پین شماره 115 cpu است که باید به گراند متصل شود تا سیستم کنترل را به TAP Controller واگذار نماید.

در cpu های STI5500 این پین شماره 27 cpu است که باید low نگه داشته شود.


پهنای مورد نیاز در JTAG

در CPU های STI5515 :

Pin 109 : TRST

Pin 110 : TMS

Pin 111 : TDO

Pin 112 : TDI

Pin 113 : TCK

Pin 115 : Boot_From_Rom or DCU

در CPU های STI5500 :

Pin 186 : TDI

Pin 187 : TMS

Pin 188 : TCK

Pin 189 : TDO

Pin 190 : TRST

Pin 27 : BRM1/Boot From Rom

در CPU های STI5512 :

J1 TRST

J3 TDO

J4 TDI

J2 TMS

H3 TCK

J19 & J20 Boot Source

 

‌BY: WIKI ECA

CCS

نرم افزار ccs یک کامپایلر(مفسر) است که می توان برای برنامه نویسی میکرو کنترلر(pic) ها از آن استفاده کرد .


ویژگی ها

  1. دارای help بسیار قوي
  2. قابلیت برنامه نویسی به زبان هاي c و اسمبلی
  3. داراي ادیتور پیشرفته با قابلیت شناسایی دستورات
  4. دارای خروجی های cof. و sym. براي سایر نرم افزار هاي شبیه سازي و دیباگر
  5. محیط بسیار ساده و جذاب
  6. دسترسی به کتابخانه ها و توانایی ویرایش انها


آشنایی با محیط

محیط این کامپایلر با دیگر کامپایلر هاي میکرو کنترلري متفاوت می باشد . در این نرم افزار منو ها و زیر منو ها در دسنرس شما قرار دارد و می توانید به سادگی تمامی منو ها و زیر منو ها را ویرایش کنید.

براي باز کردن نرم افزار از منوي start و بخش all program و منوی pic-c گزینه ی pic c compiler را انتخاب کنید .

در منوی project گزینه هایی برای کار با پروزه ها وجود دارد از این منو گزینه pic wizard را انتخاب کنید و در پنجره باز شده بعد از وارد کردن نام پروژه بر روی گزینه save کلیک کنید.

بعد از ذخیره کردن پروژه پنجره ی pic wizard باز می شود.شما میتوانید در این بخش امکانات و لوازم جانبی را فعال کنید ، با این این کار کامپایلر کد هاي مورد نیاز را به صورت خودکار به برنامه اضافه می کند . در پنجره ی pic wizard در پالت general در جلوی گزینه device میکروکنترلر دلخواه را انتخاب کنید

LCD4Linux

LCD4Linux برنامهٔ کوچکی برای نمایش اطلاعات سیستم بر روی نمایشگرهای کریستال مایع است.
 

 

کاملش رو توی ادامه مطلب گذاشتم

خداییش خیلی توپه ؛ از دستش ندین

ادامه نوشته

Xmega

امکانات

CLOCK

از جمله اولین نکات این خانواده این است که تا 32 مگاهرتز کلاک را قبول می کنند که در مقایسه با حداکثر 20 مگاهرتزی AVR های معمول، تقریبا دوبرابر سرعت را تامین میکنند و همچنین این کلاک 32 مگاهرتز می تواند بصورت اسیلاتور داخلی و بدون نیاز به هیچ کریستالی تامین شود. همچنین برای تنظیم کلاک احتیاج به تغییر فیوزبیت نیست و این کار از طریق تغییر رجیسترهای داخلی انجام می شود. همیشه در ابتدای شروع به کار آی سی ابتدا بصورت خودکار کلاک داخلی 2مگاهرتز انتخاب می شود و سپس بوسیله کدهای نوشته شده، نوع کلاک، قابل تغییر است.

یک مکانیزم بسیار جالب در این آی سی قابل فعال سازی است که حتی در صورتی که کلاک خارجی فعال باشد و به هر دلیلی عمل نکند،CPU بصورت اتوماتیک روی کلاک داخلی سوئیچ کند. بنابراین کلیه مشکلاتی که در AVR های معمولی به دلیل تنظیم غلط فیوزبیت ها و یا از کار افتادن کریستال یا اسیلاتور خارجی بوجود می آید، در مورد این آی سی می تواند موضوعیت نداشته باشد. وجود PLL داخلی هم از ویژگی های دیگر این خانواده است که بوسیله آن می توان انواع کلاک ها را از یک منبع ثابت بدست آوردو همچنین یک مکانیزم( DFLL(Digital Frequency Locked Loop هم قابل فعال سازی است که اسیلاتور دائما مقدار خود را تصحیح می کند و پایداری و صحت کلاک بهبود می یابد.

رجیسترهای متنوع و متعدد کنترلی

به دلیل وجود رجیسترهای کنترلی متعددی که در خانواده XMEGA وجود دارد، امکان نوشتن کدهای بسیار سریعتر و توانمندتری در این خانواده بوجود آمده که حتی در یک کلاک برابر، می تواند سرعت اجرا را بالاتر ببرد.

به عنوان یک مثال، برای تصحیح وضعیت چند بیت یک PORT در حین حفظ وضعیت بقیه بیت ها، در AVR های معمولی باید ابتدا مقدار PORT خوانده شود و بعد از تصحیح مقدار، مجددا در محل خود نوشته شود. اما در سری XMEGA برای set و reset و not کردن بیت ها، 3 رجیستر مجزا وجود دارد.

بنابراین بدون آنکه نیازی وجود داشته باشد که مقدار وضعیت فعلی PORT خوانده شود می توان چند بیت آنرا بصورت همزمان set یا reset یا not کرد. امثال چنین امکاناتی می تواند منجر به بهبود راندمان زمان اجرای نرم افزار در طول یک کد طولانی شود و انجام یک کار واحد را برای یک XMEGA که کلاک برابری با یک AVR معمولی دارد، در زمان کمتری میسر کند. در مورد قسمت های دیگر سخت افزار هم کنترل زیادی از طریق رجیسترهای متعدد داخلی وجود دارد که هرچند شناخت آنرا پیچیده تر می کند، اما دست برنامه نویس را برای انجام عملیات پیچیده و سریعتر، بسیار باز می گذارد.

پورت‌ها

عملکرد پورتها در خانواده XMEGA بسیار کاملتر از AVR های معمولی است. همانگونه که اطلاع دارید، پورتهای AVR یا خروجی هستند که دو وضعیت LOW و HIGH را میتوانند داشته باشند و یا ورودی هستند که pull up داخلی می تواند فعال یا غیر فعال باشد. اما در XMEGA هم pull up و هم pull down قابلیت فعال شدن در ورودی و خروجی را دارند و همچنین وضعیت های totem pole، BUS Keeper، Wired-OR، Wired-AND برای پورتها قابل تعریف است. هر یک از این حالت ها، امکانات مجزایی را برای کار با پورتها در اختیار قرار می دهند که بیشتر آنها در پورتهای AVR عادی قابل پیاده سازی نیست. مثلا اگر چند خروجی در وضعیت Wired-OR قرار داده شوند، این امکان وجود دارد که تمام این پین ها با وجودی که خروجی هستند، به یکدیگر متصل شوند و با قرار دادن pull down خارجی یا فعال سازی pull down داخلی، هر خروجی که high باشد، تعیین کننده وضعیت خروجی کل باشد و سایر خروجی هایی که low هستند در این وضعیت بی تاثیر باشند.

همچنین این امکان وجود دارد که یک منطق NOT برای ورودی یا خروجی فعال شود که مثلا برای وضعیت ورودی، هر منطقی که به پین ورودی اعمال شود به صورت معکوس خوانده شود.

یک امکان دیگر پورتهای XMEGA وجود پورتهای مجازی یا virtual port است که توضیح آن در این مقال نمی گنجد. اما به طور خلاصه به این معناست که یکسری پورت مجازی را به پورتها واقعی نسبت می دهیم و هر عملی که روی پورت مجازی انجام شود، روی پورت معادل آن تاثیر خواهد گذاشت و 4 پورت مجازی در سری XMEGA وجود دارد.

Totem pole

این وضعیت شبیه عملکرد پورت های AVR های عادی است. به این ترتیب که اگر پورت به عنوان خروجی تعریف شود، LOW و HIGH از یک درایور خروجی تامین می شوند که چه بصورت source و چه بصورت sink ، جریان را تامین می کند. در وضعیت ورودی هم اگر pull up فعال نباشد، ورودی حالت float دارد.

Wired-AND

این وضعیت تا حدودی شبیه پورت های 8051 است. به این معنی که در صورت صفر کردن خروجی، یک سوئیچ نیمه هادی روشن می شود و خروجی را low می کند و در صورت یک شدن آن، باید مقاومت pull up لازم در خروجی سوئیچ نیمه هادی قرار داشته باشد تا وضعیت high را ایجاد کند. این مقاومت می تواند بصورت داخلی فعال شود و یا در خارج IC قرار بگیرد. خروجی هایی که در وضعیت Wired-AND قرار داده شوند، قابلیت وصل شدن به یکدیگر را دارند و آن خروجی یا خروجی هایی که low باشند، خود را به بقیه تحمیل می کنند.

Wired-OR

عکس عملکرد وضعیت قبل را دارد و در صورت یک کردن خروجی، یک سوئیچ نیمه هادی روشن می شود و خروجی را high می کند و در صورت صفر شدن آن، باید مقاومت pull down لازم در خروجی سوئیچ نیمه هادی قرار داشته باشد تا وضعیت low را ایجاد کند.


Bus-keeper

با قرار گرفتن پورت در این وضعیت، این امکان بوجود می آید که وضعیت قبلی پورت زمانی که بصورت خروجی است، در تغییر وضعیت پورت به وضعیت ورودی از نظر low و high بودن همچنان حفظ شود. این کار از طریق فعال سازی هوشمند pull up و pull down بصورت خودکار انجام می شود. به این معنی که اگر وضعیت قبلی خروجی low بوده، pull down را فعال می کند و اگر هم high بوده که pull up را فعال می کند. بنابراین وضعیت پورت از نظر high و low بودن همچنان حفظ می شود.

Virtual port

به دلیل نظام خاص آدرس دهی XMEGA و اینکه بتوان دستوراتی مانند IN و OUT را در مورد پورتها بکار برد، تعبیه شده است. برای درک بهتر این نوع پورتها باید به جزئیات آدرس دهی رجیسترهای داخلی XMEGA مراجعه کنید و خواهید دید که آدرس پورتها در خارج از فضای I/O memory space قرار دارند. بنابراین با map کردن پورتهای واقعی به مجازی و دانستن این موضوع که پورتهای مجازی در فضای I/O memory space قرار دارند، دلیل وجود آنها روشن تر خواهد شد.

تعیین اولویت(priority) وقفه‌ها

یکی از اشکالات بسیار بزرگ خانواده AVR که از این نظر حتی از سری 8051 هم ضعیف تر می باشد، عدم امکان تعریف اولویت(priority) وقفه هاست. در این خانواده تنها یک اولویت از نوع ابتدایی بین وقفه ها وجود دارد به این معنی که هرگاه دو وقفه با هم از CPU تقاضا شوند، وقفه ای که از نظر آدرس بردار وقفه دارای مقدار کوچکتری است، ابتدا مورد پاسخگویی قرار می گیرد.

اما آن شکلی از تعریف اولویت که در میکروکنترلرهایی مانند 8051 وجود دارد، که به CPU این اجازه را می دهد که در وسط اجرای روتین یک وقفه با اولویت پائین تر، به وقفه با اولویت بالاتر پاسخ دهد در AVR های معمولی وجود ندارد. این موضوع ضعف و خلاء بسیار بزرگی برای AVR محسوب می شود که در برنامه نویسی حرفه ای می تواند بسیار مشکل ساز باشد.

اما تمام این مسائل در سری XMEGA حل شده است و به غیر از اینکه 3 سطح اولویت برای وقفه ها قابل تعریف است، یک وقفه( NMI(Non Maskable Interrupt هم وجود دارد که اصولا توسط وقفه های دیگر قابل disable شدن نیست و برای عملیات حساسی مانند از کار افتادن اسیلاتور کریستالی و مانند آن مورد استفاده قرار می گیرد. بنابراین سیستم مدیریت وقفه در خانواده XMEGA بسیار قوی تر از سری های AVR است و از این نظر بسیار کاراتر و توانمندتر عمل می کند.


Event system

، مجموعه ای از ارتباط بین اجزای داخلی است که قدرت و انعطاف زیادی را برای استفاده از امکانات داخلی XMEGA ایجاد می کند. با استفاده از این سیستم می توان بدون درگیر کردن CPU و یا ایجاد هرگونه وقفه ای، تغییرات یک بخش را به عنوان فرمان تغییر و Trigger بخش دیگر به کار گرفت.

تایمرها، ADC ، مقایسه کننده آنالوگ، RTC ، پورتها و کلاک سیستم و فرمان های نرم افزاری می توانند به عنوان منابع ایجاد Event تعریف شوند. همچنین تایمرها، ADC، DAC، DMA و پورتها و ماژول ارتباط IR می توانند از منبع Event مورد نظر برای تغییرات خود فرمان بگیرند.

به عنوان چند مثال از طریق استفاده از همین سیستم می توان overflow شدن یک تایمر 16 بیتی را به عنوان فرمان clock یک تایمر 16 بیتی دیگر تعریف کرد و بدون استفاده از هر وقفه ای، یک تایمر 32 بیتی ساخت. یا مثلا می توان سیستم را طوری تنظیم کرد که در مقدار مشخصی از RTC، فرمان تبدیل ADC انجام شود. یا با تغییراتی در یک پین ورودی، خروجی DAC در مقدار جدید قرار بگیرد. در این خانواده 8 کانال Event در دسترس است که شامل 8 multiplexer است که با تنظیم آنها می توان هر Event را به عنوان منبع trigger مقصد مورد نظر هدایت کرد. هر کانال Event شامل یک فیلتر دیجیتال است که این امکان را به وجود می آورد که محدوده ای بین 1 تا 8 sample را برای پایدار بودن اجباری Event مورد نظر تعریف کنیم تا وجود آن موثر واقع شود.

البته این بحث بسیار گسترده است و نمی توان انتظار داشت که تمام ابعاد آن در اینجا روشن شود. اما بصورت خلاصه وجود Event System باعث ایجاد یک ارتباط سخت افزاری از طریق برنامه نویسی بین اجزای مختلف XMEGA می شود، بصورتی که به عنوان یک مجموعه به هم پیوسته و واحد عمل کنند و این امکان برای یک برنامه نویس توانمند، فرصت مغتنمی محسوب می شود تا بتواند کاربرد های پیچیده و پیشرفته ای را با XMEGA پیاده سازی کند که انجام آن با AVR های عادی مقدور نباشد.

QDEC

به عنوان کاربردی از Event System که تنها در حد عنوان اشاره می شود، خانواده XMEGA قابلیت و سخت افزار لازم برای اتصال به Quadrature encoder ها(مانند Shaft encoder هایی که به موتورها وصل می شوند)، دارا می باشند و تشخیص جهت encoder و مقدار آن و عبور از مبدا را بصورت سخت افزاری ساپورت می کنند.

تایمرها

در خانواده AVR های معمولی، در شماره های ضعیف تر مانندtiny13 فقط یک تایمرهای 8 بیتی وجود دارد و در شماره های توانمندتر مانند mega128 هم حداکثر 2 تایمر 16 بیتی و 2 تایمر 8بیتی وجود دارد و حداکثر ظرفیت AVR هم وجود 4 تایمر 16 بیتی و 2 تایمر 8 بیتی در شماره هایی مانند mega2560 است.اما تایمر های XMEGA همگی 16بیتی هستند و تعداد آنها هم از 4 عدد تا 8 عدد متغیر است. این درحالی است که با استفاده از ظرفیت Event system که قبلا به آن اشاره شد، می توان به تایمرهایی بزرگتر از 16 بیت هم بدون استفاده از وقفه ها دست پیدا کرد.

نکته دیگر اینکه در AVR، کنترلی روی جهت شمارش تایمر وجود ندارد و تایمر در وضعیتهای Normal و CTC و Fast-PWM بصورت افزایشی و در مدهای Phase corret PWM و Phase-frequency correct PWM هم بصورت افزایشی و کاهشی متوالی عمل می کند. اما جهت شمارش تایمر های XMEGA بصورت دلخواه توسط یک بیت کنترلی قابل تغییر است و این امکان بسیار خوبی محسوب می شود.

نکته بسیار مهم دیگر وجود تعداد قابل توجهی خروجی PWM در خانواده XMEGA است که بین 14 تا 24 خروجی PWM را در شماره های فعلی این خانواده شامل می شود. وجود این خروجی های PWM به علاوه امکان دیگری به نام (AWEX(Advanced Waveform Extension که بعدا توضیح داده می شود، خانواده XMEGA را به ابزار بسیار قدرتمندی برای کاربردهایی مانند کنترل موتور و رباتیک و نظایر آن تبدیل می کند و این در حالی است که تعداد خروجی های PWM در AVR های معمولی بسیار کمتر از این تعداد است ( 4 عدد در mega32 و 8 عدد در mega128 و 16 عدد در mega2560 که حداکثر تعداد در AVR است). ضمن اینکه امکانات کنترل و مدیریت PWM هم در XMEGA قوی تر و کاراتر می باشد.

از جمله کاربردهای این تایمرها، وجود امکان اندازه گیری فرکانس و اندازه گیری عرض پالس بصورت سخت افزاری است که در فرکانس مترها و اندازه گیری های دقیق زمانی بکار می رود و کاربردهای متعدد دیگر که مستلزم آشنایی دقیق با ساختار تایمرهای XMEGA است.

AWeX

AWeX یا Advanced Waveform Extension یک واحد سخت افزاری طراحی شده برای پیاده سازی عملیات کنترل دور موتور و درایورهای قدرت است. وجود 3 توانایی سخت افزاری Dead time insertion، Pattern generation وFault protection برای کاربردهای کنترل موتور و مانند آن پیش بینی شده و کارکردن با آن مستلزم آشنایی کامل با مبانی عملکرد درایورهای قدرت می باشد.

در مورد Dead time insertion می توان این توضیح را ارائه کرد که در یک پل (Bridge) تشکیل شده از سوئیچ های قدرت مانند Mosfet یا IGBT، بین خاموش شدن هر سوئیچ قدرت و روشن شدن سوئیچ دومی که در همان بازو قرار دارد، باید یک زمان حداقل در حد میکروثانیه تاخیر وجود داشته باشد. در غیر اینصورت قبل از اینکه جریان سوئیچ روشن به صفر برسد، سوئیچ دوم هم روشن خواهد شد و یک جریان بسیار شدید بین ولتاژ مثبت و منفی پل ایجاد می شود و در یک لحظه باعث از بین رفتن سوئیچ های قدرت خواهد شد( به این جریان shoot through هم گفته می شود). به این زمان تاخیر به اصطلاح Dead time گفته می شود که یک منبع تولید فرمان برای درایور، باید بتواند آنرا بصورت سخت افزاری تامین کند. در واحد AWeX خانواده XMEGA، چنین امکانی پیش بینی شده که مقدار Dead time بصورت نرم افزاری و توسط رجیسترهای کنترلی یکبار تعریف و به سخت افزار اعمال شود.

Pattern generation برای تولید یک Bit Pattern مشخص روی پورت خروجی و برای کنترل موتورهایی مانند BLDC و استپر موتور کاربرد دارد و باید بصورت یک بحث مستقل و کاملا تخصصی در آینده مطرح شود.

Fault protection هم یک واحد پیش بینی شده برای درایورهای قدرت و در جهت واکنش سریع و مشخص در شرایط وقوع fault می باشد. برای کنترل کاربردهای قدرت لازم است این امکان بصورت سخت افزاری پیش بینی شود که در هنگام وقوع fault و خطا، واکنش سریع و از قبل معینی انجام شود و مثلا فرمان خروجی به سوئیچ های قدرت به سرعت قطع شوند و این امر نباید معطل اجرای نرم افزار بماند. چرا که در غیر اینصورت ممکن است به علت جریان کشی بیش از حد به از بین رفتن سوئیچ های قدرت و مواردی از این دست منجر شود. بنابراین واحدی که تحت برنامه ریزی قبلی نرم افزار بصورت سخت افزاری به شرایط خطا پاسخ دهد، از جمله امکاناتی است که در XMEGA پیش بینی شده و امکان استفاده از آن را به عنوان یک کنترل کننده و نظارت کننده بر پروسه های در محدوده زمانی میکروثانیه و کمتر، بوجود می آورد.

ADC

تفاتهای زیادی بین ADC داخلی خانواده XMEGA با AVR های معمولی وجود دارد که شاخص ترین آن دقت و سرعت تبدیل آن است. دقت ADC این خانواده 12 بیت است و قابلیت نمونه برداری تا 2 میلیون نمونه در ثانیه (2 MSPS) را دارد. از نظر تعداد ورودی آنالوگ هم بین گروه های مختلف XMEGA تفاوت وجود دارد و در گروهی که با پسوند A4 نوشته می شوند،یک کانال با 12 ورودی و در گروه های A3 و A1 هم 2 کانال مستقل با 8 ورودی وجود دارند (درگروههای D4 و D3 هم 1x12 و 1x16 ورودی وجود دارند).

از جمله نکات دیگر این ADC قابلیت تبدیل 4 سیگنال آنالوگ بصورت همزمان و با روش Pipeline است و به همین دلیل 4 سری رجیستر داخلی برای ذخیره سازی این 4 گروه نتیجه دارد.

از نظر ولتاژ مرجع (Reference)، چند امکان برای انتخاب وجود دارد که شامل ولتاژ دقیق 1 ولت داخلی، Vcc/1.6 و ولتاژ مرجع خارجی است. در گروه های A1 و A3 دو ورودی مختلف به عنوان ولتاژمرجع اختصاص داده شده است.

امکان خواندن ورودی ها بصورت تفاضلی، اعمال بهره تقویت 1 تا 64، و امکان محاسبه مقدار ورودی بصورت علامت دار، از دیگر امکانات ADC این خانواده است.

یکی از موارد مهم قابل ذکر، وجود سنسور دمای داخلی در XMEGA است که نیاز به قرار دادن سنسور دما در خارج از IC را برای سنجش دما برطرف می کند. این امکان وجود دارد که خروجی این سنسور بصورت داخلی به ورودی ADC متصل و مقدار آن محاسبه شود. همچنین امکان اندازه گیری Vcc اعمال شده به IC و خروجی DAC و ولتاژ مرجع داخلی هم از طریق ADC وجود دارد.

در عملکرد خانواده XMEGA، یک ساختار Compare function وجود دارد به این معنی که مقدار ADC بصورت دائمی با یک رجیستر از پیش تعیین شده 12 بیتی مقایسه می شود و می توان وقفه یا Event را در صورت کوچکتر یا بزرگتر بودن از این رجیستر فعال کرد. و بالاخره اینکه امکان انتقال نتایج عملیات ADC توسط DMA ( که بعدا توضیح داده می شود)در حافظه قابل فعال کردن است و این روش برای درگیر نکردن CPU و ذخیره سازی سریع اطلاعات در تبدیلات متوالی می تواند بکار برده شود.

DAC

وجود مبدل دیجیتال به آنالوگ 12 بیتی و با سرعت حداکثر 1 میلیون تبدیل در ثانیه، از جمله مزیت هایی در خانواده XMEGA است که در خانواده AVR های معمولی به کلی وجود ندارد و زمینه را برای انجام عملیاتی که با تولید سیگنال های آنالوگ سر و کار دارند، فراهم می کند.

در اینجا ذکر یک توضیح فنی لازم است که هرچند با قرار دادن یک فیلتر پائین گذر در خروجی PWM می توان سیگنال های آنالوگ را تولید کرد. اما حداکثر فرکانس این سیگنال آنالوگ باید تفاوت قابل توجهی با فرکانس PWM داشته باشد تا بتواند توسط فیلتر پائین گذر و با دقت بالا، جداسازی شود. حداکثر فرکانس PWM قابل حصول برای AVR در مد fast PWM و با فرض کلاک 20 مگاهرتز و 8 بیتی بودن PWM، برابر 78.125 کیلوهرتز است. بنابراین تغیییرات سیگنال آنالوگ تولید شده توسط PWM باید بسیار کمتر از این باشد تا بتواند به خوبی جدا شود. اما وجود DAC ، زمینه را برای کاربردهایی مانند تولید صدای خروجی بصورت استریو و یا تولید سیگنال های آنالوگ با فرکانس نسبتا بالا را برای XMEGA فراهم می کند.

هر واحد DAC دارای دو خروجی مستقل آنالوگ است که هریک رجیستر دیتای خاص خود را دارند. در گروه با پسوند A3 و A4 یک واحد DAC و در گروه A1 دو واحد DAC(یعنی 4 خروجی مستقل آنالوگ) وجود دارند.

برای تبدیلات DAC یک ولتاژ مرجع قابل تعیین است که می تواند از Vcc یا ولتاژ مرجع داخلی و یا ولتاژ دلخواه متصل به پایه تعریف شده برای این کار، تامین شود.

خروجی انالوگ DAC بصورت نرم افزاری قابل کالیبره کردن و تغییر Offset خروجی است و این کار می تواند به کمک اتصال داخلی خروجی DAC به ورودی ADC و خواندن مقدار آن و یا قرائت خروجی آنالوگ از بیرون انجام شود.

خروجی DAC همچنین می تواند بصورت داخلی به مقایسه کننده آنالوگ موجود در XMEGA متصل و ولتاژ آن با ولتاژهای دیگری مقایسه شود که این امکان برای برخی کاربردهای کنترل جریان و درایورهای قدرت، امکان فوق العاده ای محسوب می شود.

برای تولید سیگنال های آنالوگ با فرکانس نسبتا بالا از طریق قرار دادن متوالی دیتا در ورودی DAC، امکان بهره گیری از DMA داخلی XMEGA وجود دارد و در این شرایط بدون مشغول کردن بیجهت CPU، عملیات تولید سیگنال آنالوگ به خوبی انجام می شود. همچنین عملیات به روز سازی خروجی آنالوگ می تواند تحت مدیریت Event system انجام شود و بدون ایجاد بار نرم افزاری برای CPU و ایجاد هرگونه وقفه ای، وقوع Event تعیین شده، باعث به روز سازی و ایجاد تغییر مقدار در خروجی آنالوگ مورد نظر گردد.

DMA controller

کنترل کننده( DMA(Direct Memory Access برای انتقال اطلاعات بین نواحی مختلف حافظه و رجیسترهای داخلی بکار می رود و بکارگیری صحیح آن، باعث کاهش بار پردازشی است که می تواند برای انتقال این اطلاعات به CPU تحمیل شود. وجود امکاناتی نظیر DMA و Event system در داخل XMEGA سبب می شود که کارایی و سرعت انجام عملیات در مقایسه با AVR های معمولی به شکل چشمگیری افزایش پیدا کند و در شرایطی که در AVR، انجام هر عملی باید با دخالت مستقیم CPU انجام شود، در XMEGA عملیات مختلف می توانند بصورت کاملا موازی و بدون مشغول کردن CPU به انجام برسند. بنابراین راندمان اجرای نرم افزار با کمک سخت افزار بسیار بالا می رود و شاید بتوان مثال هایی را مطرح کرد که برای یک XMEGA با کلاک 20 مگاهرتز قابل انجام باشد ولی انجام آن در همان زمان برای یک AVR معمولی، اگر بجای 20 مگاهرتز مثلا 100 مگاهرتز هم کلاک قابل اعمال کردن بود، مقدور نباشد.

4 کانال DMA مستقل در XMEGA وجود دارد که می توانند اطلاعات را در بلوک هایی با سایز قابل تعریف جابجا کنند و امکان تعریف اولویت (priority) هم بین این کانال ها وجود دارد.

بخش DMA از بخش های نسبتا پیچیده XMEGA از نظر نرم افزاری محسوب می شود و کار کردن با آن مستلزم تبحر و تسلط کافی به سایر بخش هایی است که DMA روی آن عمل می کند و برای کار با DMA باید یک شناخت جامع از اکثر بخش های XMEGA که با مسئله DMA ارتباط پیدا می کنند، وجود داشته باشد.

( EBI(External Bus interface

EBI یا External Bus interface واحد سخت افزاری اتصال به وسایل جانبی آدرس پذیر است که بطور خاص تا 64 مگا بایت SRAM و 128 مگابیت SDRAM را ساپورت می کند. این واحد عملیات Refresh کردن SDRAM را تحت کنترل نرم افزار به عهده می گیرد و از انواع 4 و 8 بیتی آن پشتیبانی می کند. یکی از نکاتی که تاکنون ذکر نشده این مطلب است که در ساختار داخلی XMEGA، دو کلاک 2 برابر و 4 برابر کلاک CPU وجود دارد که برای بعضی واحدهای داخلی استفاده می شود. EBI بطور خاص از کلاک دو برابر استفاده می کند و بنابراین تا کلاک حداکثر 64 مگاهرتز را پشتیبانی می کند.

در پیکر بندی های مختلف واحد EBI ،دو یا سه یا چهار پورت بکار گرفته می شوند. در نوع اول با قرار دادن دو Latch در خروجی پورت J، از این پورت سیگنال های 8 خط دیتا و 16 خط آدرس ساخته می شود و خطوط کنترل هم از پورت H تامین می شوند.

در پیکر بندی با استفاده از 3 پورت، امکان تولید 16 و 24 بیت آدرس با استفاده از یک یا دو Latch وجود دارد و امکان اتصال به SDRAM هم در حالت دیتای 4 بیتی و بدون استفاده از هر گونه Latch فراهم است. در پیکر بندی با استفاده از 4 پورت هم امکان تولید 24 بیت آدرس با استفاده از یک Latch و امکان اتصال به SDRAM هم در حالت دیتای 8 بیتی بدون Latch فراهم است.

به غیر از حافظه ها، سایر وسایل جانبی که دارای Address Bus، Data Bus و سیگنال های کنترلی Read Enable و Write Enable و Chip select هستند (مانند LCDها، PPI و ... )، قابلیت اتصال به XMEGA از طریق EBI را دارند.

Crypto Engines

یکی از امکانات فوق العاده و درخشان خانواده XMEGA، وجود سخت افزار لازم برای کد کردن اطلاعات با الگوریتم های( DES(Data Encryption Standard و( AES(Advanced Encryption Standard است. برای توضیح در مورد این دو استاندارد می توانید Data Encryption Standard و Advanced Encryption Standard در ویکی‌پدیا را مطالعه کنید.

اساس کد کردن اطلاعات در الگوریتم DES بر مبنای یک کلید 56 بیتی انجام می شود که با احتساب 8 بیت به عنوان parity، عملیات روی 64 بیت دیتا و یک کلید به طول 64 بیت انجام می شود. روش کار به این صورت است که دیتای مورد نظر در رجیسترهای R0-R7 و کلید مورد نظر در رجیسترهای R8-R15 قرار می گیرند. در مجموعه دستور العمل های XMEGA، دستور اسمبلی DES به همین منظور پیش بینی شده که با 16 بار اجرای آن و بسته به وضعیت H flag در رجیستر SREG، عملیات Encryption یا Decryption انجام می شود.

برای کد کردن با امنیت بالاتر اطلاعات، یک روش چند مرحله ای با عنوان 3DS پیاده سازی می شود که اطلاعات در 3 مرحله و با 3 کلید مختلف به ترتیب Encrypte و بعد Decrypte و مجددا Encrypte می شود که این روش از امنیت بسیار بالاتری نسبت به DES تک مرحله ای برخوردار است و البته به سادگی با XMEGA قابل پیاده سازی است.

برای شکستن اطلاعات کد شده توسط این روش، نیاز به ارقام نجومی محاسبات و تست کلیدهای مختلف است. چنانکه در این آدرس مشخصات سیستمی ذکر شده که با بکار بردن 1856 پردازنده و صرف هزینه 250000 دلار، مدت 9 روز طول کشیده تا بتواند رمز اطلاعات کد شده با روش DES را بشکند.

روش AES که نسخه پیشرفته تری برای کد کردن اطلاعات است، بر اساس طول دیتای 128 بیت و طول کلید 128 یا 192 یا 256 بیتی، عمل می کند. در روش AES حالتهای ممکن برای بدست آوردن اطلاعات اصلی به قدری زیاد است که دستیابی به اطلاعات را با امکانات فعلی و در زمان محدود، به مرزهای غیرممکن نزدیک می کند. روش اجرای عملیات AES در XMEGA به این صورت است که بعد از انجام تنظیمات لازم و پرکردن حافظه از دیتا و کد کلیدمورد نظر، بیت مربوط به شروع انجام عملیات در رجیستر مربوطه یک می شود و با پایان Encryption یا Decryption، وقفه مربوط به آن اتفاق می افتد و حاصل عملیات در حافظه قرار می گیرد. امکان انجام عملیات DES و AES بیشتر کاربرد نظامی دارد و از این نظر می تواند در ابزارهای نظامی و مخابراتی به کار گرفته شود.

مقایسه کننده آنالوگ

قبل از توضیح راجع به تفاوت مقایسه کننده آنالوگ در خانواده XMEGA با AVR های معمولی،ذکر این توضیح لازم است که استفاده از این مقایسه کننده ها برای تصمیم گیری های بسیار سریع روی ورودی های آنالوگ به دلیل سرعت بالای مقایسه کننده ها در تشخیص وضعیت ورودی، در کاربردهایی مانند درایورهای قدرت و مدارات کنترل جریان اهمیت زیادی دارد و در IC های switching regulator و کنترل موتور برای فیدبک گرفتن از ولتاژ یا جریان معمولا از عملکرد مقایسه کننده های آنالوگ استفاده می شود.

مقایسه کننده های آنالوگ در AVR های معمولی به تعداد یک عدد موجود است ( به غیر از برخی شماره های بسیار خاص مانند ATMEGA64M1 automotive ) . ورودی مثبت این مقایسه کننده در AVR می تواند از یک پین مشخص ورودی یا یک ولتاژ مرجع داخلی و ورودی منفی هم از یک پین مشخص ورودی یا پین های متصل به ADC فرمان بگیرد. خروجی این مقایسه کننده هم به غیر از تولید وقفه می تواند به عنوان فرمان Capture مربوط به TIMER1 بکار رود.

اما در خانواده XMEGA حداقل دو و حداکثر 4 مقایسه کننده آنالوگ وجود دارد و امکانات به مراتب قوی تری نسبت به عملکرد مقایسه کننده های این خانواده به شرح زیر اضافه شده است.

ورودی های متنوع

چندین امکان مختلف برای اتصال به ورودی های مقایسه کننده ها، قابل انتخاب است. در همینجا باید به نکته ای اشاره شود که متاسفانه متون و document های ATMEL، مملو از اشتباهات چاپی و مفهومی مختلف هستند که می توانند شخص مطالعه کننده را به اشتباه بیاندازند. در مراجعه به متن طولانی و مفصلی که از طرف ATMEL برای سری XMEGA A نوشته شده و رجوع به رجیسترهای داخلی این خانواده، مشاهده می شود که برای ورودی مثبت، امکان اتصال به چندین پین ورودی مختلف و خروجی DAC تعریف شده است.

برای ورودی منفی هم امکان اتصال به چند پین ورودی، خروجی DAC، ولتاژ مرجع داخلی و مقدار مقیاس شده Vcc آورده شده است. اما در Application note مربوط به مقایسه کننده داخلی در همین مورد با جمله زیر مواجه می شویم:

Only the DAC output is available on the positive input pin

و این جمله صحیح نیست. از این دست اشکالات در متون ATMEL زیاد مشاهده می شود و می توان موارد زیادی را از آن ذکر کرد و این مورد اخیر متاسفانه اشتباه تایپی یا چاپی نیست و یک اشتباه مفهومی است.

  • امکان تعریف باند هیسترزیس مقایسه کننده

عرض باند هیسترزیس مقایسه کننده های داخلی، در سه وضعیت بدون هیسترزیس، هیسترزیس کم و هیسترزیس زیاد قابل تعریف است. عرض باند در حالت اول برابر صفر، در حالت کم حدود 20 یا 25 میلی ولت و در حالت زیاد حدود 40 یا 50 میلی ولت است.

  • امکان تعریف تاخیر مقایسه کننده

سرعت عملکرد مقایسه کننده هم در دو وضعیت قابل تعریف است که زمان تاخیر مقایسه کننده را تغییر می دهد. نکته قابل توجه این است که تاخیر مقایسه کننده در خانواده سری A1 و در سرعت بالا حدود 70 نانو ثانیه است. این در حالی است که همین تاخیر برای ATMEGA64 حدود 500 نانوثانیه است و این اعداد، تفاوت سرعت عملکرد XMEGA را در کاربردهایی مانند کنترل جریان یک موتور و مواردی از این دست به خوبی نشان می دهد.

  • Window mode

یک امکان ویژه برای پیاده سازی وقفه در محدوده های مختلف ورودی است. در این حالت باید دو مقایسه کننده بکار گرفته شوند و ورودی های مثبت آنها به یکدیگر و به ولتاژ مورد سنجش متصل شوند. دو ورودی منفی هم به ولتاژهای محدوده بالا و پائین Window مورد تعریف، وصل می شوند. با فعال سازی و تنظیم این وضعیت می توان در یکی از 4 وضعیت بالاتر از محدوده بالایی پنجره(window)، بین دو محدوده ، خارج از دو محدوده و پائین تر از حد پائین، وقفه ایجاد کرد. همچنین بدون وقفه هم امکان خواندن این وضعیت از رجیسترهای داخلی وجود دارد.

  • خروجی مقایسه کننده آنالوگ

امکان فعال سازی پین خروجی مقایسه کننده شماره صفربرای دسترسی بیرونی به وضعیت مقایسه کننده آنالوگ توسط یک بیت رجیستر های داخلی، فراهم است که وضعیت مقایسه کننده را برای استفاده های خارجی در دسترس قرار می دهد.

علاوه بر همه این موارد، خروجی مقایسه کننده آنالوگ می تواند به عنوان یک Event در نظر گرفته شود که با وقوع آن عملیاتی در یک بخش داخلی دیگر و بدون دخالت CPU به انجام برسد.

USART و IRCOM

در خانواده XMEGA حداکثر 8 عدد USART وجود دارد که در مقایسه با AVRهای معمولی که اکثرا از یک و حداکثر دو USART بهره می برند، تعداد بسیار بالاتری می باشد.از نظر دقت Baud Rate هم امکانی در XMEGA وجود دارد که Baud Rate های بسیار متنوع تری را می تواند در ارتباط تامین کند و طیف گسترده تری را نسبت به AVR های معمولی شامل می شود.

USART در خانواده XMEGA همچنین امکان ارتباط بصورت Master SPI را دارد و این امکان به غیر از سخت افزار مستقلی است که برای ارتباط SPI در این خانواده وجود دارد. یکی از امکانات جالب XMEGA که در ارتباط با USART قرار گرفته،(IRCOM(InfraRed Communication Module یا ماژول ارتباط مادون قرمز است که سخت افزار لازم برای ارتباط با پروتکل IrDA 1.4 تا نرخ ارتباط 115200 بیت در ثانیه را تامین می کند. این واحد سخت افزاری به همراه USART مورد نظر، پالس های لازم برای ارسال مادون قرمز را تولید می کند و پالس های دریافتی را هم به اطلاعات مناسب برای اعمال به ورودی USART، تبدیل می کند.

DMA هم می تواند با USART ارتباط برقرار کند و تبادل اطلاعات را به صورت مستقیم به عهده بگیردکه این امکان در راستای کم شدن بار CPU و بالا بردن سرعت کلی اجرای برنامه پیش بینی شده است.

نتیجه یک آزمایش عملی در مورد بخش CLOCK

هرچند عملکرد سخت افزارهای مختلف XMEGA تا فرکانس 32 مگاهرتز گارانتی شده است. اما از طریق PLL داخلی می توان فرکانس کلاک را بالاتر برد و به اصطلاح CPU را over clock کرد. برای حداکثر مجاز خروجی این PLL در یکی از توضیحات datasheet عدد 200 مگاهرتز(!) ذکر شده است. در یک آزمایش عملی با تنظیم PLL مشاهده شد که نرم افزار مورد نظر تا فرکانس 64 مگاهرتز، یعنی 200 درصد over clock جواب می داد و این نتیجه برای برخی دوستان که مشکل سرعت در مورد کاربردهایی نظیر نمایش تصویر و مانند آن را دارند،احتمالا می تواند نتیجه امیدوار کننده ای محسوب شود. البته در همین شرایط مشاهده شد که در بعضی از مقادیر prescaler، خروجی TIMER مورد نظر از کار می افتد و فقط در بعضی شرایط کار می کند. اما هدف از ذکر نتیجه این آزمایش عملی این است که نشان داده شود که فرکانس 32 مگاهرتز لزوما حداکثر توان پردازشی XMEGA نیست.

RTC

واحد(RTC(Real Time Counter شامل یک شمارنده 16 بیتی است که از یک کلاک مستقل فرمان می گیرد و مقدار حداکثر آن هم قابل تعیین است. از طریق یک Compare register به طول 16 بیت هم امکان تعریف مقدار مشخصی وجود دارد که در صورت برابر شدن RTC با آن یک وقفه تولید شود. منابع کلاک برای RTC می تواند از اسیلاتور 32.768 کیلو هرتز خارجی یا دو اسیلاتور 32.768 کیلو هرتز یا 32 کیلوهرتز داخلی تامین شود که اسیلاتور خارجی بصورت مستقیم یا تقسیم شده بر 32 و اسیلاتورهای داخلی تنها بصورت تقسیم بر 32 به عنوان منبع کلاک RTC قابل انتخاب است. در ورودی RTC هم یک prescaler قابل برنامه ریزی 10 بیتی وجود دارد که می تواند تا ضریب تقسیم 1024 را برای تقسیم کلاک ورودی انتخاب کند.بنابراین در حداکثر ضریب تقسیم کلاک ورودی، RTC قابلیت تولید زمانی بیش از 18 ساعت را دارد. امکان قرار گرفتن در EVENT SYSTEM هم برای RTC وجود دارد و از سرریز یا شرایط Compare آن می توان به عنوان یک Event استفاده کرد.

RTC32 و Battery backup system

ک RTC به طول 32 بیت است که مقدار حداکثر آن قابل تعیین و دارای یک Compare register به طول 32 بیت است. کلاک این واحد فقط از اسیلاتور 32.768 کیلوهرتز خارجی تامین می شود و این امکان وجود دارد که یک ضریب تقسیم 32768 یا 32 به این کلاک اعمال شود. بنابراین دو کلاک با مقادیر 1 و 1024 هرتز برای RTC32 قابل انتخاب هستند. با یک محاسبه سرانگشتی می توان حساب کرد که RTC32 به ازای کلاک 1 هرتز قادر است زمانی بیش از 136 سال را ایجاد کند.

یک توانایی خاص موجود در برخی شماره های XMEGA، وجود پایه VBAT برای اتصال یک Battery backup به IC برای استفاده در مواقعی است که تغذیه اصلی IC قطع می شود. در این شرایط بصورت خودکار تغذیه RTC32 و اسیلاتور 32768 خارجی از طریق این باتری خارجی تامین می شود و عملیات زمان گیری تنظیم شده برای آن به شکل صحیحی به کار خود ادامه می دهد.

ATXMEGA256A3B یکی از این نمونه هاست که تا این تاریخ از طرف شرکت ATMEL معرفی شده است. در این شماره به جای PF5 که در ATXMEGA256A3 وجود دارد، ورودی VBAT پیش بینی شده و باتری مورد نظر به این پایه متصل و در زمان مقتضی از آن استفاده می شود و بعد از برگشت تغذیه اصلی مجددا توان از طریق ولتاژ تغذیه تامین خواهد شد. مراجعه به اطلاعات IC مزبور نشان می دهد که مصرف جریان کشیده شده از باتری در هنگام قطع تغذیه اصلی تنها در حد 0.5 میکروآمپر است و این جریان بسیار پائین می تواند استفاده از باتری را جهت تغذیه IC و حفظ عملیات زمان گیری، برای مدتی طولانی تضمین کند.


محدوده تغذیه

مقدار Vcc مجاز برای XMEGA بین 1.6ولت تا 3.6ولت است. اما فرکانس کلاک 32 مگاهرتز تنها از تغذیه 2.7ولت به بالا قابل دستیابی است. در محدوده1.8 ولت تا 2.7ولت حداکثر فرکانس کلاک مجاز بصورت خطی کاهش می یابد و در مقدار Vcc=1.8v این عدد به حداکثر 12MHz می رسد.در محدوده بین 1.6ولت تا 1.8 ولت هم مقدار حداکثر همان 12MHz باقی می ماند. به دلیل کمتر بودن Vcc از مقدار معمول 5 ولت، محدودیت هایی در مقادیر پورت ها در وضعیت های ورودی و خروجی بوجود می آید. در وضعیت ورودی، حداکثر مقدار مجاز برای اعمال به عنوان ورودی نباید بیشتر از Vcc+0.5v باشد. بنابراین اگر از یک رگولاتور 3.3 ولتی برای تغذیه IC استفاده شود، حداکثر مقدار مجاز برابر 3.8 ولت است و متصل کردن یک خروجی با مقدار 5 ولت به ورودی XMEGA، می تواند منجر به آسیب وارد شدن به آن شود. ساده ترین راه برای حل این مشکل استفاده از یک تقسیم مقاومتی و یا در شرایط پیشرفته تر استفاده از IC های Level converter است.

در وضعیت خروجی هم مطابق منحنی های ارائه شده برای XMEGA از طرف کارخانه سازنده و در صورتی که جریانی از خروجی کشیده نشود، مقدار high خروجی پورت برابر Vcc و مقدار Low آن برابر صفر خواهد بود. در صورت جریان کشی هم مقدار high کمتر از Vcc ومقدار Low بیشتر از صفر خواهد شد(مطابق منحنی های ارائه شده ). کمتر بودن مقدار خروجی high از 5 ولت در اتصال به IC های جانبی، در صورتی که از تغذیه ای مانند 3.3 ولت استفاده شود، در اکثر موارد مشکلی بوجود نمی آورد. زیرا اکثر IC هایی که با تغذیه 5 ولت کار می کنند، 3.3 ولت را به عنوان high می شناسند. اما در غیر این صورت و همچنین در صورت استفاده از مقادیر پائین تر Vcc، استفاده از Level conveter اجتناب ناپذیر است.

By: Wiki-Eca

کتابهای AVR

کتابهای تالیف شده در ایران در ضمینه میکروکنترلرهای AVR :



زبان C:

1.آموزش ميكروكنترلرهاي AVR به زبان C

  تالیف: حمید بادامی نجات
  انتشارات: آیلار

متن کتاب را از اینجا [1] بگیرید


2. ميكروكنترلرهاي AVR و كاربردهاي آنها

تالیف: امیر ره افروز
  انتشارات: نص

متن کتاب را از اینجا[2] بگیرید


3. AVR & Codevision

   تالیف: محمدامين مصلايي 
  انتشارات: سروش دانش 

متن کتاب را از اینجا [3] بگیرید


4. مرجع كامل ميكروكنترلرهاي AVR

  تالیف: محمدمهدي پرتوي‌فر
         فرزاد مظاهريان 
         يوسف بيانلو
  انتشارات: نص

متن کتاب را از اینجا [[4]] بگیرید


5. 10 با پروژه AVR

  تالیف: نجمه مشكباربخشايشي 
         مينا ميناپور 
         مهدي كاظم‌لو 
         سيدمهدي حسيني‌دستجردي 
  انتشارات: آفرنگ 

متن کتاب را از اینجا [5] بگیرید


6. آموزش CodeVision AVR

  تالیف: بهداد دالوندي 
        سيدابوالحسن تجملي‌محدث 
  انتشارات: ناقوس 

متن کتاب را از اینجا [6] بگیرید


7. آموزش ساده و عملي ميكروكنترلرهاي AVR

  تالیف: حمید شبستری
  انتشارات: فدك ايساتيس 

متن کتاب را از اینجا [7] بگیرید


8. آموزش ميكروكنترلرهاي خانواده AVR

  تالیف: مصطفي حسيني 
         ميكاييل احمدي‌گيوي 
  انتشارات: پیام پویا

متن کتاب را از اینجا [8] بگیرید


9. برنامه‌نويسي ميكروكنترلرهاي AVR به زبان FAST AVR

  تالیف: اميد شريفي‌تهراني 
  انتشارات: غزل 

متن کتاب را از اینجا [9] بگیرید


10. پروژه‌هاي ميكروكنترلر AVR- PIC - 8051

  تالیف: سيدمحمدرضا موسوي‌تقي‌آبادي 
         علي زاهدكامه‌عليا 
         مهدي نشاط يزدي 
  انتشارات: پرتو نگار

متن کتاب را از اینجا [10] بگیرید


بیسیک:


1. ميكروكنترلرهاي AVR

  تالیف: علی کاهه
  انتشارات: نص  

متن کتاب را از اینجا [11] بگیرید


اسمبلی:


1. آشنايي با ميكروكنترلرهاي AVR

  تالیف: جمشيد زارع‌مودي 
  انتشارات: پرتو نگار 

متن کتاب را از اینجا [12] بگیرید.


2. زبان اسمبلي ميكروكنترلرهاي AVR

  تالیف: محمدصالح نام‌بخش 
  انتشارات: ناقوس اندیشه

متن کتاب را از اینجا [13] بگیرید


3. ساختار ميكروكنترلرهاي AVR

  تالیف: علي سليميان‌ريزي 
  انتشارات: نشر شيخ‌بهايي 

متن کتاب را از اینجا [14] بگیرید


4. ميكروكنترلرهاي AVR سري Mega

  تالیف: سعيد شجاعي 
         نادر مهرا  
  انتشارات: موسسه ‌فرهنگي‌ هنري‌ ديباگران ‌تهران 

متن کتاب را از اینجا[15] بگیرید