找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3378|回復(fù): 5
收起左側(cè)

msp430f149開捕獲為什么無法進入case2

[復(fù)制鏈接]
回帖獎勵 60 黑幣 回復(fù)本帖可獲得 60 黑幣獎勵! 每人限 1 次(中獎概率 50%)
ID:808634 發(fā)表于 2021-7-19 17:47 | 顯示全部樓層 |閱讀模式


#include "msp430x14x.h"
#include "iic.h"

unsigned int TA_OverflowCnt;      //TA溢出次數(shù)存放變量
unsigned long int Period;       //周期測量結(jié)果存放變量
unsigned int PervCapVal;         //前一次捕獲值存放變量

void display()     //顯示
{

    // OLED_ShowString(0, 2, "haha:",16);
     //OLED_ShowString(0, 0, "20",16);
     //OLED_ShowChar(33, 0, '-',16);
     //OLED_ShowChar(57, 0, '-',16);
   //  OLED_ShowChar(78, 2,':',16);
    // OLED_ShowChar(102, 2,':',16);
     OLED_ShowCHinese(0,0,0);
     OLED_ShowCHinese( 16,0,1);
    // OLED_ShowChar(32, 4,':',16);   
     //OLED_ShowString(0, 6, "new money:",16);
    // OLED_ShowNum(0,4,TA_OverflowCnt,2,16);
     OLED_ShowString(112,0,"HZ",16);
     //OLED_ShowNum(0,6,3,5,16);      //顯示
}

void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;

  P1SEL |= BIT2;      //P1.2設(shè)為第二功能(TA1),不同單片機可能不同
  P1DIR &= ~(BIT2);   //P1.2(TA1)設(shè)為輸入(可省略)

  TACTL= TASSEL_2+MC_2+TACLR+TAIE;

  TACCTL1 =CAP + CM_3 +CCIS_1 + SCS + CCIE;
  //捕獲模塊1啟動,選擇TA1(P1.2)管腳作為捕獲源,上升沿捕獲,同步捕獲,開啟捕獲中斷

  Initial_LY096BG30();   //OLED初始化
  OLED_Clear();
  display();
  _EINT();      //總中斷允許
  LPM0;       //因為TimerA要用SMCLK,只能進入低功耗模式0休眠

}


#pragma vector = TIMERA1_VECTOR
__interrupt void TA_ISR(void)   //Timer_A中斷入口
{
  switch(TAIV)
  {
  case 2:     //比較/捕獲模塊1中斷
            Period = TA_OverflowCnt*65536 + TACCR1-PervCapVal;    //計算周期
            PervCapVal = TACCR1;      //保存捕獲值,供下一次使用
            TA_OverflowCnt = 0;     //溢出次數(shù)清零
            OLED_ShowNum(0,2,Period,5,16);      //顯示
            OLED_ShowNum(0,6,3,5,16);      //顯示
            break;
  case 4:   break;
  case 10:  TA_OverflowCnt++;     //TA每次溢出,溢出次數(shù)變量+1
            break;  
  }
}


進入不了這個中斷,我查了一下手冊    捕獲模式:寄存器 CCRx 捕獲了定時器 TAR 值時置位。
說明沒有捕獲到定時器TAR


  case 2:     //比較/捕獲模塊1中斷
            Period = TA_OverflowCnt*65536 + TACCR1-PervCapVal;    //計算周期
            PervCapVal = TACCR1;      //保存捕獲值,供下一次使用
            TA_OverflowCnt = 0;     //溢出次數(shù)清零
            OLED_ShowNum(0,2,Period,5,16);      //顯示
            OLED_ShowNum(0,6,3,5,16);      //顯示
            break;



問題是:為什么捕獲不了TAR中的值   我的oled ,脈沖輸入沒有問題


IMG_20210719_174246(1).jpg
回復(fù)

使用道具 舉報

ID:808634 發(fā)表于 2021-7-19 18:12 | 顯示全部樓層
已解決,謝謝admin
回復(fù)

使用道具 舉報

ID:808634 發(fā)表于 2021-7-19 18:16 | 顯示全部樓層
CCISx:在捕獲模式中用來定義提供捕獲事件的輸入源
0: 選擇 CCIxA
1: 選擇 CCIxB
2: 選擇 GND
3: 選擇 Vcc
應(yīng)該選擇 CCIS_0  選擇CCIXA
因為我使用的就是Timer_A

評分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:954170 發(fā)表于 2021-7-20 15:36 | 顯示全部樓層
一是查看中斷是否打開;二是查看你的標志位是否置1或置0;三是查看中斷模塊初始化;我以前也試過這種情況。
回復(fù)

使用道具 舉報

ID:81196 發(fā)表于 2021-7-21 14:34 | 顯示全部樓層
首先確定你的捕獲源對不對,然后是確定源的上升下降沿方式,確定好了來龍去脈如果還是不行的話,那就是你配置不對,這兩點對了肯定能進去
回復(fù)

使用道具 舉報

ID:781863 發(fā)表于 2021-7-29 13:57 | 顯示全部樓層
應(yīng)該是你的捕獲源不對
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表