[ZLG-MCU] 看看zlg7290.....怎么回事?

[复制链接]
2804|5
 楼主| tonney 发表于 2007-9-4 00:19 | 显示全部楼层 |阅读模式
看看7290<br />按一个按键后读到的数据,有2个!采用下降沿边沿触发,中断置标志,主循环查询的方法!得到这样的数据,其中大于0为正常按键,可是也得出0键值!一般采用什么方法避免,只是用软件排除0?<br />---------------------------------------<br />01&nbsp;00&nbsp;02&nbsp;00&nbsp;03&nbsp;00&nbsp;04&nbsp;00&nbsp;05&nbsp;00&nbsp;06&nbsp;00&nbsp;07&nbsp;07&nbsp;07&nbsp;07&nbsp;07&nbsp;07&nbsp;07&nbsp;07&nbsp;07&nbsp;07&nbsp;07&nbsp;07&nbsp;07&nbsp;07&nbsp;07&nbsp;07&nbsp;07&nbsp;07&nbsp;07&nbsp;07&nbsp;07&nbsp;00&nbsp;08&nbsp;08&nbsp;08&nbsp;08&nbsp;08&nbsp;10&nbsp;10&nbsp;10&nbsp;10&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0E&nbsp;00&nbsp;0D&nbsp;00&nbsp;0D&nbsp;00&nbsp;0C&nbsp;00&nbsp;0B&nbsp;00&nbsp;0A&nbsp;00&nbsp;09&nbsp;00&nbsp;09&nbsp;00&nbsp;01&nbsp;00&nbsp;02&nbsp;00&nbsp;03&nbsp;00&nbsp;04&nbsp;00&nbsp;05&nbsp;00&nbsp;06&nbsp;00&nbsp;07&nbsp;08&nbsp;08&nbsp;10&nbsp;07&nbsp;0F&nbsp;0E&nbsp;00&nbsp;06&nbsp;00&nbsp;0D&nbsp;00&nbsp;0C&nbsp;00&nbsp;04&nbsp;00&nbsp;03&nbsp;00&nbsp;0B&nbsp;00&nbsp;0C&nbsp;00&nbsp;04&nbsp;00&nbsp;05&nbsp;00&nbsp;0E&nbsp;00&nbsp;07&nbsp;08&nbsp;10&nbsp;0F&nbsp;0E&nbsp;00&nbsp;06&nbsp;00&nbsp;0D&nbsp;00&nbsp;05&nbsp;00&nbsp;04&nbsp;00&nbsp;0C&nbsp;00&nbsp;0B&nbsp;00&nbsp;03&nbsp;00&nbsp;0A&nbsp;00&nbsp;02&nbsp;00&nbsp;03&nbsp;00&nbsp;04&nbsp;00&nbsp;05&nbsp;00&nbsp;06&nbsp;00&nbsp;<br />-------------------<br />我发现这个症状了,按下去的时候读出来是正确的数据,再放手弹起来时候,由于机械震动问题,有产生一个下降沿,引发中断,而在主程序中再查询时候,此时已经松开按键,所以读出为0.可是在中断中加了延时后再去读取键值,却不能减少这种情况的发生,反而丢失了一些键值!<br /><br />void&nbsp;&nbsp;&nbsp;__irq&nbsp;IRQ_EX0(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;key_flag=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;DelayNS(0x2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;EXTINT=8;<br />&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;中断处理结束<br />}<br />&nbsp;&nbsp;<br />-----------------<br />可是当用低电平中断时候却更糟糕,读出来都是0值.....
LPC900 发表于 2007-9-4 08:13 | 显示全部楼层

请参考ZLG网站上ZLG7290的Demo程序

  
 楼主| tonney 发表于 2007-9-4 09:07 | 显示全部楼层

DEMO程序...

就是用了DEMO程序的驱动.......哎!<br />能够数码管了,可是读键值不行
 楼主| tonney 发表于 2007-9-4 09:35 | 显示全部楼层

zlg7290bs和zlg7290cs有什么不同?

同样的程序,zlg7290bs能读出2个键值,分别是正确的键值和0键值.<br />而zlg7290cs只能读出0键值....................<br />能说说为什么这样么?我用LPC2214的I2C接口,改了通信速率和延时都不行.....
zusen 发表于 2007-9-7 11:30 | 显示全部楼层

7290 的中断抖动相当的利害

中断到来后,延时后再读按键的值吧
qfsun 发表于 2007-10-26 14:17 | 显示全部楼层

1

我也遇见过这种问题,进一步试验发现有的按键正常。产生抖动的按键表现和功能键一致,一次按键能触发2次中断,所以第二次读出来必然是0。估计板子的问题,8和16键正常!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

17

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部