| کابینت آشپزخانه | مقالات بازاریابی اینترنتی | خرید اپل ایدی | دانلود قالب جوملا | وکیل پایه یک | اجاره بیلبورد | سنگسابی | ترمیم مو | سرور مجازی | درب اتوماتیک | طراحی سایت | تعمیرات مبل | فن کویل | تعمیر یخچال | اسکوتر هوشمند | دوربین مدار بسته | پویا جیم ، تردمیل خانگی | بازاریابی محتوایی
میکروکنترلر XMEGA
منو

جستجو در سایت

 میکروکنترلر XMEGA

از جمله اولین نکات این خانواده این است که تا 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 وجود دارد.
تایمرها: در خانواده 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 است.
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 تعیین شده، باعث به روز سازی و ایجاد تغییر مقدار در خروجی آنالوگ مورد نظر گردد.
مقایسه کننده آنالوگ: قبل از توضیح راجع به تفاوت مقایسه کننده آنالوگ در خانواده XMEGA با AVR های معمولی،ذکر این توضیح لازم است که استفاده از این مقایسه کننده ها برای تصمیم گیری های بسیار سریع روی ورودی های آنالوگ به دلیل سرعت بالای مقایسه کننده ها در تشخیص وضعیت ورودی، در کاربردهایی مانند درایورهای قدرت و مدارات کنترل جریان اهمیت زیادی دارد و در IC های switching regulator و کنترل موتور برای فیدبک گرفتن از ولتاژ یا جریان معمولا از عملکرد مقایسه کننده های آنالوگ استفاده می شود. مقایسه کننده های آنالوگ در AVR های معمولی به تعداد یک عدد موجود است ( به غیر از برخی شماره های بسیار خاص مانند ATMEGA64M1 automotive ) . ورودی مثبت این مقایسه کننده در AVR می تواند از یک پین مشخص ورودی یا یک ولتاژ مرجع داخلی و ورودی منفی هم از یک پین مشخص ورودی یا پین های متصل به ADC فرمان بگیرد. خروجی این مقایسه کننده هم به غیر از تولید وقفه می تواند به عنوان فرمان Capture مربوط به TIMER1 بکار رود. اما در خانواده XMEGA حداقل دو و حداکثر 4 مقایسه کننده آنالوگ وجود دارد و امکانات به مراتب قوی تری نسبت به عملکرد مقایسه کننده های این خانواده به شرح زیر اضافه شده است.
وقفه های خارجی: برای تولید وقفه های خارجی در خانواده AVR پین های مشخصی در هر شماره وجود دارند که از طریق اعمال ورودی مناسب به آنها، وقفه های خارجی تولید می شوند. این ورودی ها از نظر تعداد کاملا محدود هستند، چنانکه به عنوان مثال در mega32 دو ورودی و در mega128 حداکثر 8 ورودی به عنوان ورودی های وقفه خارجی وجود دارند. البته در برخی شماره ها مانند tiny13 یک مکانیزم Pin change interrupt هم وجود دارد که در شرایط تغییر وضعیت پین های یک پورت می تواند وقفه مخصوص به خود را ایجاد کند. اما پین های تمام پورت ها در خانواده XMEGA قادر به ایجاد وقفه خارجی هستند. برای هر پورت دو وقفه مجزا وجود دارد که تمام پین های پورت این قابلیت را دارند که به عنوان منبع تولید این وقفه ها برنامه ریزی شوند. پین شماره 2 از هر پورت ویژگی خاص تری برای تولید وقفه دارد که برای جزئیات این مطلب باید به datasheet های مربوطه مراجعه شود. یکی از قابلیت هایی که در همین مورد وجود دارد، امکان فعال سازی وضعیت Inverted I/O برای هر ورودی و خروجی است که به مفهوم فعال سازی یک گیت NOT در هر ورودی و خروجی پورت است. با توجه به اینکه وقفه های خارجی برای 4 وضعیت لبه بالا رونده، لبه پائین رونده، تغییرات و سطح Low قابل برنامه ریزی هستند، با استفاده از امکان NOT کردن ورودی می توان درخواست وقفه برای سطح High را هم به عنوان پنجمین وضعیت بوجود آورد و بنابراین تمام حالت های متصور برای درخواست وقفه خارجی در XMEGA پشتیبانی می شوند.
محدوده تغذیه: مقدار 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 اجتناب ناپذیر است.

نوشته شده توسط: علی کاظمی

 

 

 

ارتباط با ما

فرم ورود



بازگشت به بالا