在线情况
楼主
  • 头像
  • 级别
    • 积分3
    • 经验49
    • 文章3
    • 注册2012-04-03
    求高手指教MSP430F2619 的比较器使用方法

    求高手指教MSP430F2619 的比较器使用方法


           今天弄了一下午Comparator A 但是还是没弄明白,主要是现象和我想的不一样


    我是这几点没弄明白,大家看我哪里叙述有误:
            CACTL1 中的 CAEX 和 CARSEL 决定了参考电压的输入端(+ or -) CAREF 选择参考电压
       CAON 打开比较器A  CAIE CAIES CAIFG 与中断有关(这个我明白)
      下面我的问题来了,没理解好的地方:
             CACTL2 中的 CASHORT 是有关短路采样的,没用到
            CAF 输出滤波
            CAOUT 输出状态
             P2CA4 P2CA3 P2CA2 P2CA1 P2CA0 这几位把我弄糊涂了,没有看懂datasheet的意思
        datasheet 中把 P2CA4 和 P2CA0 作为一组  P2CA3 P2CA2 P2CA1 作为一组 他们的设定都要根据
          CAEX 的情况, 但这两组到底针对谁啊,感觉自相矛盾?

    #include<msp430x26x.h>
    void ComparatorA_init();
    void LED_init();


    void main(void)
    {
         WDTCTL = WDTHOLD + WDTPW;   // 关狗
         LED_init();            // led初始化  P5.7 接的LED正端
         ComparatorA_init();   // CA初始化
       
        _EINT();    

        while(1)
        {
          if((CAOUT & CACTL2) == 1) // 判断CAOUT 的状态 ,控制LED亮灭
               P5OUT |= BIT7;
          else
               P5OUT &= ~BIT7;
        }
    }
    void LED_init()
    {
       P5DIR |= BIT7;
       P5OUT &= ~BIT7;
    }
    void ComparatorA_init()
    {
       CACTL1 = CAON + CAREF_2 + CARSEL  // 开CA + 选择参考源 + 选择参考源输入端
       CACTL2 =  P2CA3 + CAF; // 选择通道 开滤波 怎么选择通道哦?
       CAPD |= BIT2;  // 关相应管脚的BUFFER
       P2SEL |= BIT2;  这句话好像没用?
    }
    加一个问题,PxREN 在其他情况下感觉用不用没多大影响?

    可以的话请给一个 MSP430F2619 比较器A 的例程,谢谢啦!
    [ 此贴最后由DC在2012-4-3 20:28:12编辑过 ]
    微控网感谢您的参与
    在线情况
    2
    • 头像
    • 级别
    • 门派
    • 职务总版主
    • 声望+9
    • 财富5
    • 积分3065
    • 经验390701
    • 文章6744
    • 注册2006-03-07
    [P][CODE]
    //             MSP430F261x/241x
    //             -----------------
    //         /|\|                 |
    //          | |                 |
    //          --|RST      P2.3/CA0|<--Vcompare
    //            |                 |
    //            |             P1.0|-->CAOUT - LED
    #include  <msp430x26x.h>
    void main(void)
    {
      WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT
      CACTL1 = CAEX+CAON+CAREF_2+CARSEL;        // Enable comp, ref = 0.5*Vcc = Vin+
      CACTL2 = P2CA0;                           // Pin to CA0 -> V-
      P1DIR |= 0x001;                           // P1.0 = o/p direction (CAOUT- LED)
      P1SEL |= 0x001;                           // P1.0 - CAOUT, option select
      _BIS_SR(LPM0_bits);                       // Enter LPM0
    }
    [/CODE][/P][P][CODE]
    #include  <msp430x26x.h>
    void main(void)
    {
      WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT
      CACTL1 = CAON+CAREF_3+CARSEL;             //Enable comp, ref = Diode ref
      CACTL2 = P2CA0;                           // Pin to CA0
      P1DIR |= 0x001;                           // P1.0 = o/p direction (CAOUT- LED)
      P1SEL |= 0x001;                           // P1.0 - CAOUT, option select
      _BIS_SR(LPM0_bits);                       // Enter LPM0
    }
    [/CODE]
    参考一下吧....[EM11][/P]
    [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
    在线情况
    3
    • 头像
    • 级别
      • 积分3
      • 经验49
      • 文章3
      • 注册2012-04-03
      谢谢啦版主!! 继续摸索中···[EM14]
      微控网感谢您的参与
      Powered by LeadBBS 9.2 .
      Page created in 0.2656 seconds with 5 queries.