欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: msp430f149開捕獲為什么無法進入case2 [打印本頁]

作者: 七禾頁    時間: 2021-7-19 17:47
標題: msp430f149開捕獲為什么無法進入case2


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

unsigned int TA_OverflowCnt;      //TA溢出次數存放變量
unsigned long int Period;       //周期測量結果存放變量
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設為第二功能(TA1),不同單片機可能不同
  P1DIR &= ~(BIT2);   //P1.2(TA1)設為輸入(可省略)

  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;     //溢出次數清零
            OLED_ShowNum(0,2,Period,5,16);      //顯示
            OLED_ShowNum(0,6,3,5,16);      //顯示
            break;
  case 4:   break;
  case 10:  TA_OverflowCnt++;     //TA每次溢出,溢出次數變量+1
            break;  
  }
}


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


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



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


IMG_20210719_174246(1).jpg (1.68 MB, 下載次數: 122)

IMG_20210719_174246(1).jpg

作者: 七禾頁    時間: 2021-7-19 18:12
已解決,謝謝admin
作者: 七禾頁    時間: 2021-7-19 18:16
CCISx:在捕獲模式中用來定義提供捕獲事件的輸入源
0: 選擇 CCIxA
1: 選擇 CCIxB
2: 選擇 GND
3: 選擇 Vcc
應該選擇 CCIS_0  選擇CCIXA
因為我使用的就是Timer_A
作者: 軒轅頂托    時間: 2021-7-20 15:36
一是查看中斷是否打開;二是查看你的標志位是否置1或置0;三是查看中斷模塊初始化;我以前也試過這種情況。
作者: shumivan    時間: 2021-7-21 14:34
首先確定你的捕獲源對不對,然后是確定源的上升下降沿方式,確定好了來龍去脈如果還是不行的話,那就是你配置不對,這兩點對了肯定能進去
作者: 1024153202    時間: 2021-7-29 13:57
應該是你的捕獲源不對




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1