امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
تعیین ورودی خروجی پورت های Xmega در C
نویسنده پیام
h0x00i آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 959
موضوع‌ها: 109
تاریخ عضویت: دى ۱۳۸۹

تشکرها : 2866
( 2450 تشکر در 949 ارسال )
ارسال: #1
تعیین ورودی خروجی پورت های Xmega در C
برای تعیین وضعیت پورت ها در AVR های معمولی، به ازای هرپورت 3 رجیستر وجود دارد. رجیستر DDRx برای تعیین جهت پورت، رجیستر PORTx برای تعیین مفدار خروجی و یا فعالسازی مقاومت Pullup در ورودی و رجیستر PINx برای خواندن مقدار واقعی پین در نظر گرفته شده اند. اما در XMEGA نام وعملکرد رجیسترها بصورت متفاوتی است که در اینجا توضیح داده می شود. برای تعیین جهت هر پورت از رجیستری با نام PORTx_DIR استفاده می شود(مثلا PORTA_DIR). همانند AVR نوشتن یک در هر بیت از این رجیستر منجر به خروجی شدن پین متناظر آن در پورت می شود، اما وضعیت فعالسازی مقاومت Pullup ربطی به این رجیستر ندارد.به غیر از این رجیستر، تعداد 3 رجیستر دیگر در همین رابطه پیش بینی شده که عملکرد آنها در AVR مشابهی ندارد و برای بالا بردن سرعت انجام عملیات در نظر گرفته شده اند.PORTx_DIRSET رجیستری است که نوشتن یک در هر بیت آن موجب خروجی شدن پین های متناظر در آن پورت می شود، اما وضعیت سایر بیت ها بدون تغییر باقی می مانند. مثلا با اجرای دستور ;PORTA_DIRSET=0x0F در زبان C فقط 4 بیت پائین پورت خروجی می شوند و 4 بیت بالا در هر وضعیتی از نظر ورودی یا خروجی که بودند، باقی می مانند. در همین رابطه دو رجیستر دیگر با نامهای PORTx_DIRCLR و PORTx_DIRTGL وجود دارند که نوشتن یک در بیت های رجیستر اول منجر به ورودی شدن بیتهای متناظر و بدون تغییر ماندن جهت سایر بیتها می شود و برای رجیستر دوم، نوشتن یک منجر بهToggle شدن وضعیت بیت ها از نظر جهت می شود.
برای تغییر مقدار خروجی هم 4 رجیستر برای هر پورت به نام های PORTx_OUT و PORTx_OUTSET و PORTx_OUTCLR و PORTx_OUTTGL وجود دارند که رجیستر اول منجر به تغییر مقادیر کلیه بیت های پورت می شود و در 3 رجیستر بعدی فقط بیت هایی که در آن یک نوشته شده تغییر می کنند و سایر بیت ها بدون تغییر باقی می مانند.

برای خواندن وضعیت هر پورت هم رجیستر PORTx_IN وجود دارد که عملکردی مشابه رجیستر PINx در AVR های عادی دارد.

منبع :http://novintarashe.com/site

:)

دوستان الکترونیکی پیشنهاد می کنم حتما برن python یاد بگیرن ...
پروژه ، مقاله ،... 
۱۳-بهمن-۱۳۹۰, ۱۱:۱۱:۳۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Pardazesh-Gar, sharin, behzady


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  آموزش کار با میکروهای XMEGA omid_phoenix 11 12,397 ۱۱-فروردین-۱۳۹۷, ۱۷:۲۹:۳۰
آخرین ارسال: hadikh73
  پیش به سوی XMEGA! behzady 36 21,025 ۰۸-شهریور-۱۳۹۵, ۲۱:۰۶:۱۴
آخرین ارسال: md3848
  فعال کردن USB سری A میکروهای XMEGA MN-123 2 2,572 ۲۳-تير-۱۳۹۵, ۲۲:۴۲:۰۶
آخرین ارسال: MN-123
  مشکل در پروگرامر Xmega MN-123 12 6,543 ۱۰-تير-۱۳۹۵, ۰۰:۳۱:۰۰
آخرین ارسال: MN-123
  مشکل اتصال LCD128*64 به Xmega MN-123 2 3,455 ۱۳-خرداد-۱۳۹۵, ۲۳:۳۰:۴۶
آخرین ارسال: MN-123
  تایمر در xmega و بسکام maxn@morteza 3 3,992 ۳۱-شهریور-۱۳۹۳, ۱۳:۳۳:۱۸
آخرین ارسال: aKaReZa75
  معرفی کتاب برای یادگیری Xmega pontiac132 3 4,681 ۲۹-شهریور-۱۳۹۳, ۲۱:۰۳:۱۸
آخرین ارسال: omid_phoenix
  پروگرامر XMEGA SBRE77 3 5,464 ۰۲-اردیبهشت-۱۳۹۳, ۱۸:۲۱:۳۵
آخرین ارسال: agape
  پروگرامر برای xmega واسه بسکام 0121takpa 0 2,222 ۲۰-شهریور-۱۳۹۲, ۱۵:۵۶:۲۶
آخرین ارسال: 0121takpa
  شروع به کار بخش جدید میکروکنترلرهای سری XMega رسول 8 8,534 ۲۵-خرداد-۱۳۹۲, ۰۲:۳۳:۰۲
آخرین ارسال: saeed0020

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS