You are on page 1of 3

TP

Architectures embarquées
et production de code

TP 8 : mini-projet
L'objectif de ce TP, qui peut s'étendre sur plusieurs séances, est de mettre en
œuvre un mini-projet complet comprenant l'utilisation des mécanismes vus
jusque-là et la prise en main de nouveaux.

1 Utilisation du potentiomètre
Un potentiomètre est une résistance de valeur variable. En souvenant de la
relation liant la tension à l'intensité, U = RI, il est clair que pour une tension de
référence VREF = 5V, la tension obtenue en sortie décroit à mesure la résistance
R croit. Cette propriété peut être mise à contribution pour, par exemple, lire
l'état d'une molette dont la rotation fera varier la tension en sortie. Il suffit
alors de brancher la sortie sur un ADC pour échantillonner la tension de la
sortie et en déduire la position de la molette.
Nos cartes ARM possèdent un tel potentiomètre à molette :

D'après la documentation sur la carte AT91SAM7S, le potentiomètre est câblé


sur AD4.
EXERCICE Mettre en œuvre un programme C permettant de lire le
potentiomètre et de convertir sa valeur sur une échelle entre 0 et 100.

2 Le Watch Dog
Le WatchDog est un timer particulier qui permet de lever une interruption si le
système ne communique avec lui après une période de temps trop longue.
L'idée est qu'une application d'un système embarqué peut planter ou se
bloquer. Pour éviter que le système soit complètement figé, le WatchDog est
capable de générer une interruption au bout d'un certain temps pour informer
l'application qu'un événement anormal est arrivé : celle-ci peut alors choisir de
redémarrer le système dans l'espoir que le blocage n'aura pas été trop et que
le système embarqué pourra reprendre ces activités. Pour éviter que
l'interruption soit générée, le système doit communiquer régulièrement avec le
WatchDog pour l'informer que toute va bien.
EXERICE
1. Prenez connaissance de la documentation du WatchDog dans le manuel
de l'AT91SAM7S.
2. Écrivez une application permettant de configurer le WatchDog et
envoyant régulièrement un signal à celui-ci.
3. Modifiez cette application pour qu'elle se bloque de manière aléatoire et
fournissez une routine d'interruption du WatchDog permettant de
redémarrer votre application.
ATTENTION Le WatchDog ne peut être configuré qu'une fois : le start.o tel
que fournit en TP arrête le WatchDog et ne sera peut-être pas adapté.

3 Application complète
L'objectif de cette application est de mettre un œuvre de ventilation
mécanique basé sur :
• une thermistance permettant de mesurer la température ambiante,
• une servo-moteur permettant d'agiter un système de ventilation,
• un potentiomètre permettant de faire un choix de température,
• une sortie série affichant la température courante et la température seuil
de refroidissement,
• des boutons-poussoir permettant d'arrêter/démarrer le système et un
bouton poussoir permettant de provoquer le démarrage / accélérer la
ventilation,
• des LED permettant d'indiquer si le système est en marche et si le
système est en train de ventiler.
Le système de ventilation reste inerte tant qu'il est désactivé ou la température
ambiante est en dessous du seuil.
S'il est activé et que la température dépasse un seuil, il active le servo-moteur
pour faire baisser la température (de droite à gauche et de gauche à droite) et
ce, d'autant plus rapidement, que la température ambiante est loin du seuil.
Pour éviter les arrêts et redémarrages trop nombreux autour de la température
seuil, une fois la ventilation démarrée, elle ne s'arrêtera qu'à une température
en dessous du seuil – 1°.
Le potentiomètre permet de faire varier le seuil entre 18° et 38°.
Le bouton-poussoir 1 permet d'arrêter ou redémarrer le système.
Le bouton-poussoir 2 en un effet dépendant du nombre d'appui :
• 1er appui – démarrage de la ventilation vitesse 1,
• 2ème appui – démarrage de la ventilation vitesse 2,
• 3ème appui – démarrage de la ventilation vitesse 3,
• 4ème – arrêt de la ventilation.
Pour améliorer la fiabilité du système, on utilisera le WatchDog pour le
redémarrer si nécessaire.
EXERCICE
1. Découpez l'application en sous-systèmes (et identifiez les
communications des sous-systèmes entre eux).
2. Pour chaque sous-système, faire un schéma des éléments matériels
impliqués.
3. Développer pour chaque sous-système les diagrammes état-transition
nécessaires.
4. Implémenter en tester chaque sous-système séparément.
5. Réaliser l'intégration des sous-systèmes et faire les tests globaux.