Meilleure gestion des interruptions dans l'ATtiny817 de Microchip

Découvrez les nouvelles fonctionnalités de l'ATtiny 817, le dernier microcontrôleur de Microchip et apprenez comment utiliser cette solution riche en fonctionnalités pour vos applications.

Gestion des interruptions dans le nouveau ATtiny817

Rédigé par : Arild Rodland, marketing produit pour la division MCU08 de Microchip Technology Inc.

La gestion des interruptions est bien plus intelligente dans les nouveaux microcontrôleurs AVR® et l'ATtiny817 de Microchip est le premier dispositif AVR à bénéficier de ces changements.

é

Ceux qui connaissent les diverses gammes AVR savent que traditionnellement, la gestion des interruptions pour les dispositifs tinyAVR® et megaAVR® est très simple : toutes les interruptions ont une priorité prédéfinie, où l'adresse vectorielle d'interruption la plus basse a la priorité la plus élevée. Pour la gamme des plus grands microprocesseurs XMEGA®, le système d'interruption contient un contrôleur à plusieurs niveaux programmable, ce qui permet à l'utilisateur d'attribuer des interruptions à trois niveaux de priorité, ainsi que de personnaliser la file d'attente des priorités.

Le nouveau contrôleur d'interruption de l'ATtiny817 est un croisement de ces deux là. Étudions-le et découvrons les nouveautés.

Priorité d’interruption

Les paramètres par défaut de l'ATtiny817 seront définis avec une table vectorielle d'interruption avec une priorité statique où l'adresse vectorielle d'interruption la plus basse a la priorité la plus élevée. Voir Figure 1. Ceci est identique aux autres tinyAVR.

FIGURE 1 : PRIORITÉ DE L'INTERRUPTION EN UTILISANT UN MODÈLE DE PRIORITÉ STATIQUE

Il existe quelques problèmes potentiels liés à la priorité statique. Tout d'abord, si vous avez beaucoup d'interruptions avec une priorité élevée, vous risquez alors une situation où les interruptions à priorité élevée bloquent les interruptions avec une priorité basse. Il en résulte une mise à mal des interruptions. Cela signifie que vous n'avez pas assez de temps pour intervenir sur toutes les interruptions et que celles avec une priorité basse ne sont jamais traitées. Pour remédier à cela, l'ATtiny817 permet de recourir à un modèle de priorité dynamique (de type « round-robin »). Si vous activez ce modèle de type « round-robin », la dernière interruption traitée se voit attribuer la priorité la plus basse la prochaine fois qu'une interruption survient. Voir image 2.

FIGURE 2 : MODÈLE DE PRIORITÉ ROUND-ROBIN DYNAMIQUE

Contrôleur d’interruption à deux niveaux

Le modèle de priorité round-robin résout le problème de mise à mal des interruptions, mais que faut-il faire si vous souhaitez attribuer une priorité plus élevée en périphérique que celle définie dans la table vectorielle d'interruption ?

Bien que l'équipe de conception ait fait une priorité câblée très sensible entre les périphériques, nous comprenons qu'il est toujours possible que certaines personnes aient besoin d'attribuer une priorité plus élevée d'interruption que celle définie dans la priorité d'interruption par défaut.

Dans l'ATtiny817, nous offrons l'option d'élever un vecteur d'interruption sélectionnable pour qu'il ait priorité sur tous les autres. Pour utiliser cette fonctionnalité, écrivez simplement l'adresse vectorielle souhaité dans le registre LVL1VEC et cette interruption aura la priorité.

Table vectorielle compacte

Parmi les nouvelles fonctionnalités sur le tinyAVR, il y a la table vectorielle compacte (CVT). L'utilisation de cette fonctionnalité tronque toutes les interruptions en trois vecteurs. Un pour les interruptions ne pouvant pas être masquées (pour l'ATtiny817 : interruption d'erreur CRC), une pour toutes les interruptions de niveau 0 (pour l'ATiny817 : toutes les interruptions sont de niveau 0 par défaut) et un pour les interruptions de niveau 1 (pour l'ATtiny817 : une seule interruption peut avoir une priorité plus élevée en entrant son adresse vectorielle dans le registre LVL1VEG).

C'est une fonctionnalité utile lorsque vous utilisez uniquement quelques interruptions. La diminution de la table vectorielle à trois vecteurs uniquement signifie que la table d'interruption occupera moins d'emplacements Flash, libérant cet espace pour le code utilisateur. Sachez cependant que si vous utilisez cette approche, vous aurez besoin de davantage de code dans le gestionnaire des interruptions pour trouver précisément quelle interruption nécessite une intervention. Cela prend plus de temps, que ce soit l'écriture du code ou les tests de vérification, pour finir votre conception. Pour cette raison, la table vectorielle compacte est plus utile si seules quelques interruptions sont utilisées.

Fonctionnalité avancée : si le type round-robin n'est pas activé, le registre LVL0PRI est toujours actif et continuera de définir le point de départ pour l'interruption avec la plus basse priorité. Vous pouvez par conséquent changer statistiquement la priorité dans la table vectorielle. Par exemple, vous pouvez effectuer un changement pour donner la priorité la plus élevée à USART. La valeur par défaut de ce registre est 0x00. Après réinitialisation, le vecteur d'interruption le plus bas aura la priorité la plus élevée comme attendu.

Changer la priorité de la table vectorielle

Je vais conclure cet article par une astuce/une fonctionnalité pas vraiment indiquée dans la fiche technique. En utilisant la priorité round-robin, il y a un registre appelé LVL0PRI qui contiendra l'adresse de la dernière interruption exécutée. Cela correspondra à l'interruption avec la priorité la plus basse lors de la sélection de la prochaine interruption à exécuter. Si nous modifions cette valeur, nous affectons directement quelles interruptions ont les priorités les plus élevées et les plus basses.

Comme indiqué ici, le nouveau microcontrôleur ATtiny187 offre de puissantes caractéristiques de gestion des interruptions qui permettent aux concepteurs de contrôler la priorité des interruptions et le temps de réponse et de les adapter aux exigences de leur conception. Maintenant, la question est de savoir ce que vous allez créer pour exploiter ces capacités ?

Voir les produits connexes

ATTINY817-XPRO

Microchip Technology Cartes et kits de développement de systèmes intégrés Afficher

microchip technology logo

Actualité

Sorry, your filter selection returned no results.

Nous avons mis à jour notre politique de confidentialité. Prenez un moment pour lire les changements. En cliquant sur "J'accepte", vous acceptez la clause de confidentialité d'Arrow Electronics ainsi que les conditions d'utilisation.

Notre site Internet place des cookies sur votre appareil pour améliorer votre expérience et pour améliorer notre site. Pour en savoir plus sur les cookies que nous utilisons et la façon de les désactiver, cliquez ici. Des cookies et des technologies de suivi peuvent être utilisés à des fins de marketing. En cliquant sur « Accepter », vous consentez au placement de cookies sur votre appareil et à notre utilisation de technologies de suivi. Cliquez sur « En savoir plus » pour de plus amples informations et instructions sur la façon de désactiver les cookies et les technologies de suivi. Même si l'acceptation des cookies et technologies de suivi est volontaire, leur désactivation peut entraîner un mauvais fonctionnement du site Internet et certaines publicités peuvent être moins pertinentes pour vous. Nous respectons votre confidentialité. Lisez notre politique de confidentialité ici.