4968|12

80

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

大家好,6410矩阵键盘做过吗?我这里老是有问题呢,请指教! [复制链接]

有时候我按一下键,却触发了两次按键,打印信息也出两次,还有时根本不打印调试信息,按键没响应。

我以前做2440的时候也没有出现过这种问题。6410的矩阵键盘处理与2440不一样。

为什么总是有按键不正常的现象呢,请大家给分析分析,先谢谢了。

最新回复

买了一个ideas6410真的不咋滴。  详情 回复 发表于 2010-4-22 16:24
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
先用示波器检测一下按键时电平如何,再确定是硬件问题还是软件问题。
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
是不是去抖有问题呢。
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

4
 
触发的事件是进入到判断某个中断还是进入到判断某列了?如果是只进入到中断可能是去抖,如果是后者我觉得是不是在等待事件发生waitsingleobject/wiatmultipleobjects后没有加入closehandle或者判断列不对。根本就没有进入判断,建议LZ多加打印消息侃侃。
 
 
 

回复

98

帖子

0

TA的资源

一粒金砂(初级)

5
 
独立的中断方式,还是cpu自带的扫描方式?
6410可是自带了8*8的键盘的。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

6
 
另外起码给点代码和调试信息吧。p都没那里知道你的问题出在哪里?
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

7
 
我用的是CPU自带的扫描方式,在原来按键的基础上做的。基本思路还是原来的处理,只是加了一些键,用了25个键,以其中一个按键为例,代码修改大概是这样的:
1:s3c6410kbd.cpp先修改这个数组_BUTTON_EVENT{key_switch,   //切换键
  。
  。
  。
     KEYNUM
        }BUTTON_EVENT;
}

2:s3c6410kbd.cpp中再修改函数WaitforKeyEventThread()
        HandleUp[key_switch]= CreateEvent(NULL,FALSE,FALSE,(TEXT("key_switch_UP")));
        HandleDown[key_switch] = CreateEvent(NULL,FALSE,FALSE,(TEXT("key_switch_DOWN")));
        if((NULL == HandleUp[key_switch]) || (NULL == HandleDown[key_switch]))
        {
                RETAILMSG(1,(TEXT("::Create key_switch button event failed!!\r\n")));
               
        }



while( 1 )
        {            
       
                singleNum = WaitForMultipleObjects( KEYNUM, HandleDown, FALSE, INFINITE);
                //RETAILMSG(1,(TEXT("(singleNum is %d))**\r\n"),singleNum));       

                if ( ! ResetEvent( HandleDown[singleNum]) )
                {
                        RETAILMSG(1,(TEXT("::ResetEvent Error !!\r\n")));
                        MessageBox(NULL, L"ResetEvent Error", L"Error", MB_OK);
                }

                switch( singleNum )
                {

                        case key_switch:
                                scan_code=0x25;   //VK_F1
                                SetEvent( m_hevInterrupt );
                                delay(10);
                                SetEvent( m_hevInterrupt );
                                //printf("Press key_9\r\n");
                                RETAILMSG(1,(TEXT("::key_switch !!\r\n")));

                                break;

3:在keyscan.cpp中扫描Key_Scan_Thread()中是这样改的
      //if(KEY_EVENT[R][C]==KEY_EVENT[0][0])
                if(( R==0) && (C==0) )                  
                {
                        Key_Press_Down[key_switch]=1;               
                        HandleUp_Down[key_switch]=TRUE;
                        SetEvent(HandleDown[key_switch]);
                }
                else
                {     
                       Key_Press_Down[key_switch]=0;       
                        HandleUp_Down[key_switch]=FALSE;
                }

4:keysan.cpp定义事件Create_Key_Event
        //-------------定义事件----------------------------
        
       //"key_switch" Button Event
        HandleUp[key_switch]= CreateEvent(NULL,FALSE,FALSE,(TEXT("key_switch_UP")));
        HandleDown[key_switch] = CreateEvent(NULL,FALSE,FALSE,(TEXT("key_switch_DOWN")));
        if((NULL == HandleUp[key_switch]) || (NULL == HandleDown[key_switch]))
        {
                RETAILMSG(1,(TEXT("::Create key_switch button event failed!!\r\n")));
                goto ButtonThreadFail;
        }

其余24个键和这个方法一样处理的,

现象就是有时候能灵,有时候不灵,楼上的热心人帮看看吧
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用楼主 xilangyue 的回复:
有时候我按一下键,却触发了两次按键,打印信息也出两次,还有时根本不打印调试信息,按键没响应。

我以前做2440的时候也没有出现过这种问题。6410的矩阵键盘处理与2440不一样。

为什么总是有按键不正常的现象呢,请大家给分析分析,先谢谢了。



6410自带的键盘驱动为什么不用呢,修改2处就可以随意修改键值了,而且按下弹起系统识别的都非常好。
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

9
 
你的代码好像不是cpu自带的键盘的
跟我的bsp好像是一样的。因为我手头的bsp是友坚的,它们就没有用cpu自带的。全部用中断做的。
cpu自带的8*8矩阵键盘驱动我手头没有,估计下个月或者下下个月还要自己写。三星有个文档介绍驱动的流程。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 8 楼 accessysq 的回复:
你的代码好像不是cpu自带的键盘的
跟我的bsp好像是一样的。因为我手头的bsp是友坚的,它们就没有用cpu自带的。全部用中断做的。
cpu自带的8*8矩阵键盘驱动我手头没有,估计下个月或者下下个月还要自己写。三星有个文档介绍驱动的流程。


原来是买了友坚的,可以理解。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

11
 
啥意思,什么叫买了友坚的可以理解,友坚有问题吗
 
 
 

回复

94

帖子

0

TA的资源

一粒金砂(中级)

12
 

nYqImAQPdC1eDVuJ



VKBbeBIPAbK0PLCs
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 10 楼 xilangyue 的回复:
啥意思,什么叫买了友坚的可以理解,友坚有问题吗


买了一个ideas6410真的不咋滴。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表