新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > MSP430單片機比較器A模塊

MSP430單片機比較器A模塊

作者: 時間:2016-11-23 來源:網絡 收藏
首先,整個比較器A的工作必需由CAON位置為1時才能工作的,此位屬CACTL1控制寄存器。單片機上電時此位是為0的,也就是說比較器是不工作的。
以下大概講述幾個部分電路的功能和一些相關信息。

模擬輸入電路:
外部模擬引腳信號CA0,CA1(正負端)可以分別由P2CA0,P2CA1位控制開或關。經過軟件的設置可以分別與內部的幾個基準電壓進行比較(0.5VCC,0.25VCC,三極管門值電壓)或外部其中的電壓進行比較。

應用的硬件比較可以分為以下三種組合:
兩個外部引腳輸入信號進行比較
其中一個外部引腳信號與內部的0.5VCC或0.25VCC比較
其中一個外部引腳信號與內部基準電壓比較

參考電壓發(fā)生器
參考電壓電路是可以由CARSEL,CARERF0,CARERF1位來控制電壓的產生。通過軟件設置可以選擇幾種電壓輸出到比較器的輸入中作為比較,當然此參考電壓也可以通過單片機的引腳往外部提供參考電壓之用。

比較器A核心
比較器CAON位控制開關,CAEX位控制位控制方向。

低通慮波器
低通慮波器只需一個CAF位來控制此慮波器的功能開與關。此慮波器功能是用于消除比較器輸出信號的毛剌,以保證信號的質量和中斷請求的可靠性。

中斷請求
比較器A模塊是具有中斷功能的,如比較器功能CAIE中斷允許開了,在CAIF信號產生時將生產中斷(當然GIE要為1時)。比較器A模塊是具有中斷獨立向量的,是一個單獨的中斷,CUP接受請求后會硬件自動清除中斷標志位CAIFG。


比較器模塊相關寄存器說明
CACTL1 比較器控制寄存器1


CAEX: 控制內部比較器A的輸入信號和輸出信號的方向

CARSEL:控制內部參考電壓加到比較器A的正輸入端還是負輸入端
由結構圖可以看出,CAEX,CARSEL在不同設置時,比較器A輸入端的所加的參考電壓是有不同的.
請參考以下列表:
-----------------------------------
CARSEL CAEX 參考電壓接入端
0 0 內部參考源加到比較器的正端
0 1 內部參考源加到比較器的負端
1 0 內部參考源加到比較器的負端
1 1 內部參考源加到比較器的正端
CAREF1, CAREF0 選擇參考源:
0 使用外部參考
1 選擇0.25VCC為參考電壓
2 選擇0.5VCC為參考電壓
3 選擇二極管電壓為參考電壓,須參見具體IC的資料

CAON: 控制比較器A的打開與關閉
0 關閉比較器工作
1 打開比較器工作

CAIES: 中斷邊沿觸發(fā)模式選擇
0 上升沿使中斷標志CAIFG置位
1 下降沿使中斷標志CAIFG置位

CAIE:比較器中斷允許
0 禁止中斷
1 允許中斷

CAIFG: 比較器中斷標志
0 沒有中斷請求
1 有中斷請求標志信號



CACTL2 比較器控制寄存器2


P2CA1:控制輸入端CA1
 0 外部引腳信號不與比較器A連接
 1 外部引腳信號與比較器A連接

P2CA0:控制輸入端CA0
 0 外部引腳信號不與比較器A連接
 1 外部引腳信號與比較器A連接

CAF: 選擇比較器輸出端是否經過RC低通濾波器
 0 開通RC低通濾波器
 1 直通信號

CAOUT: 比較器A輸出的信號
 0 CA0小于CA1
 1 CA0大于CA1


CAPD 端口禁止寄存器
  比較器A模塊的輸入輸出與IO口共用引腳,可以控制IO端口輸入緩沖器的通斷開關.CAPD控制位初始化為0,則端口輸入緩沖器有效.當相應位為1時,端口輸入緩沖器無效。

程序范例:
#include <msp430x11x1.h>
void main (void)
 {
  WDTCTL = WDTPW WDTHOLD;     // 停止WDT
  CAPD |= 0x08;           // 斷開與IO端口輸入
  CACTL2 = P2CA0;          // 設置P2.3為 comp
  CCTL0 = CCIE;           // CCR0 允許中斷
  TACTL = TASSEL_2 ID_3 MC_2;  // SMCLK/8,計數模
  _EINT();             // 開總中斷

 while (1) // 循環(huán)
 {
  CACTL1 = 0x00;          // 沒有參考電壓
  _BIS_SR(LPM0_bits);        // 進入LPM0
  CACTL1 = CAREF0 CAON;      // 0.25*Vcc=P2.3, 比較器開
  _BIS_SR(LPM0_bits);        // 再次進入LPM0
  CACTL1 = CAREF1 CAON;      // 0.5*Vcc=P2.3, 比較器開
  _BIS_SR(LPM0_bits);        // 再次進入 LPM0
  CACTL1 = CAREF1 CAREF0 CAON;  // 0.55V on P2.3,比較器開
  _BIS_SR(LPM0_bits);        // 再次進入LPM0
 }
}

// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
 _BIC_SR_IRQ(LPM0_bits);       //退出LMP0模式
}


關鍵詞: MSP430單片機比較

評論


技術專區(qū)

關閉