原创 coldfire v1的KBI的一个问题

2010-6-28 00:38 2047 9 10 分类: MCU/ 嵌入式

freescale的coldfire v1系列MCU基本都集成了多通道的KBI,按照字面意思是键盘中断。这几天调板子的过程中发现这个模块的一个特点。通常每个KBI模块有8个通道,但只有一个中断标志位,也就是说,8个通道中的任何一个触发了中断事件,都将设置同一个标志位,而且对应的中断服务程序也只有一个,这就需要在中断服务程序中判断到底是哪个通道发生了中断,并且清中断标志位。


我们发现的一个现象是:假设把8个通道都配置成检测下降沿,那么如果任意一个通道检测到下降沿,则会触发中断,在中断服务程序中清中断标志,处理完后,退出中断服务程序后,如果该通道仍然保持低电平,那么在它保持低电平的期间,其他通道即使检测到下降沿,也不会触发中断。


这就是为什么飞思卡尔把这个模块成为KBI,而不是如一般的外部中断的原因。因为它的这个特性非常适合实现键盘的按键检测,但却不适合用来做一般的外部事件检测。所以在应用过程中要注意这个问题。


 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户834015 2010-4-4 20:48

键盘有抖动,不适合在KBI中断服务程序中处理,最好是定时查询(如10ms)。KBI中断主要用于MCU休眠时通过按键变化唤醒.
相关推荐阅读
用户1361860 2012-06-28 23:44
Nicrosystem Freescale Kinetis教程---SDHC
这是研究生翻译的SDHC的中文文档,里面很多句子不通,但我现在没时间去修改了。先放出来,应该还是会有一点作用  ...
用户1361860 2012-06-26 12:39
Nicrosystem Freescale Kinetis教程--低功耗定时器
Freescale Kinetis内部集成了一个独特的低功耗定时器,它可以在系统处于低功耗模式下,仍然以极低功耗运行,可以用于在适当时候唤醒系统进入正常工作模式  ...
用户1361860 2012-06-24 22:11
Nicrosystem Freescale Kinetis教程----RTC实时时钟
Nicrosystem的飞思卡尔kinetis教程之片上RTC  ...
用户1361860 2012-06-22 10:21
TI C2000微控制器指南
这是官方的C2000的介绍,C2000做电机控制那是业界最好的。  ...
用户1361860 2012-06-20 23:52
Nicrosystem Freescale Kinetis教程--PIT定时器教程
这是PIT定时器的教程,PIT是 Kinetis支持的另一种定时器,相对于上一讲的flextimer要简单。 今晚赶到北京,到宾馆发一篇博客  ...
用户1361860 2012-06-19 13:15
Nicrosystem Freescale Kinetis教程--Flextimer教程
Kinetis的Flextimer定时器教程 kinetis集成了众多功能各异的定时器,flextimer是其中最为复杂的一个  ...
我要评论
1
9
关闭 站长推荐上一条 /3 下一条