打印
[技术问答]

N76E003的P10和P00都需要产生中断怎么办?

[复制链接]
1850|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
oktony|  楼主 | 2018-6-23 16:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
旧的ST003两个按键正好在15和16脚,现在换新塘只能一个IO口中断,不改板的情况下有什么办法吗?
沙发
tianxj01| | 2018-6-23 16:54 | 只看该作者
这2个管脚中断P00和P10,好死不死刚好在2个中断组,互斥的,理论上要不改动板子而同时启用按键中断是么有办法的。
不过也不是非要用中断不是?刚好我们对象的按键,动作速度非常有限,一般我们程序里面按键抗抖都弄个2-5ms,所以你弄个定时器,5-10ms一次查询端口,可以肯定不会产生遗漏按键动作。顺便5-10ms间隔可以直接跳过抗抖过程。检测按键,进入按键调用,没有则直接跳过。这样程序占用的时间资源只是比按键中断稍微多了那么一点点,而且用time定时器中断代替按键中断,也不影响原来编程的主流程。

使用特权

评论回复
板凳
tianxj01| | 2018-6-23 16:57 | 只看该作者
具体处理方法:
发生一次检测到电平变化,做个标记,下次定时中断,继续检测,如果还是一样电平,认为抗抖完成,电平变化确认,就可以得到一次按键按下或者按键跳起过程,然后进入按键处理,整个过程类似中断边沿检测,而且同时完成抗抖动功能。

使用特权

评论回复
地板
zhuomuniao110| | 2018-6-23 23:40 | 只看该作者
不能同时开启外部中断?

使用特权

评论回复
5
dongnanxibei| | 2018-6-23 23:55 | 只看该作者
有这个问题?手册不是说都可以开启中断吗

使用特权

评论回复
6
tianxj01| | 2018-6-24 09:09 | 只看该作者
dongnanxibei 发表于 2018-6-23 23:55
有这个问题?手册不是说都可以开启中断吗

引脚中断是分4组,这个在说明里面很明确,所以,这里需要对硬件有所规定了。
如果想全部用中断解决,你必须采用某一组的8个引脚,比如P00-P07,或者P10-P17,他们必须是一组里面,并且最多不能超过8个引脚中断。003硬件设计,决定了这样的特性。

使用特权

评论回复
7
xujunyi3611| | 2018-6-24 11:22 | 只看该作者
不要用中断了,用状态机检测吧,这样也是可以的。

使用特权

评论回复
8
598330983| | 2018-6-24 20:00 | 只看该作者
分组的中断,不能全部开启中断模式吗

使用特权

评论回复
9
tianxj01| | 2018-6-25 10:01 | 只看该作者
本帖最后由 tianxj01 于 2018-6-25 10:03 编辑
598330983 发表于 2018-6-24 20:00
分组的中断,不能全部开启中断模式吗

一个组里面,可以全部开启引脚中断,所以也就是只有最多8个引脚,另外一个组是不可能同时开启中断的,当然非要全部用,采用中断组分时切换应该也是可行的,当然,这样做,对于低速中断没有问题,对于高速中断,肯定会漏掉分时切换不在有效时间内的中断信号,同时,这样一来,对于那些有抗抖动要求的中断,处理起来相当复杂。

使用特权

评论回复
10
oktony|  楼主 | 2018-6-25 14:09 | 只看该作者
我现在这两个口是用来做按键中断唤醒,目前想了一条路就是MCU用休眠唤醒来检测按键,感觉新塘这个地方处理得太弱了,什么年代了还不能每个IO口都能唤醒

使用特权

评论回复
11
tianxj01| | 2018-6-25 14:47 | 只看该作者
oktony 发表于 2018-6-25 14:09
我现在这两个口是用来做按键中断唤醒,目前想了一条路就是MCU用休眠唤醒来检测按键,感觉新塘这个地方处理 ...

这样,最好弄个二极管,垮在2个端口间,才能完美实现中断唤醒。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

46

帖子

1

粉丝