You are on page 1of 2
6 + Les interfaces sriessynchrones et asynchrones, 12C, SP bus «uF fi» Dans le premier cas, vateur est la variable de type byte qui est transmise. Dans le second cas, chaine de caractéres est un pointeur de type byte vers une chaine de caractéres & transmettre. Dans le toisiéme cas enfin, donnée est un pointeur de type byte vers un tableau tandis que également de type byte, indique le nombre d’éléments de ce tableau 3 transmettre requestFrom) Cexte fonction est en quelque sorte le complément de la précédente. Elle permet au iaitre de demander des données i un escave et suis sous la forme : adresse est évidemment ve auquel sont demandées les données tandis que norbre indique le nombre octets demandés. Les octets qui seront cnvoyés par lesclave suite & cette demande pourront écre lus au moyen des fonc- tions avai labie et read présentées ci-dessous. lisation n'est pas obligat ja lecture au moyen d'une fonction read, nombre = Wire.available() 7 nonbre est une variable, au moins de type byte, contenant le nombre d’octets disponibles. read(, anciennement receive) Sur un esclave, cette fonction permet de lire un octet transmis par le mare tandis 4que, sur un maftre, elle permet de lire un octet transmis pas un esclave suite & exécution d’une fonction request Fron, Sa syntaxe est la suivante donnée = Wire.read() cit donnée est une variable au moins de type byte qui contient le caractére hu sur ique cette fonction met fin & une séquence de transmission avec la fonction begintransnission. Elle renvoie en retour, donnée de type byte dont le contenu peut évoluer de 0-4 4 afin d'indiquer de la transmission de la fagon suivante : ~ O signifie que léchange sest bien déroulé ; lique que les données a transmettre étaient trop nombreuses pour tenir dans Tholddeahs 6.3 Le bus 2c re & Tenvoi de ~ 2 indique qu’un NACK (absence d'acquittement) a été reeu adres = 3 indique qu'un NACK (absence dacquittement) a été regu suite aenvoi d'une donnée ; ~ 4 indique une erreur dun autre type. La syntaxe habieuelle de cette fonction est la suivante : code = Wize.endoransnission() ; dessus. yus la forme: cit code est une variable de type byte qui contient l'un des résul Cette fonction peut également s utiliser avec un paramétre optionn code = Wire-endtransmission(stop) + Le paramétre stop, qui est nécessairement de type boolean, peut alors étre égal 1 générer une condition darét surla liaison 12C ou 8 zéro pour générer une ion de dépare répété ire du bus 12C dans les deux cas, ce qui est généralement son role dans la majorité des applications mais, dans le premier exemple nous ne ferons quenvoyer des données & un esclave alors que, dans le deuxitme exemy des données de Vesclave. outefois TC avee is longue et la plus dé afin de prendre connaissance ne reste plus qu’a enchainer les fonctions le données conrespondantes. En voici un premier exemple avee un métre numérique Le schéma de notre montage est présenté figure 6.10 et met en euvre un pot re numérique commandé par un bus I2C + en occurrence un ADS log Devices dont vous trouver? la fiche technique dans les compléments en ligne. Le dialogue avec un tel potentiométre est simple puisque, fiche technique, il est & Padresse fixe 0x2C (soit 44 en décim: son entrée ADO a la masse, et quil ne comporte que deux registres. Dans e premier on doit écrire la commande dési aici 400 puisque Je mode OTP de ce poten- Figure 6.10 Commande d'un potentiométre numérique 8 interface I2C LUsting 6.2 - Exemple de gestion d'un potentlamétre numérique & interface 2C. #include void setup} 4 Wire.begin(); // tnitialisation 12c, Arduino en maitre > byte position = 0; void loop() ‘ Wire.begintransmission(0x2c); // L’ADS171 est a l’adresse 0x2 Wire wei 71 Rayos de 1! instruction Wire writ 1/ Bnvoi de 1a position 71 Pin de L'échange 63 Le bu: positiont+; Le(poaition == 64) // Si le maximum est atteint ‘ position = 0; // Retour au minimum > delay (50 ‘qui consiste donc & écrre dans le cir position du pot uit Ia commande (00 dans ce cas) sue jométre, contenue dans la variable position, se déroule ens Vautre geice & wixe.write, Le tout est termin€ par une condition dart gén par Wire endtransnission. Cet exemple nfayant fait tenant une deuxitme apy dans un tel ic 2C, nous vous proposons m dans laquelle nous allons écrite mais aussi -ompléments en ligne 1 présente un schéma de mise en ceuvre type, que vous pourrez ler sur un shield prototype, encore que de nombreux mé uipés du DS 1307 et de sa batterie de sauvegarde soient disponibles ate ICT vee} s7eawe 2), n{Z Arduine 3 vat oa} bs Batt Heo soa Me 3 Dsr807 Figure 6.11 - Utilisation d'une horloge temps rée DS 1307 a interface 2c.

You might also like