Vous êtes sur la page 1sur 7

TP n°2 Programmation sur microcontrôleur

Nom / prénom : ...................................................................

Nom / prénom : ................................................................... Date : Note :


….. / ….. / …....... ..... / 20
Nom / prénom : ...................................................................

Nom / prénom : ...................................................................

Dans ce TP, nous allons utiliser un microcontrôleur Arduino (architecture AVR) pour mettre en place un
programme fonctionnant avec les contraintes liées à la programmation temps réel souple.
L'objectif final est de faire tourner plusieurs sous-programmes de manière non bloquante en utilisant le
paradigme « super loop »

1. « Bare metal » avec le paradigme « super loop »


a) Prise en main de l'IDE Arduino
La première étape consiste à télécharger l'IDE Arduino ainsi que les pilotes pour les contrôleurs
série FTDI ou CH340 en fonction de votre platine.

b) Utilisation des entrées / sorties


1 Le port série
1) Dites comment vous faîtes pour activer le port série et envoyer un message :

...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................

2) Quel est le protocole utilisé et quelles sont les informations envoyées ?

...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................

3) Ecrivez un programme qui agit comme un serveur echo en affichant les caractères envoyés :

Code figurant dans l'archive de rendu

2 Lecture / écriture digitale


4) Quelle est la procédure pour positionner une broche en entrée et faire une lecture ?

...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................

5) Quelle est la procédure pour positionner une broche en sortie et changer son niveau logique ?

...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................

1/7
3 Lecture analogique
Expliquez brièvement le fonctionnement de l’échantillonnage avec un convertisseur
analogique / numérique. Vous pouvez aborder le concept de précision et de discrétisation :
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................

Votre dessin ici :

6) Branchez un potentiomètre et indiquez les branchements ci-dessous :

7) Testez son fonctionnement en affichant périodiquement sa valeur sur le port série :

Code figurant dans l'archive de rendu

2/7
4 Signal PWM
8) Détaillez la forme et comment est réalisé un signal PWM. Vous pouvez aborder la notion de cycle de
travail ainsi que celle de timer :

...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................

Votre dessin ici :

9) Utilisez un signal PWM, modulé proportionnellement à votre potentiomètre pour faire briller la LED
intégrée à la platine Arduino.

Code figurant dans l'archive de rendu

3/7
c) Api UART
L'intérêt d'une Api est d'offrir, au travers d'une interface spécifiée, un ensemble de
fonctionnalités. Dans notre cas, nous allons proposer le contrôle des broches au travers du
port série :
• changement d'état d'une broche (état haut ou bas) ;
• changement de sens d'une broche (entrée ou sortie) ;
• lecture de l'état d'une broche (état haut ou bas mais aussi la valeur) ;
• bascule de l'état d'une broche (état haut si bas et inversement) ;
• bascule temporaire d'une broche (idem précédent mais avec un timer) ;
• signal PWM sur une broche
• …

1 Définition d'un protocole


Chaque protocole, peu importe le niveau OSI auquel il appartient, possède un format prédéfini
qui lui permet de véhiculer des messages. Les messages sont utilisés pour différentes
fonctions :
• information sur l 'état des stations ;
• information sur l'état du réseau ;
• envoi d'informations ;
• demande de confirmation ;
• …
Dans notre cas de figure, les choses sont simples puisque la communication est full-duplex et
unicast. Il n'y aura donc pas a gérer le multicast, les collisions, les retransmissions, etc.

Les messages seront envoyés depuis le port série et « digérés » par un sous-programme qui
décidera de l'action à entreprendre : changement d'état d'une broche, lecture d'état, message
d'erreur, etc.

Pour les questions qui suivent, vous pouvez formuler votre analyse en vous appuyant sur des
protocoles existants comme ICMP, IP...
10) Lorsque l'on essaie de lire un message, souvent les problèmes suivants se posent :

• Comment détecter l'arrivée d'un message ?

• Comment détecter la fin d'un message ?

• Comment séparer les différents champs ?

• Comment déterminer l'action à entreprendre ?

• Comment déterminer une erreur ?


• …

4/7
Définissez le format des messages en expliquant comment vous adressez les problématiques ci-dessus :

Début d'un message :


...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
Fin d'un message :
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
Séparation des champs :
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
Choix de l'action à entreprendre :
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
Gestion des erreurs :
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................

Format de vos messages :

11) Définissez les différents messages qui circuleront sur votre réseau ainsi que leur signification en
fonction de la réponse à la question précédente :

5/7
2 Définition de l'API
Maintenant que les messages sont définis, il ne vous reste plus qu'a spécifier votre API en expliquant comment réaliser les actions :
Message avec un exemple Retour Action
Succès : Permet la lecture de l'état d'une broche digital

Erreur :

Succès : Permet la lecture de l'état d'une broche


analogique
Erreur :

Succès : Permet la modification de l'état d'une broche

Erreur :

Succès : Permet la bascule de l'état d'une broche

Erreur :

Succès : Permet la lecture du mode d'une broche

Erreur :

Succès : Permet la modification du mode d'une broche

Erreur :

Succès : Permet l'activation de la modulation PWM sur une


broche
Erreur :
Succès : Permet l'a bascule de l'état d'une broche de
manière temporaire (timer)
Erreur :

Lors de l'élaboration de votre API expliquez comment avez vous adressé les difficultés suivantes :
• RAZ du mécanisme de lecture des messages :
....................................................................................................................................................................................................................................................................
....................................................................................................................................................................................................................................................................

• Sauvegarde du sens d'une broche :


....................................................................................................................................................................................................................................................................
....................................................................................................................................................................................................................................................................

• Implémentation des timers :


....................................................................................................................................................................................................................................................................
....................................................................................................................................................................................................................................................................

Vous joindrez le code de votre API à l'archive de rendu

Vous aimerez peut-être aussi