這是一個很好玩的應用介面。因為有太多的家用產品都是用這個介面的。
而寫這篇文章也算是悼念這個介面的發明者:羅伯阿德勒(Robert Adler)--已於上個月病逝了。
(http://tw.news.yahoo.com/article/url/d/a/070218/1/aojk.html
http://www.beareyes.com.cn/2/lib/200702/19/20070219016.htm )
-------------------------------------------------------------------------------------------------
所以就有許多學生或專業人士喜歡應用這個介面,當然,在單晶片應用版上利用此一介面還有一個很好的地方是:
非常節省 I/O 接口的數量,因為只要一根 I/O 就可以了。
透過此一I/O ,寫完接收程式後,您隨便去B&Q或甚至 50 元商品店就可以買到一隻紅外線遙控器,取得人機介面中的輸入裝置,您要幾個按鍵嘛都有。(在大陸喔~只要一隻 RMB 8.0 就有了!)不用作一大堆按鍵在您的應用板子上。
>>>>
另外,紅外線遙控器還有一個很好的應用地方:就是玩具,我們當然也可以拿來控制機械人。雖然紅外線遙控器有控制上方向性的限制,但確有一個很好優勢:他沒有無線電電磁波,所以完全可以遊走於全世界各國的電信法規。... 這也就是說:這兩年來比較熱賣的玩具商品:蜂鳥直昇機,是用紅外線控制的原因。
>>>
但是,用單晶片韌體來寫紅外線的接收程式好寫嗎?!
您可以去看別人專業的解釋:
http://www.layertronic.com/modules/newbb/viewtopic.php?topic_id=4227&forum=22
在這裡版主不會教您怎麼寫,而是要解釋這種介面在單晶片應用上很討厭的地方。
我們來看一章標準的紅外線的傳輸介面圖示:
上圖上方那一塊藍色的地方就是一般紅外線發射的訊號。就看到一堆寬寬窄窄的脈波。
這個介面跟一般所謂數位訊號不同的地方是:他窄的部分為 0 ;寬的叫 1 。(一般數位訊號是:高電位為1;反之,低電位為0) ,也是很討厭的地方。
所以,韌體就無非人家說的要嘛是靠 Polling 或是中斷。不管您用什麼方法,他其中隱含著另一個重要訊息:這個介面會拖垮您單晶片的執行效能。
因為一般遙控型紅外線的資料線速度大多屬於 38KHz 載波這種比較低速的傳輸。但往往我們的MCU 都是跑MHz 級的。所以,若用韌體來寫紅外線的接收程式時,當場CPU 性能就會被迫拉到KHz 的等級來接收資料。就像您開車可以開很快,但是每次一碰到那些減速凸塊時,您就不得不放慢速度通過後,再加速啊!-- 這樣的比喻您瞭解了吧!
所以,這種低速介面(一收又不是只有短短幾個bit,往往又是好幾十個bits)會造成整個系統的bottleneck 的介面,對一般的MCU 系統都是很困擾的...
像那些作DVD 解碼晶片的公司,在設計晶片時,就不得不Embedded 另一顆小小的MCU(像是簡單的6502) 來專門負責紅外線的接收介面,至於為什麼不用硬體?因為紅外線的編碼有太多的不同點,所以,連市面上那些遙控器的編碼IC也都是Embedded 一顆小MCU的。...
也不是說:單晶片不能作紅外線的接收程式。只是當您寫完這個接收程式後,您單晶片的別的事就不用作了....也沒那麼誇張,只是很辛苦了。所以,市面上那些寫單晶片的參考書,大多不會拿這種介面範例來砸自己的招牌吧。
---------------------------------------------
我們最後就用上述舉範例:DVD播放器埋了一顆 6502 的作法。 所以,多核心的FPPA就可以輕易的解決這些過去許多想用紅外線接收器的工程師的困擾了。也不會因為紅外線那個KHz 級的載波造成系統的bottleneck 。至於,要怎麼作,就去拿原廠的光碟片,他裡面的 Demo kit 原始碼就有解釋了。
-----------------------
沒有留言:
張貼留言