第三話 更進一步

一、MCU怎麼動起來的?

這是一個很沉重的問題,因為MCU怎麼動起來的,如果深究下去真的是一件不單純的事情簡單說,MCU的動作就是透過一個振盪器,將振盪器訊號輸入至內部的處理器當中,MCU就會依著振盪器0,1,0,1的訊號頻率開始處理內部的程式指令。

不同的MCU有著不同的振盪器的要求,早期大部分的MCU都是需要透過外部的振盪器輸入才可以使MCU工作,但隨著積體電路越來越小,現在大多數的MCU內部都含有振盪電路可以不需要透過外加的振盪器便可自己工作,當然限制並不是只有內部與外部的差別,每顆MCU都有自己可以工作的最高頻率,例如有些只能到12MHz有些能到48Mhz,經常有人問到,為什麼要定義最高頻率,將每個MCU都用在最高速度不就好了嗎?

在某些時候,真的的確不太需要考慮處理速度,設定到最高就好了,但又在某些應用上又不得不調降其速度,甚至有時候明明內部有自己振盪電路,但卻還自己外加振盪器其原因有以下兩點:

1.速度越高,越耗電

在某些應用上,並不需要這麼高速的處理,因提高速度反而增加耗電,特別是攜帶型或特定裝電池供電的應用上。

2.為了有更準確的計數時間

MCU之所以動起來,全靠振盪器的頻率,所以內部所計數的時間,當然也受振盪器的準確度影響,通常內部的振盪器所標稱的誤差值都是以百分比為單位,而外部輸入的振盪器,就可以讓我們自己控制其振盪器的準確度,通常來說,外接振盪器的誤差通常都是ppm等級。

(什麼是ppm?我是補充資料)

 

二、MCU內存在那些我們必要認識的元素?

MCU中其實要認識的元素(元件)並不多,但是必須熟悉每個元素的作用,就可以在適當的時間選擇並應用,然而,如何控制這些元素,就如同前一篇所說的所有控制MCU的方式,僅僅只是控制該元素所對應的暫存器(register),在後面如有使用時,會針對實作時所遇到的MCU做其他說明。

早期MCU內受限於製程(製造技術)的影響,所以並不會有太多的功能通常只有簡單的I/O控制,以及Timer(時鐘)功能,隨著製程技術的提升(東西越做越小),以至於可以讓一顆MCU內含有更多的元素功能,基本上除了I/O外大多的MCU都有以下的元素可使用。

1.Timer(時鐘)

此東西的作用,顧名思義就是一個用來「計數」時間用的,與我們一般所熟識時鐘是有些許的差異的其作用,就是不停的計數時間(累加或遞減),什麼時候會需要在MCU內用到時鐘?

在生活上,無時無刻都跟時間脫離不了關係,他是一個平行世界的概念,人的一舉一動都是跟時間平行的反之亦然,MCU的工作也是與時間平行的,所以,讓MCU知道時間(將時間量化)也是相當重要的例如生活上,小明跟小華說:我現在在忙,稍等我10秒,此時小華就必須等待小明10的時間,而小華正在計數的這10秒,就是MCU中Timer的工作,也就是將時間量化。

2.Counter(計數器)

計數器的作用,從名稱上看起來也知道他是用來計算一個數量的,他與Timer的差別,可以想像成一個是自己不停的數(Timer如此),而一個是有特定的觸發條件,Counter的應用在生活習慣上,也是很常見的例如,小明今天領薪水,從薪水袋中拿出一疊花花的千元鈔票,一張一張數著,一千、兩千...

是的,觸發條件,就是鈔票,而計算鈔票的數量,就是Counter的作用。

 3.Interrupt service(中斷服務)

中斷服務在MCU的控制上可以說是相當的重要(當然其他的東西也很重要),因為MCU在運作的過程中,是讀取程式逐一進行解碼,運算,執行,回存結果等動作但是如果中間,有突發狀況時,就必須命令MCU停止目前工作,優先處理突發狀況所謂的中斷服務就是在做這件事情,然而這邊所說的突發狀況,通常也都是預先知道的事情以生活上來說,小明要跟媽媽拿零用錢,不巧的是媽媽正在結算本月的生活開銷,還不能即時將錢交給小明,就跟小明說,你等媽媽一下,這個一下以程式邏輯來說,就並不是一個量化的結果一秒叫一下,一分鐘也是一下,所以小明就無奈地跑回去房間打電動,直到媽媽說小明過來(此時產生中斷服務),小明停下正在進行的遊戲,跑去找媽媽領零用錢,完成領零用錢的工作後,就完成了這次的中斷服務工作。

4.A/D Converter(類比/數位轉換器)

在數位的情況下來說,MCU只認識0與1兩種狀態,然而電子電路上,存在的是電氣訊號,雖說通常0V = 數位邏輯0,而5V = 數位邏輯1,但如果需要接收一個2.8V或者其他電壓訊號時,那該怎麼辦?此時就必須使用「類比/數位轉換器」,將輸入的電壓,轉換為一個量化的值。

關於類比/數位轉換器的說明,可參考 -> Analog to Digital Converter

後面有用到的時候,也會再補充其他說明。

5.Communication Module(通訊模組)

在數位有「線」的通訊上來說,訊號都只是單純的0與1的變化,透過特定的規則(protocol)人們定義出一些讓機器可以互相交流的方法,然而這些規則的實現,早期都是必須透過大量的程式、技巧才能夠實現。

現在MCU中大多提供這類通訊相關的通訊模組,只要將我們想要傳出去的東西,直接將資料寫入到對應的暫存器就會由MCU中的硬體幫我們處理,再透過I/O腳發送出去。

常見的幾種通訊方式如下

a.Universal Asynchronous Receiver/Transmitter,UART  (補充資料 Wiki)

b.Serial Peripheral Interface Bus,SPI  (補充資料 Wiki)

c.Inter-Integrated Circuit,I²C(IIC)  (補充資料 Wiki)

 

其實只要熟悉這幾樣東西,並且能夠活用,已經足夠做出許多應用。

mcu

如有說明不妥,或者需要補充的,歡迎留言指正。

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料