Outils pour utilisateurs

Outils du site


tdcom2

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tdcom2 [2020/03/18 09:57]
bvandepo
tdcom2 [2020/05/28 17:32] (Version actuelle)
bvandepo
Ligne 48: Ligne 48:
   - Dans quels états peut se trouver une broche (par exemple SDA) d'un composant i2c ?   - Dans quels états peut se trouver une broche (par exemple SDA) d'un composant i2c ?
   - Quels composants discrets doivent être connectés au bus i2c pour assurer son fonctionnement ?   - Quels composants discrets doivent être connectés au bus i2c pour assurer son fonctionnement ?
-  - Combien d'​esclaves peuvent être connectés sur un bus I2c pour pouvoir les adresser tous individuellement?​+  - Combien d'​esclaves ​maximum ​peuvent être théoriquement ​connectés sur un bus I2c pour pouvoir les adresser tous individuellement?​
   - Le bus i2C est-il half-duplex ou full-duplex ? justifier votre réponse.   - Le bus i2C est-il half-duplex ou full-duplex ? justifier votre réponse.
  
Ligne 72: Ligne 72:
  
   - Quel est le rôle de ce composant?   - Quel est le rôle de ce composant?
-  - Quel est le rôle des brôches A2, A1 et A0? +  - Quel est le rôle des brôches A2, A1 et A0?  
-  - Quelle différence existe-t-il entre les références PCF8574 et PCF8574A et pourquoi le constructeur a-t-il fait ces deux références?​ Dans la suite, des composants PCF8574A seront considérés. +  - Quelle différence existe-t-il entre les références PCF8574 et PCF8574A et pourquoi le constructeur a-t-il fait ces deux références? Quelle est la plage d'​adresses I2C utilisables pour la référence de composant ​ PCF8574A? Dans la suite, des composants PCF8574A seront considérés. 
-  - Décrire l'​algorithme de la fonction **readPort8574(...)** en indiquant ce qu'​elle fait en francais ​(phase d'​adressage,​ d'​échange des données etc...).+  - Décrire l'​algorithme de la fonction **readPort8574(...)** en indiquant ce qu'​elle fait en français ​(phase d'​adressage,​ d'​échange des données etc...).
   - Implémenter en C++ la fonction **readPort8574(...)** en utilisant les fonctions de la librairie **Wire**.   - Implémenter en C++ la fonction **readPort8574(...)** en utilisant les fonctions de la librairie **Wire**.
   - Tracer le chronogramme des signaux SDA et SCL si l’on appelle **readPort8574(0x2,&​val)**. Indiquer quelle est la valeur retournée par la fonction.   - Tracer le chronogramme des signaux SDA et SCL si l’on appelle **readPort8574(0x2,&​val)**. Indiquer quelle est la valeur retournée par la fonction.
   - Tracer le chronogramme des signaux SDA et SCL si l’on appelle **readPort8574(0x38,&​val)** et que les valeurs de A2-0=000 et les entrées du 8574A sont à 0x27. Indiquer quelle est la valeur retournée par la fonction.   - Tracer le chronogramme des signaux SDA et SCL si l’on appelle **readPort8574(0x38,&​val)** et que les valeurs de A2-0=000 et les entrées du 8574A sont à 0x27. Indiquer quelle est la valeur retournée par la fonction.
