其實,圖上的這一些應用都不是需要很快的單晶片的計算能力,但卻需要單晶片及時(Real Time)與多工的處理能力,所以拿這種多核心單晶片微控器來作最適合了。
首先一開始就是想作無刷馬達(BLDC)的應用,因為,既然 FPPATM 可以規劃出PWM,當然就是以無刷馬達的應用來作主要目標了,因為用一般的單晶片微控器做起這種東西,鐵定手忙腳亂的!!若又用單一核心的單晶片微控器的軟體來造PWM的訊號的話,又程式寫起來既辛苦又難Debug ~所以,就拿來作此實驗最恰當的了。(當然,大家可以去挑一顆專用的微控器單晶片,只是規格及寄存器K不完~做完後也不知道要庫存多少?!下次還不知道還用得到嗎?!)
依照另一篇 FPPA文章 所描述的,無刷馬達會用掉兩個FPP(核心處理器),另外,馬達的東西就是會加減速的,所以就需要一組能夠下指令的東西。還拿KeyBoard 就覺得落伍了,現在嘛都流行遙控器,所以,就隨便作個紅外線遙控器介面來寫寫看。至於,顯示的部分就用一般的LCM了囉,不過,為了省I/O Pins ,就用Nibble Mode(4bits) ,反正,FPPATM 中核心處理器多,針對LCM的控制就用其中的一個FPP 來專門服侍LCM介面。也不在乎理別人的介面或控制的問題,就用此種方式對於其他核心處理器也沒差!!
當然還可以拿PC來Debug 一些參數~所以,就自己拿一顆FPP設計一組UART TX 功能。因為,我是把IR紅外線遙控器的Scan Code 給讀出來,所以,在核心處理器的規劃就跟IR的FPP共用了。
至於從上圖中,大家都看到關於喇叭為什麼要兩顆FPP?因為我也蠻懶的~因為,一般傳統的單晶片若要唱個生日快樂歌,總得需要一組 Timer ~雖然 FPPATM 也有 Timer ~但也懶得調用,所以直接用另一顆FPP來作 Timer 功能~核心處理器多嘛!
又既然要推馬達~就不能忽略單晶片常用的步進馬達了。剛好,核心處理器還有,所以就順便作個步進馬達控制。其實,您也可以把他想像成另一個伺服馬達。這樣子就感覺一大堆東西都在跑!嘻~嘻~
最後,為什麼還有一組跑馬燈?真的因為還留一顆核心處理器,還不知道要作什麼?控制LED就不如把他做成跑馬燈了!只不過,好像這樣子用核心處理器有點太浪費了一點吧!
(电路图:略)
注意:在無刷馬達的電路方面,我圖上省略了一些細節的部分,這是跟您選用馬達的特性有關。所以,我就只是示意的簡單畫一下囉,而不是我真正硬體上的實際線路。
至於 FPPATM 就選用 4KB ROM Size,512Bytes RAM 及 44 pins 包裝的 PDK80C28 來寫程式了!不過,大家一定很好奇,這麼複雜的東西,用 4KB 來寫會不會不夠?!其實,當您玩過這種多核心的單晶片微控器,您會發現,程式寫起來是蠻有效率的!因為每一顆核心處理器都是很單純的處理一個介面,省去了傳統寫程式時,老是副程式 Call 來 Call 去的問題,也不需要中斷~那些 切BANK 啊~Push/pop 等等很討厭的程式控制,當然那些程式流程用的旗標也少得多了。自然程式空間就少得多了。
而且,寫這種程式的移植性很高!!因為,雖然有不同的應用,但整個副程式(其實就是單一核心處理器的程式),可以整個移植到另一個核心處理器的程式中。譬如說:我做的另一應用程式:就是把我寫的 UART 副程式,分別複製到其他三顆 FPP(核心處理器)時,我就很快的做出一個有四組全雙工的 UART 橋接器了!這一部份我會另外以專文撰寫。