我们有一个收集信息的设备。 该器件可长时间不间断运行。 有时微控制器会冻结、 看门狗计时器会重新启动它。 之后、微控制器在命令权限中断时再次挂起(UCA2IE |= UCRXIE;)。 此时 GIE 被禁用。 在这种情况下重置不起作用。 只需完全关闭电源、然后再打开再重新启动微控制器。
有人有这样的问题吗?
是否有解决方案?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我们有一个收集信息的设备。 该器件可长时间不间断运行。 有时微控制器会冻结、 看门狗计时器会重新启动它。 之后、微控制器在命令权限中断时再次挂起(UCA2IE |= UCRXIE;)。 此时 GIE 被禁用。 在这种情况下重置不起作用。 只需完全关闭电源、然后再打开再重新启动微控制器。
有人有这样的问题吗?
是否有解决方案?
您好 Caleb、
系统频率- 3.6864MHz
PMMCOREVx =默认情况下
UCA0、UCA1、UCA2、UCA3、UCB0、 UCB1、UCB2、UCB3、RTC 计时器、Timer_A1、Timer_B、 WDT、带基准的 ADC
只有信息扇区正在编程、并且只能通过 PC 的命令进行编程。 信息内存在程序开始时被读取。
15%的器件会出现此问题、这种情况很少发生、每周或每月发生一次。
我连接了 JTAG 调试器、并逐步介绍了这些步骤。
因为这个问题很少见、我无法抓住。
此致、
Andrii
您好 Caleb、
我们制造了大约120个器件。 其中约有15人(目前)有上述问题。 最近的测试表明问题与温度有关。 它出现在环境的特定温度下。 温度变化速度可能仍然很显著、因为所有器件都经过测试、而温度从-20C 变为+55C 时未显示任何故障。 在一个器件中、它发生在44C (重复两次)时、暂挂会落在温度传感器上、该传感器在与 MSP430微控制器的 I2C 接口上工作。 来自传感器的数据每秒计算一次、并存储在 SD 卡上。 与 I2C 配合使用的子程序已根据推荐的 TI 进行了更改。 测试正在进行中。
是的、可以将器件连接到 PC 并在固件中进行修改以发送诊断代码。
未使用低功耗模式。
当微控制器挂起时、我连接 JTAG 调试器并使用命令 UCA2IE |= UCRXIE 将程序从开始传递到线路;这一步之后、微控制器再次挂起并由看门狗定时器重新启动。
此致、
Andrii
您好 Caleb、
很抱歉耽误你的时间、我们必须确保一切都完成了。 问题在于通过 i2c 接口进行的两次读取之间的延迟。
_bis_SR_register (GIE);
U_IN_BIN = VMeasuring ();
U_in =(U_in_bin * KUin)+ AUin;
_DELAY_CYCLES (1400);// 0.380ms
u_in_bin2 =温度测量();
TE =(U_in_bin2*Kte+ate);
根据公式计算的值取决于温度值并更改总延迟。
我们消除了该延迟、并在算法中添加了检查:
signed int TempMeasuring (unsigned int tret){
while (UCB2STAT 和 UCBBUSY);
UCB2CTL1 |= UCSWRST;
UCB2I2CSA = 0x48;
UCB2CTL1 &=~UCSWRST;
UCB2CTL1 |= UCTR + UCTXSTT;
UCB2TXBUF = 0x01;
while (!(UCB2IFG&UCTXIFG));
UCB2CTL1 |= UCTXSTP;
while (UCB2STAT 和 UCBBUSY);
UCB2CTL1 &=(~UCTR);
UCB2CTL1 |= UCTXSTT;
while (!(UCB2IFG&UCRXIFG));
tret = UCB2RXBUF;
tret = tret << 8;
UCB2CTL1 |= UCTXSTP;
while (!(UCB2IFG&UCRXIFG));
tret |= UCB2RXBUF;
return (signed int) tret;
}
问题已解决。
祝你度过美好的一天!
Andrii