微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > #CC2540# 我把P1_7作外部中断,采集两个上升沿之间的时间,每次采集到的数据值都相差较大,不知道为何?

#CC2540# 我把P1_7作外部中断,采集两个上升沿之间的时间,每次采集到的数据值都相差较大,不知道为何?

时间:10-02 整理:3721RD 点击:

这两次上升沿之前大约是90us(因为会随环境变化而变化,所以要采集)。

timer1设定: 跑 Tick frequency/8,Free-running,Tick freq我没定,应该是32M吧,所以每个最小单位0.25us。

外部中断设定:把p1_7设成上升沿外部中断,第一来时,启动timer1,第二次来时,停止timer1,读出来counter值。

 

附上部分代码: 

#pragma vector=P1INT_VECTOR

__interrupt void P1INT_ISR(void)

 {  

 uint8 value;

  P1IFG = 0;

 P1IF = 0;

 if (triggers == 0)  

{   

///start timer 1   

COUNTER_TxCNTL = 0;  

 COUNTER_TxCTL &= ~((3<<0)|(3<<2));   

COUNTER_TxCTL |= (COUNTER_TxCTLdivBIT | COUNTER_TxCTLMODEBIT0);  

 triggers ++;

 }  

else  

{   

P1IEN = 0;

IEN2 &= ~DATA_PxENBIT;     

dataHeadT = COUNTER_TxCNTL;  

 value = COUNTER_TxCNTH;   

dataHeadT += (value<<8);

  ///halt   

COUNTER_TxCTL &= ~(3<<0);  

 triggers = 0;

 

启动外部中断是这样的,

 P1IFG = 0;

 P1IF = 0;

 PICTL &= ~DATA_PxICTLBIT;  

P1IEN |= DATA_Px;  

IEN2 |= DATA_PxENBIT;

 IEN0 |= DATA_PxEN0BIT;

 

由于是第一次使用,搞了很久,不知道问题出在哪里?TI FAE一定要帮我这个忙了!十分感谢,万分感激!

 

 

这个问题,当初是由于开了POWER_SAVING,进休眠了的原因。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top