TP MSP430 n°4
Transcription
TP MSP430 n°4
UNIVERSITE DE LA ROCHELLE – SCIENCES ET TECHNOLOGIE Master IMA - UE Systèmes Industriels Acquisition de données TRAVAUX PRATIQUES ACQUISITION DE DONNEES PAR UN MSP430 SEANCE 4 Objectif du TP Mise en place de parties logicielles réutilisables (suite) et programmation du timer en interruption. 1) Interruptions du Timer Le MSP430F449 possède plusieurs temporisateurs (Watchdog, Timer A, Timer B, Basic Timer…). Nous allons utiliser ici le « Basic Timer » pour générer les délais nécessaires à toute application, illustrée ici par le clignotement de la LED. Le principe est le suivant : - on initialise le timer pour qu’il génère des interruptions à des intervalles pré-déterminés, et on laisse le processeur exécuter son programme principal (dans notre exercice, ce sera une boucle infinie simplement). - Lorsque le timer génère une interruption, le processeur est dérouté vers le programme d’interruption correspondant. Dans ce programme d’interruption, on se contente d’inverser l’état de la LED par une opération de type XOR. - Fin d’interruption (par l’instruction RETI) : on revient au programme principal, dans lequel on peut faire ce qu’on veut jusqu’à la prochaine interruption. Fonctionnement du Basic Timer : Ce temporisateur est un périphérique organisé autour de 2 compteurs 8 bits pouvant être cascadés en 1 compteur 16 bits : On voit en effet sur le schéma précédent que l’entrée d’horloge ACLK peut être divisée par 256 par le 1er compteur 8 bits et être connectée au second compteur. Le timer se programme par l’intermédiaire de 3 registres : Rôle du registre de contrôle BTCTL : Les bits FRFQ1 et FRFQ0 sont utilisés pour les afficheurs de type LCD. Les bits IP2-IP1-IP0 détermine la fréquence des interruptions en fonction de la fréquence du signal de sortie du 2ème compteur (voir schéma) : IP2-IP1-IP0 = 000 -> fréquence des interruptions = fréquence de sortie / 2 … IP2-IP1-IP0 = 111 -> fréquence des interruptions = fréquence de sortie / 256 Les bits SSEL et DIV fonctionnent ensemble selon le tableau suivant : Le bit Hold permet d’inhiber le fonctionnement du timer. Interruptions du timer : Elles sont sous le contrôle de 2 bits : Basic Timer Interrupt Flag BTIFG (bit 7 du register SFR IFG2) Basic Timer Interrupt Enable BTIE (bit 7 du register SFR IE2) Les Registres de Fonctions Spéciales (SFR) concernés sont les suivants : Registre IFG2 : Registre IE2 : Le bit BTIE doit être à 1 pour autoriser les interruptions en provenance du timer. Lorsqu’une interruption a lieu, le bit BTIFG (flag) passe à 1 signalant l’origine de l’interruption. On cherchera le vecteur du Basic Timer dans la table de vecteurs du MSP430. Etudier le programme fourni tp4.s43 où l’on trouvera toute la partie initialisation du timer. Charger dans la table des vecteurs l’adresse de la routine d’interruption. Ecrire un programme principal interrompu au bout du délai programmé. Dans la routine d’interruption, on se contentera d’inverser le niveau de la LED par une instruction XOR. 2) Conversion binaire - décimal Dans cet exercice, nous allons préparer la manipulation de la séance prochaine dans laquelle nous ferons l’acquisition d’une valeur fournie par un CAN sur 12 bits (issue d’une mesure de température) et l’afficherons sous forme d’un nombre décimal. On considère un nombre entier 12 bits non signé, c'est-à-dire compris entre 0x0000 et 0x0FFF. Ecrire le programme de conversion hexa -> décimal de la manière suivante : - on mettra le nombre N à convertir, dans un registre. - initialiser à 0, 4 octets en mémoire, qui contiendront à l’issue de la conversion, le nombre de milliers, de centaines, de dizaines, et d’unités. - tant que le résultat est positif, soustraire 1000 au nombre N, incrémenter le nombre de milliers à chaque soustraction, - soustraire au reste de l’étape précédente, le nombre 100. Tant que la soustraction donne un résultat positif, incrémenter le compteur de centaines, - idem pour les dizaines. Le reste positif de cette étape forme les chiffres des unités. Pour vérification, les 4 octets du résultat seront envoyés sur les afficheurs 7 segments de la matrice LCD par le programme écrit à la séance précédente.