L'essentiel d'Assembleur

Découvrir le jeu de lumière permanent avec une interruption hiérarchisée

Testez gratuitement nos 1310 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Faites évoluer votre programme de façon à ce qu'il effectue une interruption d'interruption. Vous vous appuierez sur INT0 et obtiendrez une interruption hiérarchisée.
06:01

Transcription

Dans cette vidéo nous allons voir comment effectuer une interruption hiérarchisée avec notre Pic18. Donc pour cela nous allons repartir du Lab15 3 et puis nous allons déclarer des variables tampon supplémentaires pour les registres à sauvegarder. Nous allons mettre justement l'indice LP pour Low priority et High priority justement pour ces tampons et l'interruption de haut niveau provoquera une sauvegarde automatique de contexte des registres vitaux. Et puis une interruption de niveau bas donnera lieu, elle, à une sauvegarde manuelle. Donc regardons tout de suite au niveau du programme ce que ça peut donner. Alors ici, j'ai gardé jeu de lumière 1 pour l'interruption de bas niveau et puis ici, celui-ci, pour l'interruption de haut niveau, donc jeu de lumière 2, pour pouvoir bien distinguer les deux. Donc la déclaration des variables, alors là cette fois-ci, bon nous avons toujours nos variables compteur, ça c'est normal, et nous avons nos variables LP cette fois-ci, parce qu'il va falloir faire, donc, la sauvegarde de contexte de BSR Statut WY et FSR0 si nécessaire en basse priorité. Et puis concernant Compteur D Low High, Upper, il va falloir mettre dans LP aussi. Port D en LP, Port E en LP. Et puis il va falloir faire la même chose cette fois-ci, mais pour les priorités hautes, sauf que cette fois-ci, vu que là, pour la priorité haute on a une sauvegarde automatique, on n'a pas besoin de le refaire. Mais par contre pour le reste il faut encore redéclarer de nouvelles variables pour pouvoir sauvegarder notre contexte supplémentaire. Alors je vais rentrer directement cette fois-ci dans l'interruption, parce qu'au niveau du programme principal riien ne change comparé à la vidéo précédente. Nous allons rentrer directement dans le programme d'interruption de bas niveau. Alors là il n'a pas changé en fait, c'est toujours une interruption sur INT1. Mais cette fois-ci ce qui change, c'est que nous allons devoir sauvegarder ces trois registres fondamentaux. Et là, haureusement que nous avons déclaré justement statut CLP, WY LP et BSR LP. Après, il faut sauvegarder en fait nos compteurs et puis nos ports dans le LP et puis à partir de là nous allons faire notre Clear et puis nous refaisons notre jeu de lumière que nous avons déjà fait. Et là par contre pas de Fast en sortie, c'est le Return Form Interrupt, parce qu'on est sur l'interruption de bas niveau, donc il faut restaurer le contexte à la main, donc, ainsi que tous les autres registres qui nous ont été nécessaires, et toujours, évidemment, effacer le Flag. Donc maintenant, sur l'interruption de haut niveau, on va retrouver la même chose que dans le Lab précédent. Alors vous voyez ici je reviens en fait sur le branchement sur une interruption de haut niveau se fait bien à 8 et bas niveau 18 et donc tout de suite ce que je fais derrière le code 008, je mets un Go To. Et là je viens mettre en fait simpelment mon programme qui correspond à ma routine d'interruption de haut niveau. Il en va de même en fait pour les interruptions de bas niveau. Alors pour le haut niveau cette fois-ci, on va utiliser INT0, puisqu'en fait il est prioritaire quoi qu'il arrive. Et puis nous faisons les tests habituels et là, la sauvegarde au contexte, vu qu'elle est de haut niveau, elle se fait automatiquement. Donc là on refait la même chose, mais sauf qu'on vient stocker ça dans nos nouvelles variables qui sont indicées HP comme High Priority. Et puis là j'effectue mon jeu de lumière numéro 2. Je sors en fait par Fast cette fois-ci. Donc restauration de contexte automatique. Et puis là c'est pareil, on est reparti pour faire le chemin à l'envers. On remet donc ce que l'on avait mis en Buffer dans nos registres respectifs, sans oublier une fois de plus de mettre le Flag à 0, sinon on reste bloqué. Donc voilà en ce qui concerne notre programme, donc ça parait un petit peu laborieux comme ça, mais en fait ça marche très très bien. Donc on regarde au niveau de notre simulation, donc j'ai déjà implémenté le programme, donc là nous sommes sur le programme principal et puis si je fais une interruption donc de niveau haut donc ici, sur INT0, donc j'essaie de recentrer un petit peu, voilà, que se passe-t-il ? J'ai mon jeu de lumière qui apparaît. Tres bien, OK. Et puis on va revenir là où on en était, si c'est une interruption de niveau bas, OK, j'ai mon premier jeu de lumière et mon deuxième jeu de lumière ici. Et puis maintenant si j'ai une interruption de haut niveau et puis tout de suite après une interruption de bas niveau et voilà hop tout a été sauveguardé et je reviens en fait à mon état précédent. Donc maintenant si je suis sur une interruption de bas niveau qui est en cours et du haut niveau qui est en cours dans ce cas-là c'est le haut niveau qui prend la main. On va finir le bas niveau, voilà. Et on revient donc après au programme principal.

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 !