工作记录3--遥控解码不正常

写在前面

上周给一个工程写遥控代码的时候遇到一个硬件问题,自己在代码里面改来改去,醉了,这里做个记录下次免得再犯。
  问题现象是 我按住遥控器上面的某一个按键,遥控器会一直发码,程序中正常的处理是只识别一次,如果有长按功能再进入长按响应。但是当我按住其他无长按功能的按键后,单片机也响应了按键,而且响应时间非常不规律。我判断是程序中一直进入了新键码处理的程序。但我程序的原逻辑是按住不松手的话会把一个长按标志位置一,程序无法进入到新键码相应程序段,所以始终无法解决这个诡异的问题。
  最后还是公司的其他前辈帮我把问题找到了,接上示波器之后没有加电容谐振的波形如下图
  工作记录3--遥控解码不正常_第1张图片
  可以看到波形的噪声非常大,导致可能在接收到某一两位的时候接收代码段将其识别为错误码,然后重新从0开始接收遥控码,而在此之前可能有一两次的遥控码接收完整了,所以将接受完毕的标志位置了1,然后处理完一次遥控码之后将标志位清零并且进入松手检测,如果这时候噪声导致在接下来的几毫秒内都无有效码就会让松手检测的延时达到判定为松手的标准,而如果这时候又识别到有效码了,则又会进入新键码的处理段,这样就导致我按住没有长按功能的按键之后,会出现不规律的响应。
  加了电容之后的波形如下:
  工作记录3--遥控解码不正常_第2张图片
  加了102电容之后通过电容的谐振,把原有的噪声基本上都过滤掉了,这时候程序的接收部分就能一直检测到按住不松手的情况,基本每次都能接收完有效遥控码,接收标志位在被处理程序段清零之后,很快就又被置一,所以在松手检测计时这段代码中,计时还没到松手的标准就又再次清零,就不会识别为松手,也就不会相应下一次的新键码。
  这里给自己做个警醒,下次如果遇到很诡异的现象,一定要先看看波形正不正常,我是接过一次示波器看到未谐振的波形的,但是当时我不知道这种波形属于不正常的波形所以就没有发现问题的关键。在此记录以免下次再犯。

你可能感兴趣的:(技术分享)