I2C-Hacking-Reset

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Introduction

Sur un bus I2C, chaque périphérique doit avoir sa propre adresse, adresse qui doit être unique sur le bus.

A cette fin, la plupart des breakouts dispose de cavalier (pastilles) d'adressage matériel.

ADF-LED-BACKPACK-ARD-01.jpg
L'exemple issus des contrôleurs LED d'AdaFruit et présentant les "jumpers" A0, A1 et A2 permettant de modifier l'adresse de l'esclave.

En pontant certains de ces contacts, il est donc possible de modifier l'adresse du composant sur le bus... génial si nous voulons en placer plusieurs :-). Il suffit qu'il aient chacun une adresse différente.

Mais parfois, certains composants ne disposent pas de cavalier pour configurer d'adresse matériel... Arghh!!!

C'est la cas du BMP085 ci-dessous (que nous utiliserons en exemple)

I2C Hack BMP085.jpg

Comme vous pouvez le voir, ce dernier n'a pas de cavalier d'adressage matériel (ni derrière).

Du coup, il est uniquement possible de placer UN SEUL composant BMP085 sur le bus I2C. Si vous en placions 2, ils répondraient tous les deux en même temps et la réponse ne pourrait pas être décodée par le maître (gloups!)

La ligne Reset

Dans le cas du BMP085, vous ne pouvez donc avoir qu'un seule périphérique à l'adresse 0x77 (etc.).

Mais si vous prêtez attention à l'image... vous noterez une entrée nommée XCLR... qui n'est autre qu'une ligne RESET.

I2C Hack BMP085.jpg

Une ligne RESET réinitialise un composant... mais a ceci de particulier que le composant reste inactif aussi longtemps que le signal RESET est actif.

C'est un peu comme un Taser... le malheureux que vous avez visé ne bougera pas d'un poil (ni même prononcer un mot) aussi longtemps que vous pressez sur le bouton du Taser. C'est pareil pour le RESET... aussi longtemps qu'il sera actif, le composant sera Tasé et incapable de répondre! Quelle aubaine :-)

Technique de la ligne Reset avec I2C

Vous l'aurez compris... il faudra que votre composant I2C dispose d'une ligne Reset. Sachez que ce n'est pas toujours le cas!

Du coup, il est donc possible de mettre plusieurs BMP085 sur un même BUS I2C... puisque le BMP085 dispose d'une ligne Reset (sous le nom de broche XCLR).

SAUF QUE le BMP085 dispose aussi d'une broche RESET qui permet de le désactive! En fin de compte, il est possible d'avoir plusieurs BMP à l'adresse 0x77 sur le même bus I2C. Il faut seulement veiller à activer le RESET (broche XCLR=Reset à LOW) pour tous les périphériques BMP à l'exception de celui avec lequel nous voulons dialoguer (broches XCLR = HIGH pour désactiver le Reset). Le périphérique I2C qui ne sera pas en Reset répondra sur le bus I2C.


Réalisé par Meurisse D. pour MCHobby.be.

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.