CDS-VIS Centrale domotique simplifiée

Transcription

CDS-VIS Centrale domotique simplifiée
CDS-VIS
Centrale domotique simplifiée : Visualisation de l'état du système
Système : Centrale domotique simplifiée
Durée : 6 heures
Travail individuel
tp_cds_vis.doc/G.COLIN
Centre d’intérêt : Les ensembles à base de microprocesseur – Transmissions séries en bande de base
Outils : PC avec serveur de fichiers – Outils de développement MPLAB
Documentation : Dossier technique du système – Cours sur bus I2C
Compétences : Analyser un schéma structurel - Expliciter une structure logicielle - Effectuer des tests sur une maquette - Exploiter une
documentation technique en Anglais -
Problème posé:
On dispose du dossier technique de la centrale domotique simplifiée et le programme complet en langage C.
Il faut valider, sur plaquette d'essai, le programme permettant la commande des 3 leds de visualisation de l'état
du système par l'intermédiaire d'un bus I2C.
Démarche : • on explicite la structure logicielle concernée.
• on met en œuvre la fonction sur plaquette d'essai et on relève les signaux sur le bus I2C
• on met en évidence, sur les chronogrammes relevés, les informations circulant sur le bus I2C
⇒ Relire le cours sur le bus I2C
1 – Identification des structures
Le dossier technique (version originale) est fourni. Le schéma de la carte FP2 est donné en annexe.
Cette carte comprend :
• Un afficheur LCD
• Un buzzer
• Un clavier
• 3 leds de visualisation
• Une horloge temps réel
Cette carte est reliée à la carte micro par un bus I2C. Les cavaliers AD201 et AD202 permettent de fixer l’adresse
des composants. IL est alors possible de relier 4 cartes comme celle-ci sur l’unique bus I2C.
Le bus I2C est constitué des lignes SDA (ou LDA) et SCL (ou LCL).
⇒ Préciser la référence du connecteur de la carte qui est utilisé pour relier cette carte FP2 à la carte micro.
Le micro contrôleur dialogue avec 3 circuits intégrés de la carte FP2, par le bus I2C.
⇒ Préciser la référence de ces 3 circuits de la carte.
Les circuits PCF8574 et PCF8573 ont une partie de leur adresse qui est fixe et une partie modifiable par les pattes
repérées A0, A1 et A2 (pour PCF8574).
⇒ A l’aide de la documentation des composants PCF8574 et PCF8573, et à l’aide du schéma structurel, donner
les adresses des différents composants « I2C » de la carte lorsque les cavaliers AD201 et AD202 sont mis.
2 – Explication du logiciel
Le programme utilise l'interface I2C du microcontrôleur. Les procédures nécessaires à la commande de la led 1
sont données en annexe.
2.1 – Initialisation de l'interface I2C du PIC
L’initialisation du PIC consiste à écrire les bonnes valeurs dans les registres SSPSTAT, SSPADD et SSPCON.
La fonction i2c_ini() permet l'initialisation de l'interface I2C.
Le registre SSPCON est un registre interne au PIC16F877
⇒ A la lecture de la fonction i2c_ini() du programme donné, indiquer la valeur en binaire placée dans le registre
SSPCON
⇒ En déduire la valeur des bits SSPM3, SSPM2, SSPM1 et SSPM0.
⇒ A l’aide de la documentation du PIC16F877 (page 67), montrer que le mode programmé pour l’interface série
synchrone est le mode I2C maître.
⇒ A la lecture de la fonction i2c_ini() du programme donné, indiquer la valeur en binaire placée dans le registre
SSPSTAT
⇒ A l’aide de la documentation du PIC16F877, en déduire la valeur des bits SMP et CKE. Montrer que
l'interface est configurée avec les spécifications du bus I2C
La fréquence de l’horloge SCL est donnée par la formule Fscl = Fosc / (4*(SSPADD +1))
La fréquence de l’horloge Fosc=20MHz, et SSPADD correspond au contenu placé dans ce registre.
⇒ Montrer que l’interface série est programmé avec une fréquence de 100kHz, dans le programme fourni.
2.2 – Condition de start
Fonction : i2c_s()
Pour générer une condition de START, on valide le bit SEN
du registre SSPCON2. Lorsque la condition de START est
terminée, SEN passe automatiquement à 0.
SDA
SCL
mise à 1
de SEN
SEN passe à 0
⇒ Ajouter les commentaires suivants aux lignes de programme de cette procédure :
//lancer un start
//attendre la fin du start
2.3 – Condition de stop
Fonction i2c_p()
SDA
⇒ Ajouter des commentaires aux lignes de programme
de cette procédure..
SCL
//lancer un stop
//attendre la fin du stop
mise à 1
de PEN
PEN passe à 0
2.4 – Lecture de l’acknoledge
Fonction :unsigned char i2c_ack()
Le registre SSPCON2 est constitué des bits suivants :
⇒ A l’aide de la documentation du PIC16F877, préciser l’information fournie par le bit ACKSTAT.
Dans la fonction unsigned char i2c_ack() du programme donné, le bit ACKSTAT est isolé par une opération de
masquage avec un ET logique.
⇒ Recopier la ligne de programme permettant cette opération et déterminer le résultat de cette opération lorsque
l’esclave ne renvoie pas d’acknoledge.
2.5 – Transmission d’un octet.
Fonction : i2c_tra (unsigned char donnee)
En entrée, la variable locale donnee contient la donnée à transmettre sur le bus I2C. La fonction consiste à
placer la donnée dans le buffer et à attendre la fin de la transmission.
⇒ Indiquer quel est le bit du registre SSPSTAT qui permet de tester la fin de la transmission dans le
programme. Préciser la valeur de ce bit lorsque la transmission est en cours. (voir doc. PIC)
⇒ Ajouter le commentaire //attente fin de transmission à la ligne de programme correspondante.
2.6 – Allumage et extinction de la led 1
Fonction : all_led1() et ext_led1()
Remarque : l'acknoledge renvoyé par l'esclave n’est pas testé dans ces procédures.
⇒ Après lecture des fonctions programmées, indiquer l'adresse du circuit qui commande la led 1.
⇒ Justifier la valeur de cette adresse à l'aide de la documentation du PCF8574 et du schéma structurel.
⇒ A l’aide du schéma structurel, indiquer la référence de la led concernée par ces fonctions.
3 – Mise en œuvre sur plaquette d'essai
On désire tester les procédures d'allumage et d'extinction de la led 1. Le schéma de test est donné en annexe.
⇒ Câbler sur plaquette d'essai un KIT PIC, le PCF8574 , la led 1 avec sa résistance de protection , les résistances
de rappel (10K) sur les lignes SDA et SCL.
⇒ Ouvrir le projet donné en annexe sous MPLAB
⇒ Compiler le programme. Corriger les erreurs éventuelles.
⇒ Mettre en œuvre le programme principal qui fait clignoter la led 1 à une fréquence de 1 Hz. (appel des 2
procédures all_led1() et ext_led1() séparées par une tempo de 500 ms).
⇒ Relever à l'oscilloscope numérique les signaux sur les lignes SDA et SCL lors de l'allumage puis lors de
l'extinction de la led 1.
⇒ Mettre en évidence sur les chronogrammes relevés, les conditions de start et de stop, la transmission de
l'adresse, les accusés de réception et la transmission de la donnée.
⇒ Modifier l'adresse du circuit sur la plaquette d'essai. Relever les chronogrammes de SDA et SCL. Mettre en
évidence sur ces chronogrammes, l'accusé de réception transmis par l'esclave.
Annexe : Schéma structurel de FP2