9个员额/ 0个新员额
最后发表
fxishui
离线
最后看到:3年8个月前
加入:2016-04-12 13:27
da14580深睡眠模式唤醒后程序逻辑问题

您好,
在da14580深睡眠模式唤醒后,我我需要检测满足一定条件才开始广播,不满足则继续睡眠;我把逻辑加静态孔隙app_wakeup_cb (void)这个里面;
启动一个定时器去监测条件;
问题:
1,我在调试模式下运行唤醒逻辑正常,把程序烧写到otp后,程序在唤醒后跳过了条件检测这个逻辑;直接开始广播;
2,我尝试把user_app_adv_start这个回调函数换掉,在程序第一次广播之前就加上检测条件,结果还是一样的。
3、深睡眠后唤醒程序执行逻辑和扩展睡眠唤醒后执行差异在那个地方呢,这逻辑在扩展睡眠模式下唤醒逻辑都是正常的。
谢谢!

设备:
Qinjiny_Dialog
离线
最后看到:3周2天前
工作人员
加入:2016-11-01 05:47
你好,

你好,

深度睡眠和延伸主要区别在于SysRAM也掉电了,这意味着醒来以后事实上程序又从OTP拷过来头跑起了,所以你在扩展模式下做的事情没办法直接改成在深度睡眠下运作。

建议你看一看嗯- b - 006睡眠模式配置详细了解一下整个睡眠和唤醒的机制。

延长无法满足功耗上的需求吗?

fxishui
离线
最后看到:3年8个月前
加入:2016-04-12 13:27
您好!

您好!
扩展模式的功耗是满足要求的。我就是想利用深模式每次唤醒都从头跑起,清一下内存和寄存器等;
目的是防止程序需要长时间运行才能暴露的bug和长时间运行可能出现的错误;这种情况您有什么好的建议呢?
谢谢!

index219
离线
最后看到:1年4个月前
加入:2016-05-23 07:00
你好

你好
请问下,你的580在延长睡眠模式下不广播功耗电流瞬时值是多少吗?广播瞬间值是多少?
我参考一下,谢谢。

fxishui
离线
最后看到:3年8个月前
加入:2016-04-12 13:27
我这边外围电路比较少,不广播的时候是二十几uA

我这边外围电路比较少,不广播的时候是二十几uA,广播的时候是一百多uA;待机时候是6 uA的样子

index219
离线
最后看到:1年4个月前
加入:2016-05-23 07:00
你的好,你说的“不广播的时候是二十几uA

你的好,你说的“不广播的时候是二十几uA”是指的580处于活跃的模式并且没有广播数据的时候?

Qinjiny_Dialog
离线
最后看到:3周2天前
工作人员
加入:2016-11-01 05:47
抱歉之前的回复可能有些错误。深

抱歉之前的回复可能有些错误。深sleep醒来以后不一定会从头跑起,配置正确的话是能够回到之前的context开始继续跑的。Deep sleep虽然会让SysRAM也掉电,醒来每次都需要重新从OTP拿代码,但是有一部分retention RAM里面的数据不会丢掉。

你可以看看把你的逻辑相关的一些参量存在记忆里面看看会不会有什么帮助

fxishui
离线
最后看到:3年8个月前
加入:2016-04-12 13:27
谢谢!

谢谢!
我这边加串口打印程序的运行轨迹,然后发现是有几个全局变量出了问题;
我在前面把变量初始化完,启动定时器去检测满足广播的条件,
结果第一次定时器触发进入,程序就跑偏了,判断那个值第一次明显不能进入那段逻辑的(变量的值不对),我怀疑是不是在深模式下;内存使用大小受到限制;
您有没有遇到过这种情况呢;
谢谢!

fxishui
离线
最后看到:3年8个月前
加入:2016-04-12 13:27
是啊。如果是最小系统。程序只启动广播,不做其他的工作

是啊。如果是最小系统。程序只启动广播,不做其他的工作,电流随着你的广播频率跳动,大概2 uA,广播一百多uA,跳动的频率跟广播的频率是一样的