Qual é a diferença de função entre IOC e EXT Interrupt em um PIC? Atualmente, estou usando um PIC12F1822 e, além da camada extra de verificação, você tem a ver com o COI (ou seja, qual pino causou a interrupção) os dois são idênticos.
Qual é a diferença prática, se houver? Quando você usaria um ou outro?
fonte
A interrupção na mudança geralmente é de meio byte de E / S, onde as interrupções externas geralmente são para bits individuais. Como você já disse, uma coisa que você precisa fazer no IOC ISR é descobrir qual bit (ou bits) mudou.
O COI também é um pouco mais difícil de usar, mesmo além disso. É imperativo ler a porta logo antes de ativar a interrupção, e ainda mais importante LER A PORTA dentro do ISR! Se você tem um sinal de mudança lenta e acha que pode definir uma bandeira dentro do ISR e fazer sua leitura mais tarde, fora do ISR, pense novamente! A leitura da porta (ou qualquer parte da porta, se bem me lembro) redefine a trava no comparador que aciona a interrupção. Se você não limpá-lo dentro do ISR, ele será acionado imediatamente quando você sair do ISR. Se você se lembrar de fazer isso, está tudo bem, mas se você esquecer e achar que pode ler a porta quando chegar a ela, ficará um pouco frustrado até se lembrar de fazer a leitura no ISR.
fonte