آموزش برنامه نویسی ARM – واحد GPIO

در میکروکنترلرهای ARM سری LPC1768 واحد به نام اتصال پین ها وجود دارد که باعث می شود هر کدام از پین های میکرو برای کاری خاص و امکان دلخواهتان در میکرو متصل شود. بر خلاف AVR در ARM پایه و پین ها برای کاربردهای مختلفی در نظر گرفته شده است که با استفاده از تنظیمات خاصی می توان کاربرد این پین ها را عوض کرد. در ادامه با آموزش واحد اتصال پین ها در میکرو ARM همراه شوید.

lpc-arm-board

رجیستر PINSELx

برای اتصال پین های میکرو به واحدهای خاصی از جمله GPIO، ADC و … هشت رجیستر ۳۲ بیتی به نام PINSELx وجود دارد که مقدار x می تواند مقادیر صفر تا ۱۰ را داشته باشد و از آن برای اتصال واحد های مختلف به پین ها استفاده می شود. البته در سری های دیگر این تعداد رجیستر ها ممکن است افزایش پیدا کند ولی در این سری LPC1768 هشت رجیستر استفاده می شود.

هر رجیستر، دو بیت دو بیت از هم جدا می شوند و برای اتصال با مقدار دهی این دو بیت، به واحدی خاص متصل می شود. اصولا با مقدار دهی این دو بیت به صفر واحد GPIO یعنی پین های ورودی و خروجی به پین متصل می شود و سایر امکانات میکرو از طریق سایر مقادیر متصل می شود.

جداول مربوط به این رجیستر ها را می توانید در دیتاشیت میکرو مورد نظر خودتان پیدا کنید.

pinsel0.1

انتخاب حالت pull up/pull down برای هر پین

برای انتخاب این حالت از رجیستری به نام PINMODE استفاده می شود که مانند PINSELx دارای ۳۲ بیتی می باشد که دارای چهار مختلف می باشد که در زیر می توانید حالت مختلف مقدار دهی آن را مشاهده کنید:

با مقدار دهی ۰۰ مقاومت pull up به پین مربوط به بیت مقدار دهی شده فعال می شود. با مقدار دهی ۰۱ اگر پین در حالت high باشد، مقاومت pull up و اگر در حالت low باشد، مقاومت pull down فعال می شود. با مقدار دهی ۱۰ هیچ کدام از مقاومت pull up و pull down فعال نمی شود. با مقدار ۱۱ مقاومت pull down فعال می شود.

این نکته هم باید توجه کنید که پین های P0.27 و P0.28 برای استفاده USB در نظر گرفته شده است و مقاومت pull up/down برای آن تعبیه نشده است.

برای مثال اگر بخواهیم با زدن کلید متصل به P0.2 چراغ LED متصل به پین P0.1 را خاموش و روشن کنیم از دستورات زیر استفاده می شود.

در کد بالا، پین P0.1 ابتدا روشن شده و بعد از وقفه ای ۱ ثانیه ای خاموش می شود این عمل در حلقه همیشه تکرار while انجام می شود. برای انجام وقفه تابع delay استفاده شده است که می توانید تابع آن را در کدهای بالا مشاهده کنید. امیدوارم از این آموزش لذت برده باشید.

منبع : الکترونیک پروژه

قبلی «
بعدی »

فارغ التحصیل دوره کارشناسی رشته برق الکترونیک دانشگاه صنعتی جندی شاپور , و دانشجوی کارشناسی ارشد الکترونیک دانشگاه شهید بهشتی، علاقه زیاد به برنامه نویسی AVR و ARM و DSP و طراحی مدار PCB از علایق می باشد و همچنین دارای 5 سال سابقه کاری مرتبط با الکترونیک دارم.

۱ دیدگاه

  1. سلام.
    زبان برنامه نویسی چیه؟؟
    تو چ نرم افزاری؟؟
    شبیه سازی که برای کار با ARM استفاده میشه چیه؟؟
    ببخشید میشه کتابی برای کار با ARM و آموزش مرحله به مرحله ی اون معرفی کنید؟…

دیدگاهتان را بنویسید