- 891 views
La platine Pro MX7 est une plate-forme d'apprentissage de microcontrôleurs basée sur le Microchip® PIC32MX795F512L, un membre de la famille de microcontrôleurs PIC32 32 bits.
La platine Pro MX7 est conçue pour être facile à utiliser et adaptée à toute personne, des débutants aux utilisateurs avancés, expérimentant des applications de contrôle et de communication réseau intégrées. Un circuit de programmation/débogage intégré compatible avec le Microchip MPLAB IDE est fourni, donc aucun matériel supplémentaire n'est requis pour une utilisation avec MPLAB.
La platine Pro MX7 fournit 52 broches d'E/S qui prennent en charge un certain nombre de fonctions périphériques, telles que les ports UART, SPI, I2C™, ainsi que cinq sorties modulées en largeur d'impulsion et cinq entrées d'interruption externes. Ses fonctionnalités de réseau et de communication incluent également une interface Ethernet 10/100, une interface OTG USB 2.0 pleine vitesse et deux interfaces réseau CAN. Dix des broches d'E/S peuvent être utilisées comme entrées analogiques en plus de leur utilisation comme entrées et sorties numériques.
Digilent a créé deux modules d'apprentissage pour aider les débutants à apprendre les bases des microcontrôleurs. Les deux sont disponibles sur la page de référence de Digilent.
Module Delay
Le but de ce module est d'étudier les méthodes de création de délais logiciels pour rythmer les opérations du processeur. Les méthodes de minutage qui contrôlent le moment où un processus doit être exécuté peuvent être implémentées en utilisant des techniques d'interrogation qui échantillonnent une horloge libre ou en exécutant du code qui nécessite une durée fixe. Ce module démontre également l'utilisation des retards de temps pour le conditionnement du signal.
Des retards dans le microtraitement se produisent lorsque le processeur n'exécute pas d'autres tâches. Les temps d'exécution sont utilisés pour le délai. Le retard est généré lorsque les instructions sont exécutées en boucle.
Il existe 2 types de retards :
1. Délais logiciels purs
La méthode de délai logiciel est créée en utilisant une fonction de délai. Il existe trois façons d'écrire une boucle logicielle
une boucle « for », une boucle « while » et une boucle « do -while ».
Dans ce module, nous avons expliqué comment créer et utiliser la fonction, ainsi que comment la calibrer.
2. Délais assistés par matériel
L'approche de délai logiciel assisté par matériel pour générer une fonction de délai utilise l'un des temporisateurs matériels du processeur.
Pour les retards basés sur la minuterie, les unités de temps courantes sont liées aux cycles du cristal du processeur, aux impulsions de la
minuterie ou aux millisecondes. Le module montre également comment gérer le renversement de la minuterie pour les retards assistés par matériel.
Module d'interruptions
Ce module montre comment explorer les événements en détectant à l'aide d'interruptions ou en utilisant la préemption qui implémente un schéma de gestion des interruptions imbriqué. Les concepts concernant le contexte du processeur et la hiérarchisation des interruptions sont introduits.
En informatique, la préemption est le fait d'interrompre temporairement une tâche en cours d'exécution par un système informatique, sans nécessiter sa coopération, et avec l'intention de reprendre la tâche ultérieurement.
Mécanique des interruptions
La préemption par une interruption amène le processeur à arrêter l'exécution du flux de code actuel et à commencer l'exécution d'une fonction spéciale appelée « gestionnaire d'interruption » ou « routine de service d'interruption » (ISR).
Une interruption est un signal déclenché par un événement. L'ordinateur suspend ce qui serait normalement la prochaine instruction d'une tâche dans une partie d'un programme et commence à exécuter du code pour accomplir une tâche entièrement différente. Cette occurrence d'événements peut être périodique (déterministe) ou apériodique (sporadique). Les 3 principaux types d'interruptions sont le logiciel, le matériel interne et le matériel externe. Ce module vous expliquera plus sur ces 3 types.
Gestion des interruptions
Les programmes préemptifs se composent généralement de deux types de tâches : au premier plan et en arrière-plan. Les tâches de premier plan sont les tâches préventives que le processeur exécute dès que le besoin s'en fait sentir. Les interruptions se voient attribuer des niveaux de priorité qui dictent l'ordre dans lequel les interruptions seront traitées.
Les tâches de premier plan ont une capacité de préemption en ayant des priorités plus élevées que les tâches d'arrière-plan. La tâche de premier plan assure des temps de réponse adéquats, tandis que la tâche d'arrière-plan gère le traitement différé des données de premier plan. Les tâches en arrière-plan sont celles que le processeur exécute chaque fois qu'il a du temps disponible et attend quelque chose de plus important à faire.
Il existe deux types de schémas d'exploitation préemptifs : imbriqués et non imbriqués. Les schémas d'interruption imbriqués permettent aux interruptions de niveau de priorité plus élevé de préempter le code qui dessert une interruption de priorité inférieure. Un schéma d'interruption non imbriqué achève l'exécution du code desservant actuellement une interruption avant de commencer à desservir le code pour toute interruption en attente de service indépendamment des priorités d'interruption.
Interruptions sur PIC32
Il y a quatre éléments de code essentiels requis pour qu'un programme traite les interruptions en utilisant C : la déclaration des fonctions qui seront utilisées pour traiter les interruptions, le code pour initialiser les ressources qui génèrent les interruptions, le code ISR qui sera exécuté en réponse à une interruption et les instructions qui permettent les interruptions au sens global.
Les fonctions qui ont été déclarées comme ISR ne peuvent être appelées par aucune autre fonction C. Il existe deux manières d'exécuter le code ISR : soit en réponse à l'événement qui définit l'indicateur d'interruption via le matériel, soit en définissant le bit correspondant dans le registre d'indicateur d'interruption à l'aide d'une instruction logicielle.
Normalement, le code pour initialiser les ressources qui vont générer l'interruption n'est exécuté qu'une seule fois pour une application donnée. Dans ce projet, deux interruptions différentes seront générées : une interruption de la minuterie 1 et une interruption de notification de changement de broche d'E/S.