打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
单片机在电压低至0.43v时内部没有全部复位
最近在做一个数码管的显示项目时遇到一个值得注意的问题,
项目架构是用stc15w204s采集另一个单片机送出的并口信号,转换驱动tm1640点亮数码管。
原先项目时通过74138直接驱动12个4511来静态显示的,电流很大,而且很多器件,新架构只要2个芯片就行了,大大节省了元器件数量和成本。

但是在设计过程发现问题,在插拔过程中新显示板总是程序跑乱了,
而且断电后很久,甚至半个小时都无法恢复。

一开始以为是程序被误擦除了,因为串口下载IO用在通信中了,因此怀疑会不会是在插拔过程中单片机刚好上电启动,以为收到了下载信号,因为导致误擦除程序区。要不然不可能重新断电重启还是程序还是乱跑。

后来发现,有一些出现程序跑乱的板子,在一段时间后重新上电又恢复正常了。
左思右想,怀疑会不会是程序在插拔过程中跑乱了,因为有个电容蓄电,芯片没有全部重启。
后来在出现问题的板子重复上电多次无效后,用镊子短接电容彻底放电,奇迹出现了!!
板子再次上电恢复正常。
原来最终问题是因为插拔过程通信信号不完整,导致程序内存访问越界(程序编制有问题,数组访问越界),因为那板子上有一个电容,
而整个电路在电压降低到0.43v后就基本不在吸收电流,电容上电压能在0.43v处维持很久,而stc15w204s在电压低至0.43v时内部没有全部复位。(因为电路没有专门设复位电路,都是通过重新上电自动复位来处理的)按我猜想,至少内存或部分寄存器还保持原值,因此在重启上电后程序还是乱的。 
 
 
 
 

20160826修改
这是一篇耻辱帖,找到根本原因了。
原来不是stc15w204s的问题,stc15w204s有掉电和上电复位吗,而且还有内部低压检测复位,而且测试过出错后的单片机程序正常运行,只是显示错乱了,所以问题出现tm1640这里。是tm1640在热插拔过程中得到了错误的设置数据,而断电后又因为电容蓄电没有得到重新初始化,所以一直保持错误显示。

其实有两个问题,首先是通信时序在热插拔过程中不完整,导致数组访问越界;
其次是tm1640驱动时序,在设置地址时没有把B7 B6 两位置1,导致在写SRAM数据地址自动加1模式中时首地址不正确出错
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
51单片机初学--51单片机介绍
第二章 点亮你的LED
跟我学51单片机(一):单片机最小系统组成与I/O输出控制
单片机入门培训专题(三) – 尝试点亮你的LED ① – 著名的PCB哥
8051单片机有多少个接口?
STC89C52RC单片机下载程序说请给MCU上电。
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服