برد های آردوینو تنوع بسیار زیادی دارند . عمده تفاوت این برد ها در تعداد ورودی خروجی و همچنین کار برد های مختلف آن است . در بیشتر برد های آردوینو از میکروکنترلر های 8 بیتی AVR استفاده شده است . در سری های جدید برد های آردوینو نیر از میکروکنترلر های STM32 هم به کار گرفته شده است . در این بین برد آردوینو DUE یکی از برد های قدر آردوینو است . اما متاسفانه به دلیل استفاده از میکروکنترلر های 32 بیتی ATMEL در این برد و هچنین تفاوت های ساختاری این برد با دیگر برد های آردوینو ، این برد را به یکی از گوشه گیر ترین پلتفرم های آردوینو تبدیل کرده است . بسیاری از کتابخانه های موجود برای آردوینو ، از این برد پشتیبانی نمیشود . همچنین امکان توسعه این برد در آردوینو IDE زیاد جالب به نظر نمی رسد . وجود صد ها ریجیتسری ، کانفیگ های پیچیده و قابلیت های فراوان در آردوینو IDE بسیار وقت گیر است . ما در این آموزش به راه اندازی و آموزش برد آردوینو DUE در پلتفرم Atmel Studio خواهیم پرداخت . با شناخت منابع سخت افزاری این برد و همچنین راه اندازی آن در آردوینو IDE ، شما می توانید بسیاری از پروژه ایی که نیاز مند سرعت پردازش بالا هستند را توسط این برد اجرا کنید . یا از آن به عنوان یک MCU استفاده کیند ، کاری که امروزه در بسیاری از پروژه های مربوط به خانه های هوشمند و در سطح وسیعی صورت میگیرد . قبل از هر چیز بهتر است به جواب سوالاتی که در این زمینه پیشخواهد آمد بپردازیم .

 

چرا از آردوینو DUE استفاده کینم ، در صورتی که استفاده از میکروکنترلر آن به صورت جدا گانه کار راحت تری به نظر می آید ؟

طراحی سیستم های امبدد نیازمند وجود یک MCU است . شاید تا بحال نیاز به ساخت PCB و سفارش آن در شرکت های چاپ PCB پیدا کرده باشید . اولین موردی که بسیار مهم و حائز اهمیت است محدودیت های چاپ PCB برای شرکت های سازنده PCB در ایران است . محدودیت هایی شامل حداقل عرض ترک ، قطر وایا و… . این محدودیت ها در شرکت های ساخت PCB چینی بسیار کمتر هستند به طوریکه برخی از محدودیت ها برای سازندگان چینی تنها محدودیت های نرم افزاری هست . شاید دقت کرده باشید به ما/زول ها و برد های چینی ، همه این برد ها ترک هایی با عرض 0.1mm و یا وایا هایی با عرض کمتر 0.2mm دارند . اگر بخواهید برد های با این ظرافت و دقت طراحی کنید به احتمال زیاد مجبور خواهید شد که در شرکت های خارج از ایران ثبت سفارش کنید . این امر هزینه بالایی را به همراه دارد . همچنین اگر با رعایت محدودیت هایی که بیشتر شرکت های ایرانی در ساخت pcb دارند برد خود را طراحی کنید ، قطعا یک برد با ابعاد بزرگ خواهید داشت . بهترین راه کار در چنین شرایطی استفاده از برد های آماده است . می توانید برد را به عنوان یک MCU با مدار خود کانکت کنید . در این صورت حتا نیازی به تامین حداقل های راه اندازی MCU نیز نخواهید داشت .

 

با وجود صد ها برد توسعه ARM چرا باید از آردوینو DUE استفاده کرد ؟

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

 

در این مقاله ما به سه مبحث میکروکنترلر AT90SAM3X8E ، آردوینو DUE و محیط Atmel Studio خواهیم پرداخت . اساس آموزش بر مبنای پریفرال های اصلی میکروکنترلر AT90SAM3X8E می باشد .  پس تا اینجا دلایل خوبی برای کار کردن با این برد پیدا کردیم . می توانید پروژه های خود را به صورت شیلد برای این برد پیاده سازی کنید یا از روش های دیگری مثل اتصال از طریق سیم با برد خود داشته باشید . در این آموزش مرحله به مرحله به آموزش های مربوط به این برد می پردازیم . همچنین از پلتفرم Atmel Studio استفاده خواهیم کرد . قبل از شرح هر چیزی بهتر است نگاهی به خود برد آردوینو DUE داشته باشیم .

 

 

این برد شامل :

1- دارای 54 پین ورودی خروجی ( pinout v1.0 منطبق بر برد های Mega )

2- شامل دو پورت USB که می یکی از آن ها دارای مبدل USB-TTL می باشد .