-  - Décrire la fonction **writePort8574(...)** en indiquant ce qu'​elle fait en francais ​(phase d'​adressage,​ d'​échange des données etc...).+  - Décrire la fonction **writePort8574(...)** en indiquant ce qu'​elle fait en français ​(phase d'​adressage,​ d'​échange des données etc...).
   - Implémenter en C++ la fonction **writePort8574(...)** en utilisant les fonctions de la librairie **Wire**.   - Implémenter en C++ la fonction **writePort8574(...)** en utilisant les fonctions de la librairie **Wire**.
   - Tracer le chronogramme des signaux SDA et SCL si l’on appelle **writePort8574(0x39,​0x82)** et que les valeurs de A2-0=001. Indiquer quelle est la valeur retournée par la fonction.   - Tracer le chronogramme des signaux SDA et SCL si l’on appelle **writePort8574(0x39,​0x82)** et que les valeurs de A2-0=001. Indiquer quelle est la valeur retournée par la fonction.
   - Décrire un programme permettant de lire les entrées d'un PCF8574 dont les bits d'​adresse sont reliés à 0 et de recopier cette valeur sur un PCF8574A dont les bits d'​adresse forment la valeur 3.   - Décrire un programme permettant de lire les entrées d'un PCF8574 dont les bits d'​adresse sont reliés à 0 et de recopier cette valeur sur un PCF8574A dont les bits d'​adresse forment la valeur 3.
  
 +
 +====Composant DS13072====
 +Dans un premier temps, lire la documentation suivante: {{http://​homepages.laas.fr/​bvandepo/​files/​comm/​datasheet/​DS1307.pdf}}
 +
 +
 +Pour les questions suivantes, on considère les prototypes de fonctions suivants:
 +<file cpp prototypes.cpp>​
 +  char writeRegRTC(char I2Caddr, char Regaddr, char value)
 +    // I2Caddr, l'​adresse du DS13072 sur le bus sur 7 bits
 +    // Regaddr, l'​adresse du registre du DS13072 à écrire
 +    // value,la valeur à écrire dans le registre
 +    // retourne -1 si échec 0 sinon
 +
 +  char readRegRTC(char I2Caddr, char Regaddr, char * ptr_value)
 +    // I2Caddr, l'​adresse du DS13072 sur le bus sur 7 bits
 +    // Regaddr, l'​adresse du registre du DS13072 à lire
 +    // ptr_value, pointeur pour renvoyer la valeur lue dans le registre
 +    // retourne -1 si échec 0 sinon
 +</​file>​
 +
 +  - Quel est le rôle de ce composant?
 +  - Du point de vue de la communication,​ qu'est ce qui le différencie du PCF8574(A)?
 +  - Le composant se comporte comme une série de compteurs mis en cascade. Dessiner la mise en cascade des compteurs de l'​unité de seconde jusqu'​à la dizaine d'​heure telle que réalisée dans le composant. Expliquer l'​intérêt de l'​utilisation de la base Binary Coded Decimal (Décimal Codé en Binaire) pour les valeurs de comptage.
 +  - Décrire l'​algorithme de la fonction **writeRegRTC(...)** en indiquant ce qu'​elle fait en francais (phase d'​adressage,​ d'​échange des données etc...).
 +  - Implémenter en C++ la fonction **writeRegRTC(...)** en utilisant les fonctions de la librairie **Wire**.
 +  - Tracer le chronogramme des signaux SDA et SCL si l’on appelle **writeRegRTC(0x68,​0x2,​0x52)**. Indiquer quelle est la valeur retournée par la fonction.
 +  - Décrire l'​algorithme de la fonction **readRegRTC(...)** en indiquant ce qu'​elle fait en francais (phase d'​adressage,​ d'​échange des données etc...).
 +  - Implémenter en C++ la fonction **readRegRTC(...)** en utilisant les fonctions de la librairie **Wire**.
 +  - Tracer le chronogramme des signaux SDA et SCL si l’on appelle **readRegRTC(0x68,​0x1,&​val)** et que la valeur lue est 0x21. Indiquer quelle est la valeur retournée par la fonction.
 +  - Proposer un schéma de câblage pour un montage connectant la plateforme Arduino à une RTC DS13072 et deux expander de ports I2C PCF8574.
  
 ===== Partie TP===== ===== Partie TP=====
Ligne 407: Ligne 437:
  
 ===== Exercice 3 : Utilisation de la RTC ===== ===== Exercice 3 : Utilisation de la RTC =====
-{{http://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_tns/​TODO.jpg}} ​ Compléter le sketch suivant pour activer la broche SQW/OUT successivement à 1 et à 0 en changeant toutes les secondes dans la fonction loop. Pour cela implémenter la fonctions writeRegI2C. 
- 
  
 <file cpp i2c_DS13072.ino>​ <file cpp i2c_DS13072.ino>​
Ligne 497: Ligne 525:
 } }
 //////////////////////////////////////////​ //////////////////////////////////////////​
- </​file> ​      ​+ </​file> ​   
 +     
 +{{http://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_tns/​TODO.jpg}} ​ Compléter le sketch précédent pour activer la broche SQW/OUT successivement à 1 et à 0 en changeant toutes les secondes dans la fonction loop. Pour cela implémenter la fonctions writeRegI2C. 
  
  
tdcom2.1584521823.txt.gz · Dernière modification: 2020/03/18 09:57 par bvandepo