变更中断和PIC上的外部中断有什么区别


11

PIC上的IOC和EXT中断之间的功能区别是什么?我当前使用的是PIC12F1822,除了需要做额外的检查外,还涉及IOC(即引起中断的引脚),两者是相同的。

有什么实际区别?您何时会使用其中一个?

Answers:


8

查看这份文件,其中指出:

电平变化中断
该功能与外部中断功能类似,不同之处在于,端口更改中断将由启用该功能的任何引脚上的任何更改(不仅仅是一种转换类型)触发。这使其更灵活(可在更多引脚上使用),但也更难于正确处理。


5

通过在中断向量表中减少条目,可以简化芯片的中断架构。可以将更改时中断设置为在端口寄存器发生更改时触发,这对于诸如键盘矩阵之类的东西很有用,因为您不想为每个引脚编写中断服务程序(ISR)。您只可以编写一个可以检查整个端口值的端口,这可能是您真正感兴趣的,具体取决于应用程序。


5

上电变化和外部中断引脚之间的三个最大区别是:

  1. 外部中断引脚允许软件指定中断是由上升沿触发还是由下降沿触发。例如,如果某个引脚为低电平并且仅对下降沿感兴趣,则在该引脚上升然后下降之前,不会触发中断。使用电平变化中断,必须在这两个事件上唤醒。
  2. 外部中断引脚具有独立的锁存状态位。即使在软件有机会响应输入脉冲之前或之后输入脉冲,软件仍然可以发现它发生并做出适当的反应。
  3. 恰好在输入更改时读取启用了引脚更改中断的I / O端口,可能会导致引脚更改中断不触发。相比之下,读取连接到外部中断引脚的I / O端口对中断没有影响。

PIC的外部中断比通用引脚更改中断更通用,更可靠。我建议在实用时使用前者。


3

基本上,外部中断将在特定的(上升或下降,用户定义)边沿触发,而电平变化中断将在任何边沿(上升和下降)都触发。


至少对于提及的OP PIC12F1822,IOC还可以配置(用户定义)以在上升沿,下降沿或在这两者时触发(第13节)。因此,对我而言,唯一的区别似乎是,外部中断只能配置为在两个边沿检测中的任何一个上触发。
PetPaulsen,2012年

2

更改时的中断通常用于I / O的半个字节,而外部中断通常用于单个位。就像您已经说过的那样,在IOC ISR中需要做的一件事就是弄清楚哪一位(或几位)发生了变化。

IOC甚至更难使用。必须在启用中断之前尽快读取端口,并且更重要的是在ISR内部读取端口!如果您的信号变化缓慢,并且认为可以在ISR内设置一个标志,然后再在ISR之外进行读取,请三思!读取端口(或端口上的任何位,如果我没记错的话)会重置比较器上的锁存器,从而触发中断。如果未在ISR内部清除它,则退出ISR时它将立即重新触发。如果您记得要这样做,那么一切都很好,但是如果忘记并认为可以在访问端口时读取端口,那么您会感到有点沮丧,直到您记住在ISR中进行读取为止。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.