找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

这两天编程闹了个笑话

[复制链接]
admin 发表于 2012-8-24 10:59:21 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
前天有个客户要个控制器,客户提了个要求;“开关监测报警时不要停在那里,报警一分钟就跳到待机状态”我说“行!没问题。”
由于着急程序写错了,少写了括号,这两天全为这个故障发愁了,表现为正常运行时,工作两三次就跳到调到待机状态,有时长一点,没准。开始怀疑是按钮开关与干扰,折腾了一天也不行。后来到另外一客户家找来相同的控制器互换使用,怪事,都没事了,工作一天也没事。换回来又不行了。
我用数码相机拍指示灯的工作过程,观察报警所用的两个开关(两个开关的逻辑是相同则报警,正常使用不可能相同),后来一帧一帧回放,发现一个快要灭(量的时间长一点就报警了)的时候另一个亮了。看了看程序,才恍然大悟,气死我了。都是不细心惹的祸。
检测语句是这样的;
if(开关1&&开关2==0)
{delay(50);
if(开关1&&开关2==0)
报警程序;

这是未改以前的;
改了以后的是;
if(开关1&&开关2==0)
{delay(50);
if(开关1&&开关2==0)
报警程序;//忘记加大括号了
跳到待机位置;////由于着急就直接用了loop;

程序就出错在这里
解释如下
程序检测到开关一和开关2同时其作用时,延时抗干扰。再次检测,结果又不同了,报警程序没有执行,但执行了跳转程序。这个概率只有1秒的二十分之一呀。
程序应该是;
if(开关1&&开关2==0)
{delay(50);
if(开关1&&开关2==0)

报警程序;//忘记加大括号了
跳到待机位置;////由于着急就直接用了loop;


我只是提醒大家不要像我一样,一定细心呦
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-23 15:08 , Processed in 0.058553 second(s), 11 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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