Las tres mayores diferencias entre el cambio de interrupción y los pines de interrupción externos:
- Los pines de interrupción externos permiten que el software especifique si la interrupción debe ser activada por un borde ascendente o un borde descendente; si, por ejemplo, un alfiler está bajo y uno está interesado solo en los bordes que caen, no se activará una interrupción hasta que el alfiler suba y luego caiga. Usando interrupción en el cambio, uno tendría que despertarse en ambos eventos.
- Los pines de interrupción externos tienen bits de estado de enclavamiento individuales. Incluso si un impulso de entrada va y viene antes de que el software tenga la oportunidad de responder, el software aún puede descubrir que sucedió y reaccionar adecuadamente.
- Leer un puerto de E / S que tiene una interrupción de cambio de pin habilitada precisamente en el momento en que los cambios de entrada pueden provocar que la interrupción de cambio de pin no se active. Por el contrario, leer el puerto de E / S conectado a un pin de interrupción externo no tiene ningún efecto en la interrupción.
Las interrupciones externas del PIC son más versátiles y confiables que las interrupciones de cambio de pines de uso general. Sugeriría usar el primero cuando sea práctico.
La interrupción en el cambio es generalmente de medio byte de E / S, donde las interrupciones externas son generalmente para bits individuales. Como ya dijo, una cosa que debe hacer en el IOC ISR es determinar qué bit (o bits) cambió.
El COI también es un poco más difícil de usar, incluso más allá de eso. ¡Es imprescindible leer el puerto poco antes de habilitar la interrupción, y aún más importante LEER EL PUERTO dentro del ISR! Si tiene una señal de cambio lento y cree que puede establecer una bandera dentro del ISR y leer más tarde, fuera del ISR, ¡piense de nuevo! La lectura del puerto (o cualquier bit en el puerto, si recuerdo correctamente), restablece el pestillo en el comparador que desencadena la interrupción. Si no lo borra dentro del ISR, se activará inmediatamente cuando salga del ISR. Si recuerda hacer esto, todo está bien, pero si olvida y cree que puede leer el puerto cuando lo encuentre, se sentirá un poco frustrado hasta que recuerde hacer la lectura en el ISR.
fuente