zoukankan      html  css  js  c++  java
  • 记一次艰难的CTP调试

     一个atmel,mxt540e的CTP触摸屏。

    中断配置为下降沿,输入上拉。
    总是只能触发一次中断,中断脚就一直低电平,无法拉高。这只是表面现象
     
    不停找底层I2C驱动,改代码,没用。要靠波形来说话
    用逻辑分析仪,发现读完了数据,中断已经拉高。
    然后过了几ms后,中断拉低,但没有触发中断。排除了CTP本身问题
    其实前面用c8051f已经正常工作了。
    好,先去掉USB部分,发现可以正常中断,原来USB里面包含一个10ms延迟。
    问题就来了,报点频率是3-5ms,也就是说,几ms后中断来临,而我的程序还在跑中断函数,无法响应。等到跑完函数后,接不到下降沿(这时中断信号一直低)
     
    于是,改回USB哪个延迟1ms就足够了。本身只延迟1ms足够,不要乱改!
    总之CTP有任何问题时,有中断问题,就把中断得波形也弄进来,于是找对方向解决问题。
     
    报点频率可以通过逻辑分析仪来观察波形,两次报点之间的间隔
    中断函数边沿触发,如果执行太久,会导致下一次边沿到来,无法触发中断函数。
     
     一年多后回头来看,当时犯了低级错误。就一句话总结:
    进入中断处理程序后,记得关闭中断,处理完动作再打开。这样就OK了!!!
  • 相关阅读:
    Photon3Unity3D.dll 解析三——OperationRequest、OperationResponse
    关于VS2010的一些操作
    Photon3Unity3D.dll 解析二——EventData
    Photon3Unity3D.dll 解析一
    关于U3D中的移动和旋转
    U3D的一些常用基础脚本
    U3D模拟仿真实现
    构建基于TCP的应用层通信模型
    TCP协议的三次握手
    Python生成随机字符串
  • 原文地址:https://www.cnblogs.com/zkp2010/p/4365279.html
Copyright © 2011-2022 走看看