Les trois plus grandes différences entre le changement d'interruption et les broches d'interruption externes:
- Les broches d'interruption externes permettent au logiciel de spécifier si l'interruption doit être déclenchée par un front montant ou par un front descendant; si, par exemple, une broche est basse et que l'on s'intéresse uniquement aux fronts descendants, une interruption ne sera pas déclenchée tant que la broche ne montera pas et ne tombera pas ensuite. En utilisant l'interruption sur changement, il faudrait se réveiller sur les deux événements.
- Les broches d'interruption externes ont des bits d'état de verrouillage individuels. Même si une impulsion d'entrée va et vient avant que le logiciel n'ait la possibilité d'y répondre, le logiciel peut toujours découvrir que cela s'est produit et réagir de manière appropriée.
- La lecture d'un port d'E / S dont une interruption de changement de broche est activée au moment précis où les changements d'entrée peuvent entraîner le déclenchement de l'interruption de changement de broche. En revanche, la lecture du port d'E / S connecté à une broche d'interruption externe n'a aucun effet sur l'interruption.
Les interruptions externes du PIC sont plus polyvalentes et fiables que les interruptions à changement de broches à usage général. Je suggère d'utiliser le premier lorsque cela est possible.
L'interruption au changement concerne généralement un demi-octet d'E / S, les interruptions externes étant généralement des bits individuels. Comme vous l'avez déjà dit, une chose que vous devez faire dans l'IOC ISR est de déterminer quel bit (ou bits) a changé.
Le CIO est également un peu plus difficile à utiliser, même au-delà. Il est impératif de lire le port peu de temps avant d'activer l'interruption, et encore plus important de LIRE LE PORT à l'intérieur de l'ISR! Si vous avez un signal qui change lentement et que vous pensez que vous pouvez définir un indicateur à l'intérieur de l'ISR et faire votre lecture plus tard, en dehors de l'ISR, détrompez-vous! La lecture du port (ou tout bit sur le port, si je me souviens bien), réinitialise le verrou sur le comparateur qui déclenche l'interruption. Si vous ne le désactivez pas à l'intérieur de l'ISR, il se redéclenche immédiatement lorsque vous quittez l'ISR. Si vous vous souvenez de faire cela, tout va bien, mais si vous oubliez et pensez que vous pouvez lire le port lorsque vous vous y déplacez, vous serez un peu frustré jusqu'à ce que vous vous souveniez de faire la lecture dans l'ISR.
la source