راه اندازی بخش GPIO در میکروکنترلر LPC1768

0
50

۱- برای شروع کد نویسی برای پین‌های مورد نظر ابتدا می بایست پین‌هایی را که مد نظر هستند انتخاب نماییم، بردی که در اختیار ما هست دارای شماتیک زیر می باشد:

انتخاب پین‌های مورد نظر برای راه اندازی بخش GPIO در میکروکنترلر LPC1768
انتخاب پین‌های مورد نظر برای راه اندازی بخش GPIO در میکروکنترلر LPC1768

۲- با توجه به شکل متوجه می‌شویم که LED ها به پین‌های P2.0 تا P2.7 متصل شده‌اند؛ و به همین صورت پین های مورد استفاده توسط Switch ها نیز شناسایی می‌شود.

۳- خوب حال با توجه به گزارش شماره یک، فایل main.c برای شروع برنامه‌نویسی را ایجاد می‌کنیم و در ابتدا خطوط زیر را وارد می‌کنیم.

#include <lpc17xx.h>
int main()
{
	LPC_GPIO2->FIODIR = 0xFF;
	LPC_GPIO2->FIOSET = 0xFE;
}

۴- بررسی خط به خط برنامه:

  • در خط اول کتابخانه میکروکنترلر lpc1768 افزوده شده. کتابخانه دستورات مورد نیاز برای ارتباط و کار با قطعات جانبی میکروها رو فراهم میکند و هر میکرو کنترلر کتابخانه مخصوص به خود را دارد.
  • در خط دوم تابع معروف main تعریف شده است. تابع main بدنه کدنویسی به زبان C است و در اکثر زبان های مشتق شده از C نیز به این صورت است
  • در خط 4 ، LPC_GPIOx مربوط به کلاس‌های کار با ورودی و خروجی‌هاست . به جای x در این کد شماره PORT قرار داده می شود . برای مثال در این پروژه به دلیل اینکه پین های LED ها به پورت 2 متصل شده بودند LPC_GPIO2 انتخاب شده است.
  • برای کار با پین‌های میکروکنترلر ها ابتدا بایستی جهت پین مشخص شود. جهت به این معنا که یک پین به صورت خروجی عمل می‌کند یا ورودی، که در این صورت همانند خط4 FIODIR را مشخص می‌کنیم. DIR جهت پورت را مشخص می‌کند. هر پین که  به صورت منطقی یک تعریف شود، به صورت خروجی در نظر گرفته خواهد شد.
  • برای مثال می‌خواهیم چهار پین اول پورت به صورت ورودی و بقیه به صورت خروجی تعریف شوند:
     LPC_GPIO2->FIODIR = 0xF0
  • خوب بعد از  تخصیص خصیصه FIODIR نوبت به کد بعدی یعنی FIOSET و FIOCLR می رسد.
  • FIOSET برای قرار دادن پایه ها در حالت «یک منطقی» استفاده می‌شود.
  • FIOCLR برای قرار دادن پایه ها در حالت «صفر منطقی» استفاده می‌شود.

۵- حال نوبت به آزمایش میکروسوویچ های نصب شده بر روی برد میرسد .  میخواهیم برنامه ای بنویسیم که با فشردن کلید شماره ۲، تمامی LED های سمت راست خاموش شوند . ابتدا کد مورد نظر را در زبان C مانند شکل زیر وارد می‌کنیم:

#include <lpc17xx.h>
int main() {
		LPC_GPIO2->FIODIR = 0xFF;
	while(1)
	{
	if((LPC_GPIO2->FIOPIN & (1<<11))==0)
	{
		LPC_GPIO2->FIOSET = 0x0F;
	}
	else
	{
	LPC_GPIO2->FIOSET = 0xF0;
	}
}
}

برای بررسی وضعیت یک پایه باید از مسائل منطقی استفاده شود لذا به همین دلیل ۱ منطقی را به تعداد محل پایه به سمت چپ شیفت می دهیم و مقدار آن را چک می کنیم.

درج دیدگاه

Please enter your comment!
Please enter your name here