Une situation évidente où les interruptions basées sur le niveau sont utiles est la situation où le signal est déjà dans cet état lorsque le code commence à surveiller le signal.
Prenons un exemple typique ...
Signal: "Case_Over_Temperature" devient bas lorsque la température ambiante dans la boîte est trop élevée pour un fonctionnement normal.
Évidemment, ce signal pourrait à tout moment baisser, soit parce que nous produisons trop de chaleur, soit parce que le boîtier est installé dans un endroit chaud.
De toute évidence, à la mise sous tension, cette ligne peut être dans l'une ou l'autre condition. Supposons pour le moment que le code de mise sous tension ne se contente pas de rechercher, mais repose plutôt sur l'interruption. Si l'interruption est déclenchée par front et que le signal est déjà faible, lorsque l'interruption est activée, le code approprié n'est pas exécuté. Les interruptions sensibles au niveau seraient prudentes ici.
De même, si le processeur est mis en veille et n'est pas configuré pour se réveiller sur cette interruption, cette ligne peut descendre à tout moment. Quand quoi que ce soit d'autre le réveille, vous voulez que l'interruption se déclenche à ce moment-là.
En effet, sans doute, avec la prévalence des processeurs en mode veille, les interruptions basées sur le niveau sont devenues plus utiles.
Cependant, comme pour tout ce qui concerne le code, il existe toujours plus d'une façon de "dépouiller un chat". Si vous n'utilisez pas de niveau, le code de réveil doit aller interroger les broches d'interruption si elles ne sont pas automatiquement mises en file d'attente par le processeur.
De toute évidence, le niveau déclenché s'accompagne également de son propre ensemble de problèmes en ce que le code doit gérer en sachant qu'il a déjà géré la condition, etc.