آنچه در این مقاله میخوانید :
Toggleدر مقاله امروز می خواهیم در مورد میکروکنترلرهای avr صحبت کنیم و با محیطهای توسعه آنها آشنا شویم.
در ادامه نیز در مورد نقشه حافظه آنها و دیگر خصوصیات این قطعات الکترونیکی پرکاربرد صحبت خواهیم کرد تا شما را به درک کاملی از این موضوع برسانیم. پس با ما همراه باشید.
ارتباط میکروچیپ های atmel avr با آردوینو
میکروکنترلر avr اولین بار توسط کمپانی atmel طراحی و تولید شد، امل اکنون مالکیت این کمپانی را شرکت microchip در اختیار دارد. میکروکنترلرهای avr در بین متخصصان و افرادی که برای سرگرمی در این حوزه فعالیت دارند، بسیار محبوب هستند و کاربردهای آموزشی نیز دارند. به علت به وجود آمدن محصولات آردوینو و اکوسیستم آن، این حوزه رشد چشمگیری را شاهد بوده است. محصول ابتدایی آردوینو و شامل مدل Uno و Duemilanove میشود که هر دو از چیپ های atmel بهره میبرند. البته انواع مختلف دیگری از این میکروکنترلر ها نیز در بازار وجود دارد که در بسیاری نیز از همین نوع پردازنده ها استفاده می شود.
محصولاتی نیز در بازار وجود دارند که به اسم میکروکنترلرهای avr به فروش میروند. کاربرد این قطعات برای یادگیری معماری atmel avr و زبان های برنامه نویسی سی و سی پلاس پلاس می باشد. علاوه بر این محصولات غیر اصلی از مفاهیم مهندسی مانند قانون اُهم پیروی نمیکنند، پس در هنگام خرید دقت کنید که میکروکنترلر های avr اصلی را خریداری کنید.
در اکثر میکروکنترلرهای avr، نمایشگر LED وجود ندارد و به خرید LED اضافه نیاز خواهید داشت که با برق ورودی ۵ ولت و یک مقاومت ۲۲۰ تا ۱ کیلو اهمی می توانید به راحتی از این صفحه نمایشگر استفاده کنید.
آسان ترین راه برای راه اندازی و یادگیری کاربردهای میکروکنترلرهای AVR، خرید یک آردوینو UNO یا مدلهای مشابه آن است که قیمتی حدود ۵ دلار یا کمتر دارد. علت پیشنهاد ما برای خرید این مدل، عرضه شدن با بوت لودر از پیش بارگذاری شده است که فرآیند فلش کردن برنامههای شما را آسان تر می سازد. این قابلیت تنها وقتی از بوت لودر آردوینو استفاده میکند که بخواهید کدهای خود را لود کنید و در فرآیند یادگیری AVR تداخلی ایجاد نمیکند. این بوت لودر ها به شما امکان برنامه نویسی به وسیله اتصال با کابل usb را فراهم می کند و دیگر نیازی به سیم کشی های پیچیده و گمراه کننده برای میکروکنترلر خود نخواهید داشت.
این نکته را در نظر داشته باشید که پردازنده به کار رفته در این میکروکنترلر ها عموما ATMEGA 328P می باشد و اگر از مدلهای نانو نیز استفاده می کنید، عموما همین پردازنده را دارند ولی فقط در ابعاد کوچکتر تولید می شوند و کارکردی مشابه با آردوینو UNO خواهند داشت.
محیط توسعه
یکی از مزیتهای محصولات AVR، داشتن جامعه ای گسترده از کاربران و متخصصان است که منابع اوپنسورس بسیاری را تولید میکنند. همچنین کتابخانههای متنوعی برای به کارگیری و حتی ابزارهای دسکتاپ برای توسعه این محصولات در دسترس شما خواهد بود. البته در این مطلب به هدف ما آگاهی از کارکرد و درک کلی شما از میکروکنترلر های AVR است و قصد استفاده این کدهای از پیش آماده را نداریم.
برای ارسال هر کد یا دستور به آردوینو که موضوع بحث ماست، به محیط توسعه یکپارچه یا به اختصار IDE نیاز خواهید داشت که چندین گزینه پیش روی شما قرار دارد. اولین مورد ATMEL استودیو می باشد که توسط شرکت ATMEL طراحی شده و برای این کار گزینه ای مناسب است. در این میان افزار، هر چیزی که برای توسعه پلتفرم های AVR لازم باشد را در اختیار دارید و به همراه سندها و راهنمایی های مورد نیازتان عرضه شده که پیدا کردن جایگزینی که از این محیط آسانتر و بهتر باشد، قطعاً کار سختی خواهد بود.
البته برای ارسال کد یا دستور به آردوینو و مدلهای مشابه آن، علاوه بر محیط توسعه باید افزونه آن را نیز روی سیستم عامل خود نصب کنید. در این مورد کمی حق انتخاب شما محدودتر می شود. زیرا ATMEL استودیو تنها برای سیستم عامل ویندوز عرضه میشود. درست است که اکثریت افراد از همین سیستم عامل استفاده میکنند، اما افرادی با سیستم عامل های لینوکس و مک او اس از این مورد بینصیب خواهند ماند. این افزونه را می توانید از وب سایت رسمی ATMEL یا همان مایکروچیپ پیدا و مستقیماً دانلود کنید.
گزینه های بعدی پیشنهادی ما برای IDE سازگار با آردوینو های AVR، دو مجموعه با نام های WIN AVR و AVR-DUDE می باشد که در عمل یکی هستند و تنها تفاوتشان این است که مورد اول مخصوص سیستم عامل ویندوز است و دومی برای عامل های یونیکس و لینوکس مانند می باشد.
با استفاده از این نرم افزار ها می توانید از IDE هایی با زبان سی و سی پلاس پلاس استفاده کنید. البته کار کرد دو نرمافزار آخر کمی مشکل تر از ATMEL استودیو به نظر میرسد، اما با کمی تمرین می توانید با محیط کاربری آن آشنا شده و پروژه های خود را بسته به سخت افزار و سیستم عامل مورد نیازتان روی میکروکنترلرهای AVR اجرا کنید.
روش نصب نرمافزارهای WIN AVR و AVR-DUDE را میتوانید در اینترنت جستجو کنید، اما به نسخه سیستمعامل و نرمافزار خود توجه کنید تا با هم تطابق داشته باشند. زیرا طریقه نصب آنها می تواند در نسخه های مختلف متفاوت باشد.
آشنایی با برنامه نویسی مبتدی برای میکروکنترلرهای AVR
قبل تر هم گفتیم که برای برنامه نویسی میکروکنترلر های AVR میتوان از هر دو زبان برنامه نویسی سی و سی پلاس پلاس استفاده کرد. اگر از قبل با این زبان ها آشنایی داشته باشید قطعاً کار شما آسان تر خواهد بود، در غیر این صورت هم نگران نباشید زیرا منابع فارسی بسیاری برای یادگیری در دسترس شما قرار دارد.
وقتی یک برنامه را روی کامپیوتر توسعه میدهید، در واقع در حال استفاده از حافظه ای هستید که سیستم عامل به شما اختصاص داده است. در مورد میکروکنترلرها این موضوع متفاوت است، زیرا اکثر آنها فاقد سیستم عامل هستند.
در نتیجه شما باید به تمامی حافظه دسترسی پیدا کنید و با این کار شما انعطاف پذیری بیشتر و دسترسیهای عمیقتری به حافظه آن دستگاه خواهید داشت. اما امکان تخریب حافظه یا رفتارهای غیر منتظره به دلیل نوشتن دستورهای اجرایی در قسمتهای نامناسب حافظه پیش روی شما خواهد بود. خوشبختانه این فرآیند با استفاده از قابلیت نامهای رجیستری (REGISTER NAMES) آسانتر شده است.
روی پلتفرم های کامپیوتری که با سیستمعامل کار میکنند مانند کامپیوترهای خانگی و لپتاپها، اگر برنامه شما بخواهد به قسمتهایی از حافظه دسترسی پیدا کند که متعلق به شما نیست، با خطای معمول و شایع ممانعت دسترسی (ACCESS DENIED) مواجه خواهید شد و قادر به ادامه دادن مسیر اجرای برنامه نخواهید بود. اما در میکروکنترلرها اگر چنین شرایطی پیش بیاید، دستگاه شما را منع نمی کند و اینگونه فرض میکند که این قسمتی از دستور شماست که برای اجرا شدن برنامه ضروری است.
نقشه های حافظه (MEMORY MAPS)
میکروکنترلرهای AVR در ابعاد و شکل های مختلفی ساخته میشوند، اما برای برنامه نویسان قطعاً جزئیات درونی مهمتر از شکل ظاهری است. اگر به مفاهیم پایه ای کامپیوتر آشنا باشید، تفاوت بین RAM و حافظه دائم را میدانید.
اما برای یادآوری باید بگوییم که RAM حافظه ای موقت برای اجرای دستورات تصادفی است ولی حافظه دائم جایی برای ذخیره سازی فایل هاست. همچنین متخصصان ممکن است با مفهوم CACHE در پردازندههای مرکزی نیز آشنا باشند که عملکردی مشابه با این نوع حافظه ها دارند. باید بگویم که طراحی و کارکرد میکروکنترلرها مقداری با ساختار و نحوه کارکرد CPU ها در کامپیوتر تفاوت دارد.
برخلاف پردازندههای مرکزی یا همان CPU ها در کامپیوتر، هسته پردازنده میکروکنترلرها نیازی به حافظه های دائمی مثل هارد دیسک و حافظه های پرسرعت ssd ندارد. دلیل آن هم وجود داشتن حافظه درونی در ساختار میکروکنترلرهاست. البته درست است که تعداد ریزپردازنده ها و رجیسترها در CPU ها بسیار بیشتر از هسته پردازنده های میکروکنترلرها مانند ATMEGA328P است، اما جای نگرانی وجود ندارد. زیرا عدم وجود سیستم عامل در میکروکنترلرها باعث می شود تا این تفاوت کمتر به چشم بیاید.
وقتی که قصد ساختن نقشه حافظه را دارید، بهترین راه مراجعه به رجیستر های از پیش ثبت شده،حافظه برنامه و RAM آن می باشد. پس باید برنامهریزی را طوری انجام دهید که با فضای مورد نیازتان تطابق داشته باشد.
با طرح یک مثال این مفهوم را ساده تر توضیح خواهیم داد. تصور کنید که یک خیابان بزرگ، تعداد بسیار زیادی کوچه را شامل میشود که از کوچه ۱ تا ۹۹ را منطقه صنعتی، از کوچه ۱۰۰ تا ۱۹۹ آن را منطقه اداری و از کوچه ۲۰۰ تا ۲۹۹ آن را نیز منطقه مسکونی تشکیل داده است.
این آدرس ها در معماری AVR (و اکثر معماری های کامپیوتری دیگر) بر بستر بایت است، یعنی برای هر بایت از اطلاعات آدرس به خصوصی وجود دارد. این موضوع بدین معنی نیست که یک متغیر نمی تواند بیشتر از یک بایت را اشغال کند. در واقع متغیرها میتوانند از یک بایت مشخص شروع کرده و دیگر دیگر بایت ها را اشغال کنند.
رجیسترها
مفهوم رجیسترها در علم الکترونیک را می توان چنین تعریف کرد، جزهایی که میتواند اطلاعات و آدرس های بخصوصی را در خود نگهداری کنند. تمامی حافظههای کامپیوتری (البته به جز هارددیسک ها) نوعی رجیستر تلقی میشوند. البته تعریف رجیستر در حوزه سخت افزار و قطعات الکترونیکی می تواند با مفهوم آن در حوزه نرم افزار و برنامه نویسی متفاوت باشد.
رجیستر ها را می توان مانند متغیرها فرض کرد، اما آنها به وسیله سختافزار نیز به کار گرفته میشوند و روی رفتار آن تاثیر می گذارند. از آنجایی که حافظه ها با واحد بایت آدرس گذاری می شوند، استفاده کردن آنها تنها برای یک هدف (۰ و ۱ یا صحیح و غلط) در عمل باعث هدر رفت حافظه میشود. به همین دلیل بود که رجیسترها به وجود آمدند. آنها شامل اطلاعات مرتبطی هستند که ممکن است چند بیت را اشغال کند و نه کل بایت.
کلام آخر
در آخر باید بگویم تئوری هایی که در مورد برنامه نویسی میکروکنترلر های avr وجود دارد، تا زمانی که به مرحله عمل نرسند، ارزش واقعی شان را نشان نمی دهند. پس شما می توانید در همین لحظه کار را با سفارش دادن قطعات الکترونیکی مورد نیازتان از قسمت فروشگاه هادی بان الکترونیک آغاز کنید.
در این این مقاله سعی کردیم به شما کمک کنیم تا درک کلی از عملکرد میکروکنترلرهای AvR و برنامه نویسی آنها پیدا کنید تا بتوانید در حوزه برنامه نویسی و بکارگیری این قطعات پرکاربرد، بهینه تر عمل کنید.
دیدگاهتان را بنویسید