极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15099|回复: 8

奇怪问题, Arduino 板子每 32.5 秒重启一次

[复制链接]
发表于 2014-9-23 10:20:59 | 显示全部楼层 |阅读模式
本帖最后由 Super169 于 2014-10-9 23:40 编辑

这个问题我自己也觉得不合理, 不知如果发问, 但就是发生了.
之前因为 upload 程式在 00:00 无突停止, 想加入一个 LED / TFT 去显示状态.
但後奇怪, 加入之後经常无故重启, 结果也是看不到原因 (因为系统不断重启了).

初时以为程式有问题, 就不断把程序简化, 希望看到问题所在.
最後, 简化至只在每秒显示一个数字, 也会出现问题.
由於问题可重复, 经不断测量, 发现竟是每 32.5 秒左右就会重启.
以为是板子出事, 换了两片都是一样, 时间也是一样.
更换了另一片 OLED, 也是一样, 32.5 秒重启一次.
只好怀疑是 OLED 库有问题, 换了另一片 TFT, 用的是 UTFT 库, 结果也是一样.
很莫名其妙, 只要拿走 OLED/TFT 又没有问题了.

之後的发现, 更加奇怪....

当找不到问题, 只好尝试加入 debug code, 用 serial 连线到电脑看吧.
初时只加了一句系意义的 debug code, 只是看看连线, 打开 电脑的 serial monitor...
结果竟然完全无问题, 执行了十多分钟也没重启.
奇怪, debug code 怎会可以解决问题.  之後删走新加入的 debug code, 再试.
同样 32.5 秒凰启...但, 只要我打开电脑的 Serial monitor, 虽然没东西传送, 问题却解决了.
晕了....只要开启 Serial monitor 就不会重启.

怀疑到可能是电源的问题, 就拿出一只 12V 1A 的火牛, 由 DC 供电.
竟然也没问题, 可以一直执行.

现在观察到的结果是:
1) 原来的程式, 用 USB 供电是没问题的.
2) 装上 OLED/TFT 後, 用 USB 供电, 每 32.5 秒就会重启一次
3) 装上 OLED/TFT 後, 用 USB 供电, 打开 Serial monitor 就没问题了
4) 装上 OLED/TFT 後, 转用 DC 供电, 也没有问题.

根据以上观察的结果, 请问有可能猜出是什麽问题吗?

会否因为 OLED / TFT 比较耗电, 单用 USB 供电不足?  用 DC 供电可解决.
但我最不明白是, 为何打开了电脑的 Serial. monitor 也可以解决问题.
回复

使用道具 举报

发表于 2014-9-23 10:40:51 | 显示全部楼层
“装上 OLED/TFT 後” 这里指的是装上东西和库还是只是连接上硬件部分?

回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-23 11:05:51 | 显示全部楼层
zoologist 发表于 2014-9-23 10:40
“装上 OLED/TFT 後” 这里指的是装上东西和库还是只是连接上硬件部分?

两者都有, 连接上 OLED/TFT 同时改更程式, 加入相关的库.
回复 支持 反对

使用道具 举报

发表于 2014-9-23 11:30:34 | 显示全部楼层
从上面的推一下,有可能是:当USB有通讯的时候 USB口上的供电会加强(USB有设备的时候USB HOST会制定电流大小)。但是这个解释不了为什恶魔 32.5s 自动重启。

不知道你这有没有那种纯USB口供电的东西,装上之后试试。应该出现的结果是:工作正常,无论是否打开串口都正常
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-23 15:01:57 | 显示全部楼层
zoologist 发表于 2014-9-23 11:30
从上面的推一下,有可能是:当USB有通讯的时候 USB口上的供电会加强(USB有设备的时候USB HOST会制定电流大 ...

純 USB 口也可以一試, 我可以用 USB 火牛接 USB 口供電.
不過, 之前用 W5100, 如果用 USB 火牛供電反而更不穩定, 就連 W5100 也不能啟動, 可能是我的 USB 火牛輸出的電不穩定.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-24 00:22:57 | 显示全部楼层
再测试了两个组合, 结果都是没问题:
5) 装上 OLED/TFT 後, 用电脑的 USB 供电, 但更改插头转用 DC 供电, 没有问题.
6) 装上 OLED/TFT 後, 用 USB 火牛, 对 USB 插头 供电, 没有问题.

以为一切回复正常, 但当我再次用电脑的 USB 插到板上的 USB 头时.....又出问题, 又是 32.5秒.
这个奇怪的时间, 当中应该有一点意义的.  
初时单凭感觉, 以为是 30 秒, 但再三量度多次後, 发觉每次都是32.5 秒左右.
回复 支持 反对

使用道具 举报

发表于 2014-10-9 22:26:03 | 显示全部楼层
32.5s=32500ms,约等于32768ms,这个数是啥呢?有符号型int的最大值,超出这个值你就溢出了,所以,楼主把你程序里的int相关函数换成long试试?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-9 23:39:33 | 显示全部楼层
本帖最后由 Super169 于 2014-10-9 23:41 编辑
wasdpkj 发表于 2014-10-9 22:26
32.5s=32500ms,约等于32768ms,这个数是啥呢?有符号型int的最大值,超出这个值你就溢出了,所以,楼主把你 ...


应该没关系....因为只要改变供电的方法就没问题,  程式中的 int, 不会知道是那里供电的.  
不过, 32768 的结果...又真的有趣, 我也没留意到, 大大果然利害.

最近再三测试, 应该是电流不足而做成, 很大机会是因为连接了太多东西.  又或者是我的电脑 USB 的电源不足/不稳定导致.  至於那个时间, 可能 OLED/TFT 比较耗电, 当刚好要推动某个元件测试时, 电力不足而重启了.
但解释不了为何开启了 Serial monitor 会没问题, 有可能是电脑开启了 Serial 後, 会提供更大电流.

现在我已不能单靠电脑供电了, 要把所有东西都插到面包板, 外接供电, 否则就连读到的数据也出问题.
回复 支持 反对

使用道具 举报

发表于 2014-10-13 17:07:34 | 显示全部楼层
電腦 USB 供電,電流只有 500ma,應該是電流不夠,所以從啟
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-23 00:20 , Processed in 0.043435 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表