我们从2011年坚守至今,只想做纯粹的技术论坛,请不要发布和技术无关的话题。  本站有两万多份高大上的PCB和原理图下载,每日更新中,欢迎常回来看看

 找回密码
 立即注册
搜索
查看: 3136|回复: 3

键盘中断KBI的一点发现

[复制链接]

7963

主题

1176

回帖

3万

积分

管理员

积分
32042

社区居民最爱沙发原创达人社区明星终身成就奖优秀斑竹奖宣传大使奖特殊贡献奖

QQ
发表于 2012-4-30 22:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
做无刷电机控制时,我曾试图把霍尔器件电平检测用KBI实现,但3相霍尔传感器都接着的时候进不了中断,拔掉1~2相就能进中断。当时是用Processor Export的Bean做的,因急于把电机弄转也没细研究改用查询方式了。后来因性能等因素,又要使用KBI。下面总结几点容易被忽视的问题:
    [li]KBI各引脚是经过逻辑处理后进入KBI中断系统的,而不像IRQ中断那样独立的,使能中断前要保证所有用到的IO口为非中断电平(边沿模式是沿前的电平)。Processor Export的Bean无法实现这一点(起码不太好实现),后来直接用代码实现了。[/li][li]KBI工作于边沿触发模式时,对应IO口的内部上拉电阻PTxPE不想作用,而是由键盘中断边沿选择寄存器KBIxES控制的。霍尔传感器是开漏的,要接外部上拉电阻,否则无法得到高电平。[/li][li]KBI只能设置成在一个确定的沿(要么上升沿,要么下降沿)产生中断,若想让其在2个沿都产生中断,需要在中断服务程序中重新设置。方法是:每次进中断后KBI引脚电平发生变化,要重新对边沿选择寄存器KBIxES赋值。 [/li]

下面给出初始化和中断程序代码:
void KBI_Init()
{
  KBI1SC = 6;
  KBI1PE = (1<<7)|(1<<6)|(1<<5);
  KBI1ES = ~PTBD;
}
interrupt VectorNumber_Vkeyboard1 KBI_ISR(void)
{
  KBI1ES = ~PTBD;
  KBI1SC_KBACK = 1;
  ……
}
6248819729430.png
  • 打卡等级:以坛为家III
  • 打卡总天数:619
  • 打卡月天数:10
  • 打卡总奖励:2318
  • 最近打卡:2026-11-12 09:00:00

4

主题

8353

回帖

8284

积分

二级逆天

积分
8284

终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

发表于 2024-5-23 16:06 | 显示全部楼层
回复

使用道具 举报

  • 打卡等级:以坛为家II
  • 打卡总天数:214
  • 打卡月天数:0
  • 打卡总奖励:864
  • 最近打卡:2026-06-15 14:40:30

0

主题

514

回帖

1009

积分

二级逆天

积分
1009

终身成就奖

发表于 2024-6-7 16:51 | 显示全部楼层
回复

使用道具 举报

  • 打卡等级:以坛为家II
  • 打卡总天数:141
  • 打卡月天数:0
  • 打卡总奖励:647
  • 最近打卡:2026-08-25 22:11:47

8

主题

747

回帖

979

积分

二级逆天

积分
979
发表于 2026-4-5 11:38 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请举报投诉

本站所有资料仅限参考学习交流,PCB原理图源码等所有资料不保证准确没问题,请不要用作生产。否则后果自负。

闽公网安备35062302000276号 | 闽ICP备2024076463号-1 | 论坛技术支持QQ群171867948 | 论坛问题,充值问题请联系QQ1308068381

平平安安
TOP
快速回复 返回顶部 返回列表