主题中讨论的其他器件:ENERGYTRACE
大家好!
非常感谢您在这方面的帮助。 现在、我在这个问题上已经非常困惑了4天。 重新阅读所有文档、不幸运。
我有以下要求:
*简单的物联网传感器应用。
*每~5s 唤醒一次 MSPFR2311,通过 I2C 与传感器通信~5ms,然后返回休眠状态。
*每1小时通过 SPI 向无线芯片传输~50ms 并返回到睡眠状态。
*电池寿命至关重要,这就是我尝试使用 LPM4休眠~5s 的原因(定时在任何时候都不重要)。
但是、我看到的问题是 CPU 唤醒时间太长。 我非常困惑、因为我已经使用 GPIO 的所有可用代码进行定时、并且它的运行时间比功耗短得多。 我的 ISR 运行时间~30us、代码运行时间最大为~50ms。 但是、使用 EnergyTrace 进行的电流测量报告我的激活码电流过长(也是变量!) 有时、它可能会持续整整一秒。
我缩小了我的计划范围、尽可能缩小了范围、但至少在2块电路板上仍然会对其进行调整。
#include "io430.h" int main (void) { //停止看门狗计时器以防止超时复位 WDTCTL = WDTPW + WDTHOLD; //将引脚设置为低功耗模式。 P1OUT = 0x00; P2OUT = 0x00; P1DIR = 0xFF; P2DIR = 0xFF; //解锁引脚 PM5CTL0 &=~LOCKLPM5; //将 RTC 设置为触发~8秒 RTCMOD = 10000UL; RTCCTL = RTCSS_3 | RTCSR | RTCPS_1 | RTCIE; while (1) { //假设要在5000/2MHz = 2.5ms 无符号易失性 long wait_var = 5000; while (wait_var>1) wait_var--; _bis_SR_register (LPM4_BITS | GIE); } 返回0; } #pragma vector=RTC_vector _中断 void RTC_ISR (void) { (void) RTCIV;//清除中断 __BIC_SR_REGISTER_ON_EXIT (LPM4_BITS);//返回主程序 返回; }
此处是能量迹线、在任何地方都显示神秘的长延迟。 这是怎么可能的?