معرفی پایه ها در میکروکنترلرهای AVR
پورت های ورودی/خروجی در AVR
میکروکنترلرهای AVR ساخت شرکت Atmel هستند. این میکروکنترلرها بسته به نوع قابلیت و کاربردی که دارند دارای یک سری پایه های ورودی و خروجی هستند. به طور کلی تمامی میکروکنترلرهای AVR دارای ۳ رجیستر تنظیم کننده ی زیر می باشند. اما قبل از معرفی این رجیسترها باید بدانیم رجیستر چیست؟
رجیسترها نوعی از حافظه های موقت هستند (مانند RAM) که از فلیپ فلاپ ها ساخته میشوند و درون CPU وجود دارند. از رجیستر ها به صورت گسترده در تمام ساختار و واحد های میکروکنترلر ها استفاده می شود.
رجیستر (Data Direction Register (DDRx
این رجیستر ۸ بیتی برای تنظیم هر پایه به عنوان ورودی و خروجی در نظر گرفته شده است. اگر بیتی از این رجیستر یک شود آن پایه به عنوان خروجی تعیین میشود و اگر صفر شود آن پایه ورودی خواهد بود.
به عنوان مثال در DDRA.0 = 0 پین صفر از پورت A به عنوان ورودی و در DDRA.0 = 1 پین صفر از پورت A به عنوان خروجی می باشد.
رجیستر (Port Data Register (PORTx
یکی دیگر از رجیسترهایی که وضعیت صفر یا یک کردن پین را کنترل میکند رجیستر PORTx است، این رجیستر برای ارسال دیتا به خروجی می باشد، این رجیستر بر حسب این که پورت به عنوان خروجی و یا ورودی تنظیم شده باشد (توسط رجیستر DDRx)، دو وظیفه دارد: حالت اول صفر یا یک کردن پین وقتی که پین مورد نظر در نقش خروجی عمل کند و حالت بعدی فعال یا غیرفعال کردن مقاومتهای پول آپ داخلی وقتی که پین مورد نظر در نقش ورودی باشد.
متذکر می شویم که در میکروکنترلر AVR همه ی پین ها به مقاومت پول آپ مجهزند. در حالتی که یک پین در نقش ورودی عمل کند، مقاومت پول آپ مربوط به آن را میتوان فعال یا غیر فعال کرد. در صورتی که آن را با یک برنامهریزی کنیم مقاومت پول آپ فعال میشود و به طور عکس اگر آن را با صفر برنامهریزی کنیم مقاومت پول آپ غیر فعال می شود.
برای مثال در حالت زیر اولین پین از پورت A به عنوان ورودی برنامه ریزی شده است و مقاومت پول آپ آن فعال است.
DDRA.0 = 0
PORTA.0 = 1
رجیستر (Port Input Pin Address (PINx
این رجیستر برای دریافت دیتا از ورودی می باشد، هرگاه میکروکنترلر بخواهد داده ای را از ورودی بخواند باید ابتدا رجیستر DDRx در حالت ورودی تنظیم شده باشد و سپس داده مورد نظر از رجیستر PINx توسط دستورهای شرطی خوانده میشود.
تصویر پایین پایه های میکروکنترلر ۸ بیتی ATmega16 را نشان می دهد که از ۴ پورت C, B, A و D تشکیل شده است، هر پورت دارای ۸ پایه می باشد.
معرفی پایه های غیر ورودی/خروجی
۸ پایه ی باقی مانده را همانطور که در تصویر مشاهده می کنید، پایه ۱۰ و ۳۰ را VCC تشکیل می دهد، دو پایه ۱۱ و ۳۱ را GND، همچنین پایه ی AREF مربوط به مرجع ولتاژ ADC بوده و پایه های XTAL1 و XTAL2 جهت اتصال کریستال یا اوسیلاتور خارجی می باشند.
۸ بیتی بودن AVR به این معناست که تمامی رجیسترهای آن ۸ بیتی میباشد، امروزه شرکت Atmel علاوه بر میکروکنترلر های ۸ بیتی AVR ، میکروکنترلر های پرقدرت ۳۲ بیتی نیز تولید می کند.