L'essentiel d'Assembleur

Gérer plusieurs interruptions de niveaux différents

Testez gratuitement nos 1257 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Mettez en place deux sources d'interruption INT3 et INT4 pour lesquels vous allez faire des modifications de hiérarchisation. Si le niveau est le même, alors on montre qu'à évènements simultanés, c'est la table de vecteurs qui tranche.
06:43

Transcription

Dans cette vidéo, je vais vous montrer comment hiérarchiser vos interruptions. Alors pour cela, nous allons nous servir de deux sources d'interruption qui sont INT3 et INT4. Donc à partir de là, nous avons notre petite routine de reset et d'initialisation de la pile, initialisation des registres de travail, des PORTs, et après initialisation, donc, de INT3 et 4. Alors, pour l'initialisation des PORTs, j'ai tout mis à zéro, donc tout en sortie. Et le fait de tout mettre en sortie on peut se demander si INT, il ne vaudrait pas mieux le mettre en entrée. Mais dès qu'on déclare une interruption de type INT, les broches concernées sont mises automatiquement en entrée. Nous avons une petite temporisation dont nous aurons besoin pour faire clignoter nos LED. Et pour ça, nous allons utiliser le registre de travail numéro 2. On va le faire boucler sur lui-même. Il est sur 16 bits, on est à 4 Mhz, donc un million d'instructions par seconde, ce qui nous fait en fait 65536 microsecondes. Et puis on va ajouter 25 nop à la suite, qui vont être encore à multiplier aux 65 536 µs. Ce qui va nous permettre d'avoir une temporisation qui sera correcte. Alors ici, pour l'initialisation, j'y reviens juste après parce que c'est le centre-même, dirais-je, de cette vidéo. Concernant la configuration, pour INT3 et INT4, c'est la même chose : front montant, autoriser l'interruption, et effacer flag par sécurité. Donc là, on va aller chercher les bits qui vont bien dans le même registre. À partir de là, donc, j'ai créé le mot-clé INTERRUPT, mais avec __INT4, qui est normé, je vous le rappelle. Donc, à partir de là, on fait une sauvegarde de context. Et puis qu'est-ce que nous allons faire ? Et bien nous allons simplement faire clignoter une LED sur deux sur l'octet de poids faible. Donc on va alterner, en fait, pour faire un clignotement. Et puis ça, on va le faire plusieurs fois, donc on appelle notre rcall Delay pour faire le job. Et surtout, on n'oublie pas, à la fin, une fois qu'on a restauré le context, d'effacer le flag. Il en va de même, en fait, pour l'interruption sur INT3, où là, cette fois-ci, on va juste allumer, en fait, le quartet de l'octet du poids fort. C'est-à-dire qu'on va allumer 4 LED puis 4 LED suivants, mais seulement sur l'octet de poids fort, c'est-à-dire sur les broches qui sont le plus haut sur notre schéma inisis. Alors en gros, on retient que : nous avons une LED sur deux pour INT3 et un paquets de 4 LED pour INT4. Et toujours effacer le flag, bien évidemment, en sortie après restauration du context. Donc je reviens ici. Alors ici, c'est totalement primordial. Tout se passe dans le registre IPC13. Alors, il y a plusieurs possibilités. Soit les interruptions sont de même niveau. Ici, par exemple : niveau 6, niveau 6. C'est la première qui arrive qui l'emporte. Donc ça, il n'y a pas de souci. Maintenant, deuxième possibilité : elles sont toutes les deux de même niveau, mais l'interruption arrive en même temps sur les deux, à la microseconde près. Dans ce cas-là, ce qui va se passer, c'est que INT4 est de niveau 37 sur la table de vecteurs, et INT3 est de niveau 36 sur cette table aussi. Donc 36 l'emporte sur 37, parce qu'elle arrive avant. Donc ce sera INT3 qui va être traité en premier. Après, on peut hiérarchiser autrement. Dire : voilà, si, cette fois-ci, les éléments n'arrivent pas exactement au même moment, dans ce cas là je peux hiérarchiser. Donc, si jamais par exemple INT4 au niveau 6, il est plus supérieur que le niveau 3. Donc c'est ce que je fais ici. Je mets 6 et là : 3, dans W5, W5 je mets dans IPC13. Donc je compile. Et puis on va vérifier cela. Donc, 4 est plus prioritaire que 3. Donc, ça veut dire que si je lance, en fait, 3, voilà, 4 doit l'emporter. Et c'est ce qui se passe. Donc là, on va revenir après à notre interruption, qui a été interrompue. Donc, on attend un petit peu. Et voilà. Vous voyez, on reprend là où on en était. Bon, vous avez compris le principe. Maintenant, on va essayer de revenir un peu et d'échanger cette fois-ci, pour vous montrer que tout ceci, ce n'est pas du bluff. Cette fois-ci, c'est 4 qui va être de niveau 1, et INT3 qui va être de niveau 3. Donc je mets 1 et 3. Donc je recompile. 3 est plus grand que 4. Donc je vais d'abord lancer 4 (Alors, il faudrait peut-être déjà que je mette sous tension) Donc je lance 4 et est-ce que 3 va bien interrompre ? Oui. Et il va reprendre à la fin, là où on en était. Voilà. Il continue son interruption et il termine. Et maintenant, donc, je vais faire une petite chose. Tac, tac. Alors, je vous montre. Je zoome, simplement. Je branche sur un même bouton-poussoir, en fait, INT4 et INT3 pour que l'interruption arrive au même moment. Mais exactement au même moment. Dans ce cas-là, il n'y a absolument plus de règle qui peut s'appliquer de façon soft, et c'est la table de vecteurs d'interruption qui va choisir. Et normalement, donc, c'est INT3 qui va l'emporter sur INT4. Donc c'est ce que nous allons regarder tout de suite. Alors, pour ça, je n'ai même pas besoin de recompiler, vu que c'est hardware. Je fais ceci, et là j'appuie, et là, j'ai bien, en fait, INT3 qui arrive avant, donc, notre interruption sur INT4, là, qui va avoir lieu.

L'essentiel d'Assembleur

Plongez-vous dans le langage bas niveau, nommé Assembleur. Abordez les notions de jeu d'instructions, de pipeline, de registres, de mode d’adressage, de compteur de programme, etc.

4h52 (57 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :26 sept. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !