发新帖我要提问
12
返回列表
打印
[STM8]

快哭了,大伙儿帮我看看我这个问题

[复制链接]
楼主: niyade
手机看帖
扫描二维码
随时随地手机跟帖
21
我觉得不是读不出来,而是你的显示屏锁住了

使用特权

评论回复
22
niyade|  楼主 | 2017-12-12 19:25 | 只看该作者
kingkits 发表于 2017-12-12 17:57
我觉得不是读不出来,而是你的显示屏锁住了

调试可以看温度变量没变化

使用特权

评论回复
23
niyade|  楼主 | 2017-12-12 19:28 | 只看该作者
就是这个工程

Project()1.rar

1.69 MB

使用特权

评论回复
24
niyade|  楼主 | 2017-12-12 21:16 | 只看该作者
不仅仅是这个语句影响,在代码里加其他的语句都可能使温度读不出来,比喻串口初始化去掉和加上

使用特权

评论回复
25
niyade|  楼主 | 2017-12-12 21:36 | 只看该作者
是不是和VCAP 的电容有关,我看手册上是接680nf的极性电容,而我接的是106的电容?我手里现在也只有106的电容,当时买的时候发现680nf的没货了

使用特权

评论回复
26
liyikuan| | 2017-12-12 21:53 | 只看该作者
可能 读出来了 你的 显示 有问题

使用特权

评论回复
27
pmp| | 2017-12-12 22:25 | 只看该作者
时序的问题吗?

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
niyade + 3
28
niyade|  楼主 | 2017-12-13 08:53 | 只看该作者
liyikuan 发表于 2017-12-12 21:53
可能 读出来了 你的 显示 有问题

不是显示,串口打印,调试显示温度变量是个常数。现在不是加那一句有影响,加任何一段毫无关系的语句都可能影响

使用特权

评论回复
29
niyade|  楼主 | 2017-12-13 08:56 | 只看该作者
pmp 发表于 2017-12-12 22:25
时序的问题吗?

DHT时序比较简单,用别人的,也对照了一下数据手册。在初始化之前加一些语句,也应该不影响主循环里的读取

使用特权

评论回复
30
niyade|  楼主 | 2017-12-13 08:57 | 只看该作者
快疯了,难道是stm8坏了?只买了一片,因为自己做着玩玩

使用特权

评论回复
31
niyade|  楼主 | 2017-12-13 10:02 | 只看该作者
怀疑是VCAP的影响,看了003 的datasheet,是470nf到3300nf,而我这个是10uf,今天在公司换了一个220nf的(没有找到合适的,只能试试了),晚上回去再试下

使用特权

评论回复
32
superupon| | 2017-12-13 10:15 | 只看该作者
芯片坏的概率不大的,我觉得你要先确认一些基本问题,
1. 把0xdf这个字符换成其它字符,看有什么变化
2. 如果处于之前有问题的状态,你要确定你的程序在运行,而不是处于其它状态
3. 个人推荐用串口调试,输出一些调试信息,你用集成开发环境的调试会破坏时序,会影响调试结果

另,我觉得硬件的问题应该不大,否则你运行正常的程序就无法解释。
还有,你可以把你调试的结果发出来,或者截图,这样我们可以看到它动态的行为,而不是只有它的静态代码逻辑

使用特权

评论回复
33
duhemayi| | 2017-12-13 16:44 | 只看该作者

使用特权

评论回复
34
niyade|  楼主 | 2017-12-13 19:40 | 只看该作者

使用特权

评论回复
35
niyade|  楼主 | 2017-12-13 21:37 | 只看该作者
本帖最后由 niyade 于 2017-12-13 21:41 编辑
superupon 发表于 2017-12-13 10:15
芯片坏的概率不大的,我觉得你要先确认一些基本问题,
1. 把0xdf这个字符换成其它字符,看有什么变化
2. 如 ...

如下为加上和没加上这两条语句的变化。其实加这两个语句不是引起问题的唯一原因,比喻说我把串口屏蔽掉或者加一条将某个毫无关系的IO拉高的语句,都有可能影响,造成这个结果。
不是显示与调试的问题,串口打印一样是这个问题。程序肯定在运行状态,不然串口不会打印,在线调试全速运行也一样显示在正道
刚刚录了一个视屏,但是不好上传,就传这两张图片,上面有程序工程。



加上语句.png (354.39 KB )

加上这两条语句

加上这两条语句

屏蔽后.png (36.41 KB )

屏蔽后,调试情况

屏蔽后,调试情况

使用特权

评论回复
36
superupon| | 2017-12-14 09:08 | 只看该作者
如果是这样的话,感觉很像是时序的问题,我的推测可能是LCD的IO输出, 由于某种原因使得DHT111模块的输入IO时序出现了变化,导致它读不上来。
我谷歌了一下,找到这篇分享的帖子 “基于STM8的DHT11温湿度传感器的驱动代码设计” CSDN的博客
, 其中关于BUG的描述有可能对你的分析有帮助。(我发不了Url, 麻烦用关键字百度一下)
我的建议是,如果有示波器的话,最好观察一下DHT111模块IO脚上的信号,很可能已经发生了变化。

另,我有个想法,你可以试一试,在原有的出问题的地方,换成一个delay(延时函数)的调用。看只是有延时会不会有影响,如果没有,那么可以再把输出LCD的语句加上,再延时。
看有没有影响,我之前用过一个Wifi模块,也是没有数据输出,加了一个延时之后就好了。

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
niyade + 3
37
niyade|  楼主 | 2017-12-14 12:05 | 只看该作者
superupon 发表于 2017-12-14 09:08
如果是这样的话,感觉很像是时序的问题,我的推测可能是LCD的IO输出, 由于某种原因使得DHT111模块的输入IO ...

其实不仅仅是lcd的语句的问题,我将串口初始化屏蔽与加上也会是这样的情况,我在程序里加上一个毫无关系的IO口拉高拉低也会影响,我将IAR软件里的options的data由large改为small也会是这样的情况。总之感觉,太奇怪了!

使用特权

评论回复
38
小明的同学| | 2017-12-14 19:42 | 只看该作者
你完全可以打个℃的。

使用特权

评论回复
39
小明的同学| | 2017-12-14 19:43 | 只看该作者
或者直接写成`C

使用特权

评论回复
40
niyade|  楼主 | 2017-12-18 13:26 | 只看该作者
解决了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则