Carbide 项目blink问题

Carbide现情况,blink出现错误,在低电量条件下,指示灯出现不规则闪烁,具体情况如下:

  1. 当街上电源充电时,亮红灯,在此时有一个消息进入,则会开始闪烁。原计划为亮白色等(红+绿+蓝),现阶段仅能亮(蓝+绿),红灯不亮。
  2. 低电量不加电源时,应该会闪红灯,这时进来一个消息,则会只会闪(蓝+绿)灯,红灯不亮的情况,并且在亮灭屏的时候,情况更加复杂,有时候会闪蓝灯,有时候闪粉色灯(蓝+红),有时候正常闪,还有时候闪黄灯(红+绿),总结一下:

一.接电源亮红灯–>来提醒–>亮(蓝+绿)
二.低电量闪红灯–>来提醒–>亮(蓝+绿)–>灭屏–>蓝闪/粉(蓝+红)闪/正常闪(蓝+红+绿)/黄闪(红+绿)
通过对节点的写值分析得到以下结论:
1.blink写1的时候,brightness会写255
2.blink写0时,brightness会写0
3.当blink=1时,再写brightness时,blink会置0,此时,灯停止闪烁,进入常亮模式。


2017年7月24日解决问题
在标准的充电条件下,亮的是黄(绿+红)灯,因此,在之前的问题中,出现了闪灯混乱的问题,也就是亮黄色的时候,来了一个通知,这个时候,按照程序设计,应该是要亮白等,但是实际上只亮了蓝灯,最初的想法是能够通过对三个灯的赋值的限制来达到问题的解决,也就是说在设置闪烁的时候来进行标志位的置位,从而不让上层在闪烁的时候写brightness节点,但是经过修改之后,发现在读完通知以后,白灯无法变暗,仍然在闪烁,因此推测上层的控制是在blink写值之后,直接了brightness,造成无法写值。

偶然的,在程序打log的过程中,在三色灯的设置函数

qpnp_rgb_set(Struct qpnp_led_data *led)

中加入了log,突然发现,这个问题被解决了,后经过分析得出,每打一次log,就相当于是一次延时,因此使用了delay函数进行测试,得到了结果符合与其,证实了这个问题的产生是因为寄存器没有反应过来,导致了在写寄存器的时候出现了问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值