您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> BF592技术支持专区 -> BF592处理器应用设计7-独立按键
本帖共有713个阅读者
发表帖子 发表投票 回复主题
BF592处理器应用设计7-独立按键
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
BF592处理器应用设计7-独立按键

硬件原理图

上传的图片
  20128159435385.jpg [ 35.47 KB 296×381 ] (缩略时请点击查看原图)

 

按键原理介绍

首先按键对应的每个GPIO口需要上拉10K电阻,然后通过程序配置GPIO口把对应的端口配置成输入口,按键按下,端口被拉低至低电平,即“0”,通过检测该端口的电平即可判断按键是否按下。

去抖概念:

按键是机械器件,按下或者松开时有固定的机械抖动,抖动图如下:

上传的图片
  20128159443085.jpg [ 3.30 KB 282×132 ] (缩略时请点击查看原图)

 

上图看出按键按下和松开的瞬间出现机械抖动,这个抖动时间虽然很短,一 般10~15ms,不同按键抖动不同,但对应DSP来说,很轻松就能检测到,DSP是 uS 级别。但这个结果并不是我们需要的,实际上只进行一次按键操作,但有可能执行了多次按键结果,这就是抖动造成的,所以大多数产品实际使用中都使用了按键去抖功能。按键去抖分为硬件去抖和软件去抖,硬件去抖最简单的就是按键 2 端并联电容,容量根据实验而定。软件去抖使用方便不增加硬件成本,容易调试,所以现在大都使用软件去抖。

软件去抖原理:

1. 检测到按键按下后进行 10~15ms 延时,用于跳过这个抖动区域

2. 延时后再检测按键状态,如果没有按下表明是抖动或者干扰造成,如果仍旧按下,可以

认为是真正的按下。并进行对应的操作。

3. 同样按键释放后也要进行去抖延时,延时后检测按键是否真正释放。

在做独立按键测试实验前首先请阅读一下之前的GPIO介绍,后面的例子中用到了GPIO中断,这里我们介绍一下GPIO中断,下图中是GPIO中断相关的寄存器,PORTF口跟PORTG口寄存器一样。只是把G改成F,例如:PORTGIO –〉PORTFIO。


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2012/8/15 9:45:05
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

PORTG口寄存器功能介绍:

上传的图片
  20128159484485.jpg [ 223.99 KB 669×625 ] (缩略时请点击查看原图)

 


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2012/8/15 9:49:01
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

PORTG和PORTF都有A和B两个中断源,可以通过程序配置使用不同的中断源。

SIC_IARx:设置中断优先等级。每个中断源都有一个默认的优先等级,如不对该寄存器配置,则可以使用默认的中断优先等级配置中断源。

从下图中可以看出PORTG和PORTF相关的两个中断源A和B位于SIC_IAR2,其默认配置值默默人分别为54,根据其配置值,通过下表获知其对应的中断等级为IVG12IVG11

上传的图片
  20128159495685.jpg [ 54.08 KB 573×243 ] (缩略时请点击查看原图)

 

SIC_IMASK0:中断屏蔽寄存器,使能中断使用。

*pSIC_IMASK0 |= IRQ_PFA_PORTF 功能是使用PORTF的A中断源

函数:

register_handler(ik_ivg11, Key_ISR)

       中断等级管理函数,该函数在头文件 “exception.h”中定义,定义该头文件后直接可以使用,其功能是告知中断管理器定义的中断标识符为Key_ISR和中断等级为11级。

EX_INTERRUPT_HANDLER(Key_ISR)

中断函数,该函数在头文件 “exception.h”中定义,当触发中断后,会进入该函数执行。


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2012/8/15 9:51:04
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.154356 Call, 1 Queries, Processed in 0.031250 second(s),