Académique Documents
Professionnel Documents
Culture Documents
Objectifs pédagogiques :
Maîtriser les notions élémentaires de la programmation C des
PIC :
o Opérations sur les Entrées/Sorties avec accès direct aux
registres et masquage
o Utilisation des temporisations
o Utilisation des fonctions (appel, déclaration et passage de
variables).
Préalables :
Notions avancées sur la programmation C, maitrise des
outils ISIS et PICC.
Durée : 1 séance de 3H
TP Architecture des systèmes à processeurs GBM3
1. Description du travail
2. Fonctionnement
Carte de simulation des deux de carrefour
La carte de contrôle de la figure 1 alimentée par une tension (0-15V). Elle permet de
simuler un carrefour routier (une intersection entre deux routes). Ce carrefour est réglé par des
feux de signalisation tricolores (Rouge/Orange/Vert).
L'organisation de la circulation est assurée par des cycles synchronisés des feux de
chacune des deux voies, de détecteurs de présence et un détecteur Jour/Nuit.
Figure 1
La voie 1 est une double voie gérée par les feux (Q5, Q6 et Q7) tel que indiqué sur la
figure précédente.
La voie 2 est une voie auxiliaire gérée par les feux (Q0, Q1 et Q2), la présence d’une
voiture sur cette voie est provoquée par simulation sur appui sur S3
La voie 1 comporte un passage piéton géré par l’appui manuel sur les boutons S1 ou
bien S2
Grâce à un capteur LDR de lumière et un circuit approprié, La carte de contrôle peut
gérer deux modes de fonctionnement :
- Mode Nuit : activé lorsque le signal JRNT est à l’état bas (0 logique). Les feux Q1 et
Q6 se mettent alors à clignoter avec un pas de 2s.
- Mode Jour : activé lorsque le signal JRNT est à l’état haut (1 logique). Les feux verts
sur la voie 1 (Q5) sont allumés tant qu’il n’y a pas une demande de passage piéton (S1
ou S2 activés) ou une présence d’une voiture en attente de passage sur la voie
auxiliaire (S3 activé).
Le mode jour fait appel à trois cycles en fonction des entrées S1,S2 et S3 :
ISTMT TP3 14
TP Architecture des systèmes à processeurs GBM3
- Cycle 1 (par défaut) : feux Q5, Q2 et Q4 allumés, autorisant le passage des voitures
sur la voie 1
- Cycle 2 (Passage des voitures sur la voie 2) : la séquence suivante est commandée :
Tableau 1
Séq. Feux allumés durée
1 Q6 (Orange voie1) 2s
Q2 (Rouge voie2)
Q4 (Rouge Piéton)
2 Q7 (Rouge voie1) 6s
Q0 (Vert voie2)
Q4 (Rouge Piéton)
3 Q7 (Rouge voie1) 2s
Q1 (Orange voie2)
Q4 (Rouge Piéton)
Figure 2
ISTMT TP3 15
TP Architecture des systèmes à processeurs GBM3
3. Travail demandé
Figure 3
Tableau 3
Feu Broche du PIC Bouton Broche du PIC
Vert voie 1 : Q5 RB1
S1 et S2 RB0
Orange voie 1 : Q6 RB2
Rouge voie 1 : Q7 RB3
S3 RB7
Vert voie 2 : Q0 RB4
Orange voie 2 : Q1 RB5
JRNT RA4
Rouge voie 2 : Q2 RB6
Rouge piéton voie 1 : Q4 RA0
Vert piéton voie 1 : Q3 RA1
void mode_nuit()
{
PORTA= (PORTA&….) | ….;
PORTB= (PORTB&….) | ….;
delay_ms(1000);
PORTA= (PORTA&….) | ….;
PORTB= (PORTB&….) | ….;
delay_ms(1000);
}
ISTMT TP3 16
TP Architecture des systèmes à processeurs GBM3
Les variables PORTA et PORTB sont assignées aux registres internes du PIC affectant l’état
respectivement de ses ports A et B d’entrées/sorties. L’utilisation de ces variables permet de
forcer les sorties d’un port sans affecter l’état de ses entrées, et ce en une seule ligne de code.
Cette technique est recommandée à chaque fois qu’un port contient des broches en entrées et
d’autres en sorties (voir annexe pour plus de détails).
a) Compléter les valeurs des masques pour que la fonction commande correctement le
mode nuit des feux de carrefour.
Main()
Pic_config()
non
JRNT=1
oui
non non
autorisation_voie2 Presence_pietons
oui oui
Fin
Figure 4
ISTMT TP3 17
TP Architecture des systèmes à processeurs GBM3
La carte de développement EasyPIC intégrant un PIC 16F877 est utilisée pour assurer la
commande du feu de carrefour.
1- Vérifier les différentes connexions d’entrées/sorties utilisées avec la carte de contrôle.
2- Faire les modifications nécessaires au niveau du code C élaboré afin de l’adapter à la
carte EasyPIC exploitée et au microcontrôleur PIC 16F877.
3- Ajouter les directives suivantes à votre code :
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, ERRORS)
4- Charger alors le programme compilé dans le PIC 16F877 monté dans la carte EasyPIC
et valider le fonctionnement des deux modes.
Amélioration du fonctionnement
int presence_pieton()
{
int Sreq=input(PIN_B0);
int OK;
if ((state ==0) && Sreq)
OK=1;
else
OK=0;
state = Sreq;
return(OK);
}
Insérer cette fonction dans votre programme et tester le nouveau fonctionnement (state est
déclarée comme variable globale).
ISTMT TP3 18
TP Architecture des systèmes à processeurs GBM3
Annexe
a) Garder l’état des broches en entrées et forcer à 0 les broches de sorties (masque AND
=0x0F)
ISTMT TP3 19