[Microcontroleur] Intérêt de l' interruption par rapport à un "if"
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

[Microcontroleur] Intérêt de l' interruption par rapport à un "if"



  1. #1
    Mike12

    [Microcontroleur] Intérêt de l' interruption par rapport à un "if"


    ------

    Bonjour,

    Je me posais une question concernant la notion d'interruption pour un microcontroleur.
    Un microcontroleur peut être programmé en C avec les boucles et les structure que l'on connait (while, for...)

    Ma question est la suivante : quel est l'intérêt d'une interruption par rapport à un "if" que l'on écrit en C.
    Tous deux vont avoir le même rôle pour moi.

    Merci d'avance pour vos éclaircissements

    -----

  2. #2
    schizophrene

    Re : [Microcontroleur] Intérêt de l' interruption par rapport à un "if"

    Le même rôle oui, mais pas (forcément) au même moment :

    Tu n'entreras pas dans le if avant d'y être parvenu dans ton programme, alors que tu entreras dans l'interruption au moment où elle se produit (peu importe où en est le programme, il est mis de côté et sera repris à la fin du traitement de l'interruption).

    Exemple :

    Tu changes l'état d'une pin toutes les secondes, comptée en millisecondes par exemples.
    Tu vas, dans la boucle de ton programme, tester régulièrement l'état de la variable temps, voir si elle est variable est égale à 1000 millisecondes. Et bien bonne chance, il y a très peu de chance que cela fonctionne et tu n'entreras jamais dans ta boucle (au mieux, tu regardes si elle est = ou >, pour entrer dans le if).

    Avec l'interruption, dès que 1000 millisecondes sont passées, la partie de programme contenue dans celle-ci est exécutée : il n'y a pas de loupé, la précision en plus.



    Lucas
    Dernière modification par schizophrene ; 14/07/2014 à 16h41.

  3. #3
    Egzod

    Re : [Microcontroleur] Intérêt de l' interruption par rapport à un "if"

    Bonjour à toi !

    Les interruptions vont te permettre d'avoir un temps de réponse très court (du à leur vitesse d'éxecution) mais surtout de ne pas perdre de temps à scruter un événement :

    Par exemple, tu as un capteur qui va t'envoyer un signal haut logique quand une personne l'active, mais tu ne peux pas passer ton temps à scruter si quelqu'un va appuyer ou pas : avec une interruption, le reste de ton programme s'éxecute tout le temps, et si tu reçois un signal alors tu rentre dans l'interruption et met ton programme "principal" en pause le temps de traiter cette interruption.

    Voilà dans les grandes lignes le principe (j'espère ne pas m'être trompé ) !

  4. #4
    dje8269

    Re : [Microcontroleur] Intérêt de l' interruption par rapport à un "if"

    Sans vouloir dire d'annerie , je crois que ceci en ai une !

    (du à leur vitesse d'éxecution)
    Ce n'est pas la vitesse d'exécution qui fais qu'une interruption, chaque commande a pratiquement la même durée , c'est le fait qu'elle soit traiter plus vite . En effet entre chaque ligne de programme , il vérifie l'état de ton interruption , c'est pourquoi c'est aussi rapide, mais c'est la réaction qui est rapide pas l'exécution .

    Enfin je dis ca , c'est juste pour chipoter et bien expliquer
    C'est en faisant des erreurs; que l'on apprend le mieux !!

  5. A voir en vidéo sur Futura
  6. #5
    paolo123

    Re : [Microcontroleur] Intérêt de l' interruption par rapport à un "if"

    Les interruptions sont la partie des microcontroleur la plus importante à comprendre et c'est même primordial lorsque l'on fait du temps réel.

    Le principe de l'interruption consiste à stopper le programme actuellement en cours, a exécuter la routine d'interruption que tu appelles dans ton sous_programme d'interruption (Entre temps, on sauvegarde les registres important du uc etc) puis aussitôt que le sous programme d'interruption est fini d'être traité, à retourner exactement à l'endroit ou était stopper ton programme principal, on considère qu'il y a urgence et donc lorsque l'interruption est appelé, le programme qui est en cours doit être IMMEDIATEMENT stoppé afin d'effectuer la tâche importante et tout cela en un temps très rapide. Ca évite le polling et la perte de temps inutile qui n'est pas toléré dans certaines applications embarquées.


    Avec un if classique, tu passes ton temps à scruter ton programme et les chances de rater sont quelques choses sont assez élevés, de plus le temps de réponse n'est pas aussi rapide que pour une interruption et parfois t'es obligé d'attendre qu'une portion de code se termine afin de faire autre chose.

    Cependant celle ci doit être la plus courte possible afin de ne pas en rater d'autres et la meilleure solution consiste généralement à passer par un flag que tu leveras dans ton ISR pour traiter ton sous programme directement dans le main
    Dernière modification par paolo123 ; 14/07/2014 à 17h05.

  7. #6
    zibuth27

    Re : [Microcontroleur] Intérêt de l' interruption par rapport à un "if"

    hello,

    l'interruption est bien, en général, plus rapide

    Mais elle a une procédure automatique de sauvegarde du contexte (selon la famille de processeurs) qui peut prendre "quelques" instructions ou cycles machine, en plus des instructions que tu rajoutes toi-même au début de la routine, avant de traiter réellement l'action à faire, comme inhiber/rétablir les autres interruptions, ...

    Une scrutation de port (avec des "if" par exemple) peut être plus rapide si on reste bien dans la boucle (nécessairement brève) de scrutation.

    Bien sûr, cela dépend des options de compilation, et est à vérifier sur le fichier ".list" (celui qui décrit la traduction en assembleur de la compilation)

    saluts

  8. #7
    RISC

    Re : [Microcontroleur] Intérêt de l' interruption par rapport à un "if"

    Mike,

    Une interruption réagit généralement en quelques cycles (cela dépend du microcontroleur), quelque soit l'endroit ou le programme se trouve.
    Avec le if le test est fait seulement quand tu passes sur le if, le reste du temps il faut attendre que tu reviennes au if ;=)
    Donc si tu veux réagir rapidement ton programme passerait son temps à faire le test en ne faisant rien d'autre...
    Imagine que tu aies plusieurs interruptions il faut cascader les if et donc le temps de réaction devient de plus en plus long...

    a+

  9. #8
    inoxxam

    Re : [Microcontroleur] Intérêt de l' interruption par rapport à un "if"

    Une analogie qui peut aider à comprendre, imagine qu'il ne s'agit pas d'un microcontrôleur mais de ta tête. Un "if", c'est une action réfléchie, quand tu le fais, tu y es occupé à 100%. Par exemple quand tu roules en voiture, ton cerveau est dans une boucle infinie qui vérifie en permanence "si je ne suis plus correctement la route alors corriger ma trajectoire". Maintenant, manque de pot, on te grille la priorité. Ca c'est l'interruption. Tu sais que ça peut arriver, et tu sais plus ou moins ce qu'il faut faire lorsque ça arrive (on appelle ça un réflexe en termes non électroniques), et quand ça arrive, il faut esquiver tout de suite. C'est pas grand chose à faire (arrêter le véhicule), mais ça doit être fait en priorité. Et lorsque tu conduits, en cycle normal, tu ne passes pas ton temps à te dire "est-ce qu'on me grille la priorité?" sinon tu n'arrives plus à exécuter ta tâche principale, conduire.
    Les interruptions permettent donc de traiter des événements qui arrive à un instant imprévisible et/ou qui ont besoin d'être traités sans attendre.

  10. #9
    nornand

    Re : [Microcontroleur] Intérêt de l' interruption par rapport à un "if"

    Citation Envoyé par Mike12 Voir le message
    Bonjour,

    Tous deux vont avoir le même rôle pour moi.

    AIE ! il y a une lacune .....

    une interruption c'est hard un "if" c'est soft !

    une interruption stop le processus en cours d’exécution sauvegarde les registres , et effectue une routine , et ceci a n'importe quel endroit du programme a partir du moment quelle est "armée" .

    un if ne s’exécute que lorsqu'on passe dessus .

    les puristes vont hurler !

Discussions similaires

  1. Modulation BPSK , rapport entre "debit de symbole" et "debit binaire" ?
    Par invite060b200d dans le forum Électronique
    Réponses: 3
    Dernier message: 06/11/2009, 14h36
  2. Le "double coeur" : intérêt réel ou appat commercial ?
    Par invite23400e5c dans le forum Matériel - Hardware
    Réponses: 29
    Dernier message: 07/11/2008, 20h58
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...