IV - Écriture sur les lignes |
IV - Écriture sur les lignes de port
Comme le montre la figure ci-dessus, une écriture des lignes P7 à P0 suit un protocole stricte. La transaction commence par une condition de départ, "START", SDA passe à 0 puis SCL passe à 0, suivi de l'adresse du composant interpellé pour le Mode écriture, soit 0x40 par exemple. Dés lors le composant, s'il est bien présent sur le bus I2C, répond en plaçant un niveau logique bas sur la ligne SDA à la neuvième impulsion de SCL, ACK pour "acknowledge", accusé de réception. Ensuite c'est la donnée 8bit qui affectera le port de sortie (P7 ...... P0) qui est envoyée, une nouvelle fois le PCF8574 répond par un ACK . Enfin la trame se termine par la condition d'arrêt "STOP", SCL passe à 1 puis SDA passe à 1.
Travail demandé
IV-1-a) Quelle sera la valeur du Port de sortie ( P7 à P0 ) à la suite de la séquence suivante ?
A pour Acknowledge, c'est le PCF qui place la ligne SDA.
IV-1-b) Simuler cette séquence à l'aide du montage ci-dessous et vérifier votre réponse.
Clic sur l'image pour télécharger le schéma structurel réalisé sous ISIS (Proteus 8)
IV-1-c) Proposer une séquence afin d'obtenir, en sorties (P7 à P0) , la valeur 0x9C.
(0x9C = 0b10011100). Simuler et vérifier.
IV-2) Élaboration d'un programme d'écriture sur le Port d'un PCF8574(A).
Capture réalisée à l'aide du logiciel USBee Suite associé à un analyseur logique (à petit prix).
Site USBee: https://www.usbee.com/suite.html
Manuel: https://www.usbee.com/usbeesuitemanual.pdf
Le montage est basé autour d'une carte Arduino Uno
Clic sur l'image pour télécharger le schéma structurel réalisé sous ISIS (Proteus 8) Le fichier "hex": ici |
IV-2-a) Élaboration du programme sous Flowcode
Lancer Flowcode 8 (ou Flowcode 9)
|
- Ajouter au "panneau tableau de bord (2D), le composant "I2C Master"
Vérifier les propriétés du composant I2C Channel --> Channel1 Baud Select --> 100kHz Stop Delay --> Non SDA --> PC4 SCL --> PC5 Aide pour le composant I2C: ici |
Si tout s'est bien passé vous devez avoir une fenêtre similaire à celle-ci
sinon vous pouvez télécharger une version de départ ici.
Sauvegarder votre fichier sous le nom "XX_PCF8574_V1" où XX représente les Initiales, en majuscule, de votre Prénom et Nom.
Nous allons maintenant créer une "Macro" (une procédure) permettant l'écriture sur le port du PCF8574.
|
La transaction commence par une condition de "Start"
|
|
Ensuite il faut envoyer l'adresse I2C. Routine TransmitByte Data -> .Adr_I2C |
|
Valeur Retour --> .Ack .Ack est une variable locale |
Maintenant, Si le composant est présent, si la variable .Ack = 0 donc, nous pouvons écrire la donnée sur le Port.
Insérer "Routine Composant" Composant "I2C_Master1" Routine "TransmitByte" Data -> .Data_Out Valeur Retour --> .Ack La transaction se termine par une condition de "Stop" Insérer "Routine Composant" Composant "I2C_Master1" Routine "Stop" |
Programme Principal (Main)
Initialisation matérielle de la liaison I2C
Insérer "Routine Composant" Composant "I2C_Master1" Routine "Initialise" |
Simuler votre programme sous Proteus
Voir la vidéo de la simulation ici.
Câbler le montage, puis faite une capture à l'aide de l'analyseur logique.
* Analyseur |
|||||||||||||||||||||||||
Vous devriez obtenir le résultat suivant
Ou mieux ...
Créé avec HelpNDoc Personal Edition: Créez sans effort une documentation d'aide de haute qualité avec un outil de création d'aide