微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > cc2541加AD采样后死机,jtag在线仿真时又不死机?

cc2541加AD采样后死机,jtag在线仿真时又不死机?

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

大家好

我的问题是:

没有加ad部分时,长期通讯是好的。但是当我把采样的任务打开后,通讯一段时间后必定死机

死机后测量晶振,是正常的32M,说明不是在休眠模式下。

 

CPU:CC2541

我用的是1.4.0的协议栈

是和Android手机的app通讯

采样的代码:

----初始化----

APCFG |= 0x03;//P0.0,P0.1
  
ADCCON1 = (ADCCON1 & ~(0x03<<4)) | (0x03<<4);//ADCCON1.ST = 1 

----采样任务----

//ch=0和1,一秒读取一次

const uint8 c_ch_ADCCONMASK[4]={0x00,0x01,0x02,0x06};
void ReadChx(uint8 ch)
{
  int16 timeout = 200;
  int16  adc_result,temperature;
  ADCCON3 = (0x02<<6) | (0x03<<4) | (c_ch_ADCCONMASK[ch]);
  ADCCON1 |= 0x40;
  while(( !(ADCCON1 & 0x80))&&(timeout--));
 
  if( timeout > 0 )
  {
    adc_result = (ADCL >> 4);
    adc_result |= (ADCH << 4);
    temperature = R25_ChangeOM2Temprature(ChangeADCLH2OM(adc_result));//查表法,把码值转成电阻,再转成温度
    Set_val(ch,temperature);//设置全局变量
  } 
}

还有一个奇怪的现象

当我用jtag在线仿真运行时,死机现象又消除了!

 

我查了电压,肯定电池供电时,电压是稳定的。

 

请专家帮忙回答一下:

1、我的ad初始化和读取有没有问题?

2、电池运行和jtag在线运行对CPU来讲有多少差别?为什么一个死机一个不死机?

 

搞定了,加

osal_pwrmgr_device( PWRMGR_ALWAYS_ON );

osal_pwrmgr_device( PWRMGR_BATTERY );

就不死机了。

现在的问题是:

采样我通过示波器量,才340us,这都有死机风险?

那么自己的任务应该多少合适呢?

我界面刷新的任务1.5ms,有没有问题

请专家解答一下

Hi Lin,

    这个表现为死机的应该是芯片进入了PM2/PM3模式,此时CPU已经不工作了。

osal_pwrmgr_device( PWRMGR_ALWAYS_ON );

osal_pwrmgr_device( PWRMGR_BATTERY );

其实就是关掉POWER_SAVING功能,让芯片不进入低功耗模式。是不影响Active的。

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

网站地图

Top