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)

  • " Nouveau projet "
  • " Choisir une cible "
    • Arduino Uno R3 SMD


  • 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.

  • " Macro"
    • " Nouvelle "


La transaction commence par une condition de "Start"

  • Insérer "Routine Composant"
  •        Composant "I2C_Master1"
  •        Routine "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.


Arduino

CH0

SDA

SCL

CH1

CH2

P0

P1

CH3

CH4

P2

P3

CH5

CH6

P4

P5

CH7

GND

GND


GND


* 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