XMEGA

3 پروژه جدید در بخش دانلود قرار داده شده است:

1- کتابخانه LCD کاراکتری: با استفاده از کتابخانه معرفی شده در این پروژه می توان LCD های کاراکتری را بصورت 4 بیتی راه اندازی کرد. کتابخانه بگونه ای طراحی شده که پایه های کنترل و دیتا می توانند بصورت انتخابی از هر پورت دلخواه انتخاب شوند و نیازی به رعایت ترتیب و حتی در یک پورت بودن پایه ها نیست. همچنین در این کتابخانه از دو روش ایجاد تاخیر و یا خواندن وضعیت Busy از LCD،  پشتیبانی می شود. امکان تعریف فونت و توابع مختلف مرتبط با LCD در این کتابخانه پیش بینی شده است.

2- فرکانس متر: با استفاده از کتابخانه مذکور برنامه ای برای نمایش فرکانس اعمال شده به PC2 روی LCD نوشته شده که تا فرکانس های بالا به خوبی جواب می دهد و برای فرکانس 16 مگاهرتز تست شده است.

3- تولید ملودی مارش ترک: در این پروژه ملودی مارش ترک ساخته ولفگانگ آمادئوس موتسارت بصورت یک پالس با فرکانس متغیر روی PC7 تولید می شود.
بازگشت به مطالب آموزشی
 
در این پروژه با استفاده از سنسور دمای داخلی موجود در XMEGA یک دماسنج برای سنجش دمای محیط ساخته شده است. مقدار دما روی 5 عدد از 7segment های روی برد آموزشی نمایش داده می شود. در پروژه کتابخانه KEY_7SEG.c نسبت به پروژه های قبلی تغییر پیدا کرده و در آن از کتابخانه های TC_driver.c و port_driver.c که توسط Atmel عرضه شده اند، استفاده شده است. همچنین کتابخانه adc_driver.c به منظور فعال سازی و استفاده از ADC بکار گرفته شده است. به منظور تثبیت دمای نمایش داده شده، یک عملیلت متوسط گیری روی مقدار اندازه گیری شده انجام می شود و از هر 64 نمونه متوالی متوسط گیری می شود و حاصل  آن نمایش داده می شود.
سورس پروژه در بخش دانلود قابل دسترسی است.
 

یکی از امکانات مهم XMEGA که قابلیت کاربرد در پروژه های رباتیک و CNC را برای این میکروکنترلر فراهم می کند، پشتیبانی از 3 محور Shaft encoder بصورت سخت افزاری و توسط واحد QDEC است. در پروژه ای که در بخش پروژه های XMEGA قرار داده شده، موقعیت نسبی یک Shaft encoder با دقت 5000ppr روی 5 عدد 7segment نمایش داده می شود. با توجه به اینکه در هر دور از چرخش تعداد 20000 لبه ایجاد می شود، بنابراین روی صفحه نمایش اعدادی در محدوده 19999-0 ظاهر می شوند که نشاندهنده موقعیت مکانی نسبت به نقطه صفر است. همچنین با فشار دادن هر یک از 12 کلید موجود روی برد، رقم نمایش داده شده صفر می شود. خروجی های QDPPH0 و QDPH90 به ترتیب به PC5 و PC6 متصل می شوند و سطح 3.3 ولت برای تغذیه هم در پالس های اعمال شده به XMEGA باید رعایت شود.سورس پروژه در بخش دانلود قرار دارد.

بازگشت به مطالب آموزشی

 

در این پروژه با استفاده از کتابخانه های Atmel محتوای اعداد نوشته شده روی 7segment های برد آموزشی در حافظه 24C64 موجود روی برد نوشته شده و مجددا از آن خوانده می شود. روال عملکرد برنامه به این صورت است که در هنگام ریست شدن میکروکنترلر، اطلاعات از EEPROM خوانده شده و روی صفحه نمایش داده می شود. به همین دلیل در بار اول اجرای برنامه و از آنجا که اطلاعات خاصی روی EEPROM نوشته نشده، کاراکترهای نمایش داده شده نامفهوم هستند. از 12 کلید موجود در برد آموزشی، کلیدهای موجود در 2 سطر بالا و 2 کلید واقع در سطر سوم و ستون های اول و دوم برای نمایش اعداد 0-9 روی 7segment اختصاص داده شده اند. کلید واقع در سطر سوم و ستون چهارم برای ذخیره سازی محتوای صفحه نمایش و کلید واقع در سطر سوم و ستون سوم برای فراخوانی از EEPROM اختصاص داده شده است. اگر اعداد مورد نظر روی صفحه تایپ شوند و کلید ذخیره سازی فشار داده شود، حتی در صورت تغییر اعداد و در هر لحظه که کلید فراخوانی فشار داده شود (و یا با ریست شدن میکروکنترلر)، اعداد ذخیره شده مجددا نمایش داده خواهند شد. در این برنامه همچنین از کتابخانه KEY7SEG.c که قبلا برای فعال سازی صفحه کلید و 7segment های برد آموزشی نوشته شده بود، استفاده شده است.سورس پروژه در بخش دانلود قرار دارد.

توجه مهم: در نسخه های قدیمی برد آموزشی باید یک مقاومت 3.3 کیلواهم بین پایه شماره 6 از eeprom و Vcc قرار بگیرد.

بازگشت به مطالب آموزشی

 

نویسنده: اوژن کی نژاد

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

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

Pattern generation برای تولید یک Bit Pattern مشخص روی پورت خروجی و برای کنترل موتورهایی مانند BLDC و استپر موتور کاربرد دارد. در این وضعیت محتوای پورت بصورت سنکرون با تایمر و بر حسب یک بافر مشخص، بصورت خودکار تغییر می کند. به این معنی که در شرایط Update تایمر (که می تواند در TOP یا BOTTOM اتفاق بیافتد)، یک وضعیت از پیش تعریف شده روی پورت قرار می گیرد که این وضعیت برای هر پین می تواند High و Low و یا خروجی PWM کانال A تایمر باشد. از طریق این امکان می توان یک سیگنال PWM را در 8 پین مختلف و بسته به شرایط توزیع نمود.

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

و یا توزیع انتخابی PWM که می تواند در کاربردهایی ( احتمالا کنترل نور LED های معمولی و RGB و ...) مورد استفاده قرار بگیرد و با استفاده از این امکانات می توان بار CPU را برای انجام برخی از کاربردها کاهش داد و آن را به عهده سخت افزار سپرد.

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

بازگشت به مطالب آموزشی

 

صفحه 1 از 8

<< شروع < قبلی 1 2 3 4 5 6 7 8 بعدی > انتها >>

با کلیک روی 1+ نوین تراشه را محبوب کنید!

| + -