3-دارای جک آداپتوری با امکان تغذیه از طریق 7 تا 12 ولت .

4-دارای پورت های SW و JTAG جهت اتصال به پروگرامر های ARM .

5- دارای کلید ریست و همچنین کلید Erase برای اک سازی برنامه برد .

6- دارای چورت SPI منطبق با AVR ISP

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

 

 

در شکل زیر معماری SAM3X8E نشان داده شده است :

 

در این آموزش جهت آشنایی با پیکر بندی میکروکنترلر ، آردوینو DUE را انتخاب نخواهیم کرد و خود میکروکنترلر را انتخاب می کنیم . مراحل ساخت یک پروژه در تصاویر پایین نشان داده شده است :

1- ابتدا از منوی File گزینه New و سپس Project را انتخاب کنید :

2- در پنجره باز شده گزینه نشان داده شده در تصویر زیر را انتخاب و سپس Ok را بزنید :

3- در پنجره بعدی مدل میکروکنترلر خود را باید انتخاب کنید که در اینجا باید مدل SAM3X8E را انتخاب نمایید :

 

4- در پنجره بعدی بر روی میکرو کنترلر SAM3X8E کلیک کرده و در پایین پنجره گزینه Arduino DUE را انتخاب و OK را بزنید :

5-پس از ساخته شدن پروژه در پنجره Solution Explorer پوشه scr را انتخاب و سپس فایل main.a را باز کنید . این همان بدنه اصلی برنامه می باشد:

 

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

قبل از هر چیز بهتر است به قلب تپنده این میکروکنترلر ، یعنی واحد Clock Generator بپردازیم . شکل زیر واحد اصلی کلاک نشان داده شده است :

 

در اینجا واحد کلاک دارای چهار خروجی است که شرح هر کدام به صورت زیر است :

1- خروجی SLCK که همان خروجی فرکانس پایین جهت واحد های RTC و RTT ( تایمر های زمان واقعی ) می باشد . خروجی این قسمت توسط دو واحد کریستال ساعت داخلی و کریستال ساعت خارجی کنترل می گردد . انتخاب بین کریستال ساعت خارجی و داخلی توسط بیت XTALSEL از ریجستر SUPC_CR می باشد . در واقع با یک کردن بیت XTALSEL این واحد فعال شده و فرکانس 32.768KHz را در خروجی SLCK قرار می دهد .

 

2- خروجی دوم واحد MAINCK می باشد که همان فرکانس اصلی میکروکنترلر را تامین می کند . این واحد خود نیز توانایی استفاده از کریستال های داخلی و یا خارجی را دارد . انتخاب بین کریستال خارجی و یا داخلی از طریق یک مالتی پلکس و توسط بیت MOSCSEL از ریجستر CKGR_MOR کنترل می شود . کریستال خروجی قابل پشتیبانی 3 تا 20MHz است . همچنین دارای کریستال داخلی 4 ، 8 و 12MHz می باشد . در برد آردوینو DUE از یک کریستال 12MHz استفاده شده استخروجی این قسمت خود به واحد های PLL که وظیفه تقسیم فرکانس را بر عهده دارند می رسد . همچنین واحد USB به صورت مستقیم به واحد کریستال خراجی متصل است ( به دلیل استفاده از کریستال در USB HS) .

 

حال به برسی پیکر بندی واحد کلاک در Atmel Studio خواهیم پرداخت . به طور کلی در میکروکنترلر های سری STM32 شرکت ST از برنامه STM32CubeMax برای پیکر بندی میکروکنترلر استفاده می شود . این برنامه امکان پیکر بندی میکروکنترلر را به صورت بصری فراهم می سازد . اما در میکروکنترلر های 32 بیتی Atmel از AFS استفاده می شود . AFS قابلیت پیکر بندی قسمت های مختلف میکروکنترلر را در  Atmel Studio فراهم می سازد . در واقع می توان AFS یک میان افزار همانند Wizard در کد ویژن می باشد .

برای پیکر بندی های واحد کلاک ما از AFS استفاده می کنیم . پس از باز کردن برنامه Atmel Studio می تواندی از قسمت New Project یک پروژه جدید بسازید . نکته مهم در این آموزش پشتیبانی Atmel Studio از برد آردوینو DUE است . به طوری که شما هم می توانید میکروکنترلر AT90SAM3X8E را به تنهایی انتخاب و یا از قسمت برد های توسعه برد آردوینو DUE را انتخاب کنید .

 

 

در قسمت های بعدی این آموزش نحوه پیکربندی واحد کلاک در اتمل استدیو آموزش داده می شود . با ما همراه باشید .

 

 

Tags:
About Author: USER_4