Ce qui se passe lorsqu'un rapport de recherche internationale est en cours d'exécution et un autre interruption se produit?
Ce qui se passe si un rapport de recherche internationale est en cours d'exécution, et un autre interruption se produit? La première interruption interruption? Sera la deuxième interruption ignoré? Ou sera-ce le feu lorsque le premier rapport de recherche internationale est fait?
MODIFIER
J'ai oublié de l'inclure dans la question (mais je l'ai inclus dans les tags) que je voulais vous demander comment cela a fonctionné sur Atmel AVR.
Parlez-vous plusieurs de la même interruption ou différentes interruptions?
Les différents Processeurs vont réagir différemment, et pour certains Processeurs de la réaction dépend du contrôleur d'interruption, la façon dont il est programmé, et parfois sur le type d'interruption. Si vous préciser votre question, nous pourrions être en mesure de donner une bonne réponse.
D'accord. Un PIC, un pic rapide des interruptions, et un ARM Cortex à l'aide de NVIC seront tous fonctionnent différemment.
J'ai mis à jour ma réponse après votre modification.
Vous n'avez pas à fournir assez d'informations - le PROCESSEUR lui-même n'est qu'une partie de l'histoire. Au final c'est le logiciel qui peut autoriser ou interdire les interruptions imbriquées. Donc ce qui arrive est entièrement à vous.
Les différents Processeurs vont réagir différemment, et pour certains Processeurs de la réaction dépend du contrôleur d'interruption, la façon dont il est programmé, et parfois sur le type d'interruption. Si vous préciser votre question, nous pourrions être en mesure de donner une bonne réponse.
D'accord. Un PIC, un pic rapide des interruptions, et un ARM Cortex à l'aide de NVIC seront tous fonctionnent différemment.
J'ai mis à jour ma réponse après votre modification.
Vous n'avez pas à fournir assez d'informations - le PROCESSEUR lui-même n'est qu'une partie de l'histoire. Au final c'est le logiciel qui peut autoriser ou interdire les interruptions imbriquées. Donc ce qui arrive est entièrement à vous.
OriginalL'auteur BenjiWiebe | 2014-05-24
Vous devez vous connecter pour publier un commentaire.
Normalement, un routine de service d'interruption produit, jusqu'à la fin sans être interrompu dans la plupart des systèmes. Cependant, Si nous avons un système plus vaste, où plusieurs appareils peuvent interrompre le microprocesseur, un priorité problème peut survenir.
Si vous définissez la interrupt enable drapeau dans le courant de l'interruption ainsi, vous pouvez permettre la poursuite des interruptions qui sont priorité plus élevée que celui en cours d'exécution. Cette "interruption d'une interruption" est appelé un imbriquée interrompre. Il est géré par l'arrêt de l'exécution de l'original de la routine de service et de stockage d'une autre séquence de registres sur la pile. Ceci est similaire à imbriquée des sous-routines. En raison de la décrémentation automatique du pointeur de pile par chaque interruption et suivantes incrémentation par le RETOUR de l'instruction, de la première routine de service d'interruption est repris après la seconde interruption est terminée, et les interruptions sont desservies dans le bon ordre. Les interruptions peuvent être imbriquées à n'importe quelle profondeur, uniquement limité par la quantité de de la mémoire de la pile.
Par exemple, Dans le diagramme suivant, Un Thread est en cours d'exécution. Interrompre IRQx causes gestionnaire d'interruption Intx exécuter, qui est préempté par IRQy et de son maître Inty. Inty renvoie un événement à l'origine de Thread B; Intx renvoie un événement à l'origine de Fil C à exécuter.
Image De Ref
Pour les interruptions matérielles, Priorité Contrôleur d'Interruption Puces (PIC) sont du matériel de puces conçues pour rendre la tâche d'un dispositif présentant sa propre adresse pour le CPU simple. Le PIC évalue également la priorité des périphériques qui y sont connectés. Moderne PIC peut également être programmé pour empêcher la génération d'interruptions qui sont inférieurs au niveau souhaité.
Mise à JOUR: Comment Imbriquée Interrompre les Travaux sur Atmel Avr
La AVR matériel efface le global interrupt flag dans SREG avant d'entrer dans un vecteur d'interruption. Donc, normalement, les interruptions de rester désactivé dans le gestionnaire jusqu'à ce que le gestionnaire de sorties, où la RETI instruction (qui est émis par le compilateur dans le cadre de la fonction normale épilogue pour un gestionnaire d'interruption) éventuellement re-permettre des interruptions. Pour cette raison, les gestionnaires d'interruption, normalement, ne nid. Pour la plupart des gestionnaires d'interruption, c'est le comportement souhaité, pour certains, il est même nécessaire afin d'éviter infiniment récursive interruptions (comme UART interruptions, ou déclenché par le niveau interruptions externes).
Dans de rares cas, si imbriqués les interruptions peut être voulu par la réactivation de la global interrupt flag le plus tôt possible dans le gestionnaire d'interruption, afin de ne pas reporter toute autre interruption de plus que ce qui est absolument nécessaire. Cela pourrait être fait à l'aide d'un sei() l'instruction dès le début de la gestionnaire d'interruption, mais cela laisse tout de même quelques instructions à l'intérieur de l'généré par le compilateur prologue de fonction à exécuter avec mondial interruptions désactivées. Le compilateur peut être invité à insérer le SEI instruction dès le début d'un gestionnaire d'interruption en déclarant le gestionnaire de la manière suivante:
où XXX_vect est le nom d'un permis de vecteur d'interruption pour le MCU type.
Aussi, jetez un oeil à cette Note D'Application pour plus d'informations sur les interruptions sur Atmel Avr.
Je pense que cette réponse serait plus utile si vous distinguer ce qui est fait par le CPU, ce qui est fait par le contrôleur d'interruption et ce qui est fait dans le logiciel.
OriginalL'auteur gbudan
La façon dont les interruptions de travail:
Le code définit la "Global Interrupt Enable" peu; sans elle, sans les interruptions se produisent.
Quand quelque chose arrive à provoquer une interruption, un indicateur est défini.
Lorsque l'interruption indicateur est remarqué, le "Global Interrupt Enable" bit est effacé.
Approprié ISR est exécuté.
Le "Global Interrupt Enable" bit est réglé.
Choses maintenant, retournez à l'étape 2, sauf une interruption indicateur est déjà défini au cours de l'ISR; puis les choses revenir à l'étape 3.
Donc, pour répondre à la question: à Quand le premier rapport de recherche est terminé, le deuxième rapport de recherche internationale devra être exécuté.
Espérons que cette aide!
Votre description est très spécifique à la 8-bit PIC de Microchip jetons.
Vraiment? Il s'applique également à la 8-bit MCU avr d'Atmel.
OriginalL'auteur BenjiWiebe