برنامه نویسی بسکام چیست؟ کاربردها و پیشرفت های صورت گرفته
هر روز شاهد پیشرفت های بزرگی در تمام زمینه های علوم فنی هستیم. بیشتر این پیشرفت ها را می توان به خاطر افزایش قدرت پردازش در کامپیوتر های شخصیمان نسبت داد که ایجاد ابزار های برنامه نویسی قدرتمند جدید و قابل اجرا روی کامپیوترهای مان را ممکن کرده اند. در زمینه الکترونیک ابزار های زیادی وجود دارد که روزانه از آن ها استفاده می کنیم و عصای دستمان هستند! همین امر در مورد قطعات الکترونیکی به ویژه میکروکنترلر ها که در 15 سال گذشته پیشرفت فوق العادهای داشته اند، هم صدق می کند.
این پیشرفت را می توان هم در پایین آمدن قیمت قطعات و هم در بهتر شدن مشخصات فنی مشاهده کرد. امروزه، یک میکرو کنترلر 32 بیتی ARM را می توان به همراه تجهیزات جانبی گسترده ای مثل مبدل های A/D (آنالوگ به دیجیتال) و D/A (دیجیتال به آنالوگ)، رابط های داخلی اِتِرنت، CAN و USB با چند یورو خریداری کرد. با این حال، ما باید چند نکته را مشخص کنیم: در کامپیوتر شخصی میکروکنترلر وجود ندارد، بلکه یک پردازنده قدرتمند 64 بیتی (احتمالا چند هسته ای) وجود دارد که سیگنال ها را به واحد های جانبی مختلف مثل ویدیو، حافظه، هارد دیسک و غیره ارسال و دریافت می کند. تفاوت بین یک میکرو کنترلر و یک پردازنده اساسا در واحد های جانبی است: یک پردازنده واحد های جانبی که در داخل تعبیه شده باشند، ندارد.
حتما دانلود کنید: آموزش مهندسی الکترونیک از صفر تا صد با 25 درس رایگان
این مقاله به میکروکنترلر های ARM و پردازنده ها نمی پردازد، بلکه اطلاعات اولیه ای را در اختیارتان قرار می دهد که پایه ای برای برنامه نویسی میکروکنترلر AVR شما خواهد بود. میکروکنترلر های معمولی AVR موتور ها، رله ها را هدایت می کنند، سیگنال ها را از حسگرها دریافت می کنند و داده ها را روی نمایشگر LCD نمایش می دهند. در ادامه این مطلب، اصول اولیه نحوه برنامه نویسی یا برنامه ریزی میکروکنترلر ها را نشان خواهیم داد. شما با اتمام این مقاله خواهید فهمید که چه طور خودتان یک برنامه برای میکرو کنترلر بنویسید.
میکرو کنترلر، پردازنده، کنترلر
بهتر است اول تفاوت بین میکروکنترلر، پردازنده و کنترلر را درک کنیم. اصطلاح کنترلر (Controller) معمولا برای اشاره به یک کنترلر PLC استفاده می شود، یعنی کنترلکننده ای مثل Simatic که برای اتوماسیون صنعتی استفاده می شود. بنابراین یک کنترلر PLC دستگاهی است که در جعبه ای مجهز به کانکتور های I/O (ورودی/ خروجی) و گاهی اوقات حاوی دکمه ها، نمایشگر های LED یا LCDو غیره است.
اصطلاح پردازنده (Processor) به عنوان تراشه ای توصیف می شود که واحد های جانبی داخلی مثل مبدل های A/D یا D/A را ندارد. یک پردازنده داده ها را دریافت می کند و محاسباتی را روی آن ها در یک هسته (یا هسته های) قدرتمند واحد منطق حسابی (ALU) انجام می دهد و سپس آن ها را به باس می فرستد. اصطلاح میکروکنترلر (Microcontroller) به تراشه ای اشاره دارد که شامل یک پردازنده متوسط (در مقایسه با یک پردازنده کامپیوتر شخصی) و مجموعه ای غنی از تجهیزات جانبی داخلی است. میکروکنترلر ها را می توان با تعداد بیت های موجود در هسته میکروکنترلر مشخص کرد : 4، 8، 16 و 32 رایج ترین بیت ها هستند. میکروکنترلر هایی که در این مقاله در موردشان بحث می کنیم، 8 بیتی هستند.
میکروکنترلر های AVR یکی از میکروکنترلر های محبوب در 10 سال اخیر هستند. از آن جایی که می خواهم یک میکروکنترلر را به ساده ترین شکل ممکن توصیف کنم، آن را به یک جعبه سیاه تشبیه می کنم که چندین پورت ورودی /خروجی دارد. میکروکنترلری که هنوز هیچ برنامه ای در آن نصب نشده است، هیچ عملکرد مفیدی هم انجام نخواهد داد. در کنار این برنامه، یک ولتاژ منبع تغذیه هم مورد نیاز است تا یک میکرو کنترلر انجام وظیفه اش را آغاز کند. میکروکنترلر ها در حال حاضر تقریبا در هر وسیله ای مثل اسباب بازی یا کنترلر PLC مورد استفاده قرار می گیرند. در خودرو های مدرن از میکروکنترلر های متعددی هم برای کنترل موتور، هم برای وسایل ایمنی و هم برای راحتی سرنشینان مثل سیستم های سرگرمی و GPS استفاده می شود.
حتما بخوانید: نکاتی برای افراد مبتدی در طراحی و الکترونیک
میکروکنترلر های AVR دارای یک ALU (واحد منطقی حسابی)، پورت های ورودی/ خروجی بیشتر، حافظه FLASH و واحد های دیگری هستند. با یک برنامه نویسی مناسب می توانیم حافظه فلش آن را با برنامه خودمان برنامه ریزی کنیم تا توسط ALU مرحله به مرحله اجرا شود. پورت های I/O دو جهته هستند، یعنی می توانند به عنوان ورودی یا خروجی عمل کنند. جهت داده پورت باید توسط برنامه ما تعریف شود. همان طور که قبلا هم ذکر شد، یک میکروکنترلر برای کار کردن به ولتاژ منبع تغذیه و همین طور یک تشدید کننده یا رزوناتور کریستالی یا سرامیکی خارجی نیاز دارد (اگر چه این قابلیت معمولا در میکروکنترلر های جدیدتر تعبیه شده است). کریستال یا تشدید کننده، همراه با یک مدار نوسان ساز داخلی، یک ساعت برای ALU ایجاد می کند. به دلیل نداشتن ساعت، ALU اجرای برنامه را متوقف می کند. اگر ساعت دوباره تنظیم شود، ALU دوباره شروع به کار می کند.
بسته به میکروکنترلر، ممکن است از جایی که متوقف شده است، بکآپگیری نشود. اکثر AVR ها حاوی یک نوسان ساز داخلی RC هستند که ساعت مورد نیاز ALU را ایجاد می کند، به این معنا که هیچ تشدید کننده کریستالی یا سرامیکی خارجی مورد نیاز نیست. فرایند تصمیم گیری برای انتخاب نوسان ساز داخلی RC و کریستال / رزوناتور خارجی در طول برنامه نویسی انجام می شود.
دانلود رایگان ۳ تا از بهترین جزوه های PDF آموزش کامل آلتیوم دیزاینر
برنامه AVR در حال اجرا در واقع دستورالعمل های کد ماشین است که به ALU می گوید چه کاری انجام بدهد. از آن جایی که ALU بر روی اعداد باینری یعنی با صفر و یک کار می کند، هر دستورالعمل از صفر و یک تشکیل شده است. هنگامی که میکروکنترلر ها برای اولین بار معرفی شدند، این زبان کد ماشین تنها راهی بود که برنامه نویسان می توانستند کد برنامه شان را بنویسند.
از آن جا که این روش خیلی جالب نبود، برنامه نویسان خیلی زود به زبان اسمبلی (با استفاده از برنامه Assember) روی آوردند. حتی این کار هم مایه زحمت بود، به همین خاطر امروزه از کامپایلر های سطح بالا مثلC ، Pascal و Basic بیشتر استفاده می شود. چنین کامپایلر های سطح بالایی برنامه شما را به کد ماشین ترجمه می کنند. در میان کامپایلر های بیسیک، یکی از کامپایلر های مطرح، Bascom-AVR است که مزایا و معایبی دارد. با این حال، من معتقدم که Bascom یک کامپایلر ایده آل برای برنامه نویسان مبتدی و حرفه ای است.