关于外部中断检测 在实际应用中的问题!
硬件的说明:
P0口 的P00 接了一个按键,按键按下为低电平,P04 接了一个门磁传感器,门打开的时候为低电平,门关闭的时候为高电平
场景: 设备为电池供电,不能处在轮询的费电的 操作。如何将门磁 假设为一个按键,按下为低,松开为高。则都使用zstack的key 驱动来完成检测
问题: 利用 HalKeyConfig 将P0口 设置为下降沿触发,PUSHx_POLARITY ACTIVE_LOW
当按键被按下和门打开瞬间,都可以在应用层检测到,但是门关闭的瞬间 就无法检测到。
如何实现 即能感知门打开的瞬间,又能感知门关闭的瞬间?
设想: 1, 门打开瞬间检测到后, 设置一个事件,每多少秒去轮询检测 P04 门磁接口的电平,最终实现检测要求,但是这种是费电的轮询 很不适合很不环保。
2,门打开瞬间检测到后, 重新配置P0口的硬件设置,修改为上升沿触发,PUSHx_POLARITY 修改为 ACTIVE_HIGH, 但是这应用层修改底层设置的做法又感觉不是很妥当,另外这样设置后 在门没有关闭的期间 按键就失效了。。。。。修改硬件配置具有排他性 导致了同一端口的硬件的局限性
3,使用ADC 检测产生中断, ADC的序列转换没有中断功能,只有单个转换有中断功能, 而 ADC 工作模式 又是轮询的, 设置一段时间然后开启ADC ,这个和第一种设想 对电池供电的设备 伤不起~~~~~~
设想了这么多,感觉没有一种合适的方法,请各位高手 指点!
VV 请帮忙分析分析 有没有可行的方法!
利用两个边沿触发的方式可以么 你可以在门打开以后 重新配置io的边沿触发,则在关上以后,另外一个边沿就出发了