بـا ســلام،
با توجه به اینکه من خودم به استفاده از امکاناتی مثل کیبرد و موس کامپیوتر، ریموت کنترل ها، دسته های بازی و ... در پروژه هام علاقه شدیدی دارم، تصمیم گرفتم که با توجه به کاربردهای زیاد ریموت کنترل ها در پروژهها و علاقمندیی که از سایر دوستان در این مورد دیدم، فایل های دیکودر و انکودر مربوطه رو بازنگری کرده و در اختیار دوستان قرار بدم.
پایه این پروژه دیکودر و انکودر اینفرارد مربوط به برادر فعال ژاپنی ChaN هستش که من با اعمال برخی تغییرات جزئی در اون و اضافه کردن پروتکل های RC-5 و SAMSUNG ، کتابخونه های مذکور رو در پلتفرم WinAVR تقدیم دوستان میکنم.
مقدمات لازم برای بردن این پروژه به پلتفرم CodVision وجود داره و کافیه که یه جوان مرد این کار رو در سه سوت انجام بده و در اختیار سایرین قرار بده. ( متاسفانه خودم به دلیل کمبود امکانات و تنگی وقت، برام مقدور نیست! :redface: )
در کل، با توجه به نحوه نگارش و توضیحات، کدهای برنامه و الگوریتم ها کاملا شفاف هستند، با این وجود، در صورت لزوم، آماده ارائه توضیحات بیشتر هستم، خصوصا اگر بخواهید پروتکل های جدیدی به این کتابخونه اضافه کنید!!! :nerd:
این کتابخونه قابلیت ارسال و دریافت پکت های اینفرارد رو با پروتکل های ذیل داره ( البته، بنابه نیاز، من فقط دریافت رو استفاده کردم... )
1 – NEC ارسال و دریافت
2 - AEHA ارسال و دریافت
3 – SONY ارسال و دریافت
4 – RC-5 فقط دریافت
5 – SAMSUNG فقط دریافت
لازم به ذکره که این 5 تا پروتکل، تقریبا تمامی ریموت کنترل ها رو پوشش میدن و من با هرچی ریموت کنترل که دم دستم بود ( حدود 15 عدد، با همه پروتکل ها )، تمامی این پروتکل ها رو امتحان کردم و مشکلی مشاهده نشد، بجز ریموت LG که جزئیات پکت ها و پروتکلش رو پیدا نکردم! ( اگر شما داشتید برام بفرستید تا اضافه اش کنم! ). خوبه بدونید که اکثر ریموت ها NEC بودند!
در پوشه Doc اطلاعات لازم در مورد سنسور گیرنده و سخت افزار مورد استفاده و همچنین فرمت فریم های اینفرارد ( مطالبی از مجله الکتور 2001 در دو فایل PDF و سامسونگ ) ارائه شده.
و اما در مورد پروژه، کتابخونه اینفرارد در پوشه IRC قرار داره و این پروژه تست هم به اندازه کافی جهت نحوه استفاده از اونها گویاست. سایر موارد مثل LCD نوکیا 1100 با فونت های محدود و Xitoa و Uart هم که در پروژههای قبلی به اندازه کافی تشریح شده اند و خارج از بحث فعلی هستند. در پوشه Prepared HEX هم هگز مربوط به میکروی مگا 32 با کریستال 12 مگاهرتزی قرار گرفته.
طبق معمول، تنها تنظیمات سخت افزاری و تنظیمات مربوط به تایمرهای مورد استفاده در روتین های ارسال و دریافت و سایر تنظیمات پشنال فانکشن ها هم در پوشه IRC و هدر فایل IRCconfig.h قرار داره و در صورتی که قصد اضافه کردن یه پروتکل جدید رو نداشته باشید، لزومی به اعمال هیچگونه تغییرات در سایر فایل ها وجود نداره!
در ابتدای هدر فایل IRCconfig.h امکان اضافه و یا حذف کردن ارسال، دریافت و یا هر یک از پروتکل ها وجود داره
تعاریف سخت افزاری پین های سنسورهای ورودی و خروجی هم بعدشه! ( یک ورودی ICP برای کپچر کردن دریافت ها و یک OC برای خروجی PWM ارسال ها ) و در زیر مجموعه Platform dependent definitions هم تنظیمات تایمر کانترها هستش که با توجه به اعمال تنظیمات رجیستر به رجیستر و کامنت های درج شده، تغییرشون متناسب با میکروهای دیگه، خیلی راحته.
لازمه بدونید که در این کتابخونه از دو تا تایمر استفاده شده، یکی برای زمان گیری که هم در ارسال و هم در دریافت از اون استفاده میشه و باید امکان مقایسه و کپچر کردن رو داشته باشه وترجیحا هم 16 بیتی باشه ( ممکنه 8 بیتی جواب نده! )، و تایمر دوم هم برای تولید PWM در حالت ارسال استفاده میشه ( جزئیات تنظیمات در کامنت ها وجود داره )
و اما نکته بسیار مهم، تنظیم درست T_CLK در انتهای هدر فایل IRCconfig.h هستش که با تقسیم فرکانس اسیلاتور بر Prescaler کانتر تایمر زمان گیر و معکوس نمودن اون بر حسب نانو ثانیه بدست میاد.
مثلا برای اسیلاتور 12 مگاهرتز با clk/8 میشه :
تا یادم نرفته، دو تا LED هم برای نمایش دادن اوضاع و احوال دریافت و ارسال وجود داره که تعاریف سخت افزاری اونها هم طبق معمول پروژههای من، در هدر فایل HW_IRC.h قرار داره و در نهایت، همونطور که میدونید، هدر فایل app_config.h که برای تغییر پلتفرم و تنظیمات عمومی پروژه هستش.....
به قول برادرای خارجکی، Good Luck
با توجه به اینکه من خودم به استفاده از امکاناتی مثل کیبرد و موس کامپیوتر، ریموت کنترل ها، دسته های بازی و ... در پروژه هام علاقه شدیدی دارم، تصمیم گرفتم که با توجه به کاربردهای زیاد ریموت کنترل ها در پروژهها و علاقمندیی که از سایر دوستان در این مورد دیدم، فایل های دیکودر و انکودر مربوطه رو بازنگری کرده و در اختیار دوستان قرار بدم.
پایه این پروژه دیکودر و انکودر اینفرارد مربوط به برادر فعال ژاپنی ChaN هستش که من با اعمال برخی تغییرات جزئی در اون و اضافه کردن پروتکل های RC-5 و SAMSUNG ، کتابخونه های مذکور رو در پلتفرم WinAVR تقدیم دوستان میکنم.
مقدمات لازم برای بردن این پروژه به پلتفرم CodVision وجود داره و کافیه که یه جوان مرد این کار رو در سه سوت انجام بده و در اختیار سایرین قرار بده. ( متاسفانه خودم به دلیل کمبود امکانات و تنگی وقت، برام مقدور نیست! :redface: )
در کل، با توجه به نحوه نگارش و توضیحات، کدهای برنامه و الگوریتم ها کاملا شفاف هستند، با این وجود، در صورت لزوم، آماده ارائه توضیحات بیشتر هستم، خصوصا اگر بخواهید پروتکل های جدیدی به این کتابخونه اضافه کنید!!! :nerd:
این کتابخونه قابلیت ارسال و دریافت پکت های اینفرارد رو با پروتکل های ذیل داره ( البته، بنابه نیاز، من فقط دریافت رو استفاده کردم... )
1 – NEC ارسال و دریافت
2 - AEHA ارسال و دریافت
3 – SONY ارسال و دریافت
4 – RC-5 فقط دریافت
5 – SAMSUNG فقط دریافت
لازم به ذکره که این 5 تا پروتکل، تقریبا تمامی ریموت کنترل ها رو پوشش میدن و من با هرچی ریموت کنترل که دم دستم بود ( حدود 15 عدد، با همه پروتکل ها )، تمامی این پروتکل ها رو امتحان کردم و مشکلی مشاهده نشد، بجز ریموت LG که جزئیات پکت ها و پروتکلش رو پیدا نکردم! ( اگر شما داشتید برام بفرستید تا اضافه اش کنم! ). خوبه بدونید که اکثر ریموت ها NEC بودند!
در پوشه Doc اطلاعات لازم در مورد سنسور گیرنده و سخت افزار مورد استفاده و همچنین فرمت فریم های اینفرارد ( مطالبی از مجله الکتور 2001 در دو فایل PDF و سامسونگ ) ارائه شده.
و اما در مورد پروژه، کتابخونه اینفرارد در پوشه IRC قرار داره و این پروژه تست هم به اندازه کافی جهت نحوه استفاده از اونها گویاست. سایر موارد مثل LCD نوکیا 1100 با فونت های محدود و Xitoa و Uart هم که در پروژههای قبلی به اندازه کافی تشریح شده اند و خارج از بحث فعلی هستند. در پوشه Prepared HEX هم هگز مربوط به میکروی مگا 32 با کریستال 12 مگاهرتزی قرار گرفته.
طبق معمول، تنها تنظیمات سخت افزاری و تنظیمات مربوط به تایمرهای مورد استفاده در روتین های ارسال و دریافت و سایر تنظیمات پشنال فانکشن ها هم در پوشه IRC و هدر فایل IRCconfig.h قرار داره و در صورتی که قصد اضافه کردن یه پروتکل جدید رو نداشته باشید، لزومی به اعمال هیچگونه تغییرات در سایر فایل ها وجود نداره!
در ابتدای هدر فایل IRCconfig.h امکان اضافه و یا حذف کردن ارسال، دریافت و یا هر یک از پروتکل ها وجود داره
کد:
// Enable/Disable transmission/reception functions <1/0> #define IR_USE_XMIT 0 //IRC Transmitter #define IR_USE_RCVR 1 //IRC Receiver #define IR_USE_NEC 1 //IRC NEC protocol detection, RX-TX #define IR_USE_AEHA 1 //IRC AEHA protocol detection, RX-TX #define IR_USE_SONY 1 //IRC SONY protocol detection, RX-TX #define IR_USE_RC5 1 //IRC RC5 protocol detection, only RX #define IR_USE_SAMSUNG 1 //IRC SAMSUNG protocol detection, only RX
تعاریف سخت افزاری پین های سنسورهای ورودی و خروجی هم بعدشه! ( یک ورودی ICP برای کپچر کردن دریافت ها و یک OC برای خروجی PWM ارسال ها ) و در زیر مجموعه Platform dependent definitions هم تنظیمات تایمر کانترها هستش که با توجه به اعمال تنظیمات رجیستر به رجیستر و کامنت های درج شده، تغییرشون متناسب با میکروهای دیگه، خیلی راحته.
لازمه بدونید که در این کتابخونه از دو تا تایمر استفاده شده، یکی برای زمان گیری که هم در ارسال و هم در دریافت از اون استفاده میشه و باید امکان مقایسه و کپچر کردن رو داشته باشه وترجیحا هم 16 بیتی باشه ( ممکنه 8 بیتی جواب نده! )، و تایمر دوم هم برای تولید PWM در حالت ارسال استفاده میشه ( جزئیات تنظیمات در کامنت ها وجود داره )
و اما نکته بسیار مهم، تنظیم درست T_CLK در انتهای هدر فایل IRCconfig.h هستش که با تقسیم فرکانس اسیلاتور بر Prescaler کانتر تایمر زمان گیر و معکوس نمودن اون بر حسب نانو ثانیه بدست میاد.
مثلا برای اسیلاتور 12 مگاهرتز با clk/8 میشه :
(1/(12/8))*1000 = 667 ns
تا یادم نرفته، دو تا LED هم برای نمایش دادن اوضاع و احوال دریافت و ارسال وجود داره که تعاریف سخت افزاری اونها هم طبق معمول پروژههای من، در هدر فایل HW_IRC.h قرار داره و در نهایت، همونطور که میدونید، هدر فایل app_config.h که برای تغییر پلتفرم و تنظیمات عمومی پروژه هستش.....
http://s2.picofile.com/file/7357352903/SHN_IRC_2.rar.html
به قول برادرای خارجکی، Good Luck

دیدگاه