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