野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13515|回复: 3

模拟IIC中断的问题

[复制链接]
发表于 2015-2-8 16:48:46 | 显示全部楼层 |阅读模式
我用MINI开发板调试了触摸屏的模拟IIC,一开始INT中断正常,坐标数据也能正常报出来,但触摸了一断时间后,INT中断被拉低了,后面再触摸已经没有用了,必须重新Reset才能恢复高电平,才能触摸。
请问有没有人调试IIC中断的时候,有遇到过这种问题?
回复

使用道具 举报

发表于 2015-2-8 17:02:17 | 显示全部楼层
用野火的程序不正常吗?
回复 支持 反对

使用道具 举报

发表于 2015-2-9 09:32:26 | 显示全部楼层
                if(TOUCHC_INT !=0)  //轮询检查中断
                {
                        TOUCHC_INT=0;
                        
                        if(I2C_Touch_Read1() != 0)
                        {   
                                I2C_Touch_Pgdn(); //触摸按下
                        }
                                else
                                {
                                        I2C_Touch_Up();        //触摸抬起
                                }
                }        
能不用外中断最好不要用。你可以用轮询方法。我这里用的是定时时器20MS一次扫描是否有触摸按下,我这样写是因为我的一个产品的协议就这样。
回复 支持 反对

使用道具 举报

发表于 2015-2-9 09:35:52 | 显示全部楼层
wqy_1000 发表于 2015-2-9 09:32
if(TOUCHC_INT !=0)  //轮询检查中断
                {
                        TOUCH ...

uint8_t I2C_Touch_Read2(void)
{
        uint8_t i;
        i2c_Start();      
        i2c_SendByte(0x82);                //write
        if (i2c_WaitAck() != 0)                //ACK  
        {
                goto cmd_faill;       
        }
        i2c_SendByte(0x11);                //×Ö½úμØÖ·
        if (i2c_WaitAck() != 0)                //ACK
        {
                goto cmd_faill;       
        }
        i2c_Start();
        i2c_SendByte(0x83);                //read
        if (i2c_WaitAck() != 0)                //ACK
        {
                goto cmd_faill;       
        }       
        for (i = 0; i < 5; i++)
        {
                TOUCHBUF = i2c_ReadByte();        /* &#182;á1&#184;&#246;×&#214;&#189;ú */
               
                /* &#195;&#191;&#182;áíê1&#184;&#246;×&#214;&#189;úoó£&#172;Dèòa·¢&#203;íAck£&#172; ×&#238;oóò&#187;&#184;&#246;×&#214;&#189;ú2&#187;DèòaAck£&#172;·¢Nack */
                if (i != 5 - 1)
                {
                        i2c_Ack();        /* &#214;D&#188;&#228;×&#214;&#189;ú&#182;áíêoó£&#172;CPU2úéúACKD&#197;o&#197;(&#199;y&#182;ˉSDA = 0) */
                }
                else
                {
                        i2c_NAck();        /* ×&#238;oó1&#184;&#246;×&#214;&#189;ú&#182;áíêoó£&#172;CPU2úéúNACKD&#197;o&#197;(&#199;y&#182;ˉSDA = 1) */
                }
        }
        i2c_Stop();
       
        return 1;
cmd_faill:
        i2c_Stop();
        return 0;
}
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-10-5 16:20 , Processed in 0.076357 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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