Copieur autonome de mémoires I2C 24C01 à 24C16

Vue globale du copieur de mémoires I2C. Bas de page (retour)
Description :

Sur ce site, sont proposés deux programmateurs pour les mémoires I2C de la série 24Cxx, l'un se connectant sur le port série, l'autre prévu pour le port parallèle. Ces deux dispositifs nécessitent d'avoir sous la main un PC, ce qui n'est pas toujours le cas, par exemple dans un atelier de dépannage TV (ou autres) ; dans ce cas de figure, la fonction recherchée consiste plutôt à pouvoir dupliquer le contenu d'une eeprom référence dans une mémoire vierge en vue d'un échange standard ; il suffira alors de se constituer une petite 'bibliothèque' de mémoires servant de modèles, et adaptées aux différents cas de figures rencontrés. Le montage présenté sur cette page permet d'effectuer cette duplication de manière totalement autonome, c'est-à-dire sans PC et avec une alimentation constituée d'une simple pile 9V. Il est conçu pour les 24C01, 24C02, 24C04, 24C08 et 24C16 (ou toute référence compatible, telle que la 24C164, etc.). Les mémoires I2C étendues (24C32 à 512) ne sont pour l'instant pas prises en charge.


Bas de page (retour)
Schéma électrique :

Schéma électrique du dispositif
Bas de page (retour)
Analyse du schéma :

Comme vous pouvez le constater, l'ensemble est d'une grande simplicité ; le coeur du système est le microcontrôleur PIC16F84 bien connu, largement disponible à un prix raisonnable, et programmable avec des moyens 'rustiques' ; le recours à ce type de composant programmable s'impose comme une évidence compte tenu de la (relative) complexité du protocole I2C utilisé par les EEPROMs 24Cxx.

La pile 9V, associée à un classique régulateur 7805, fournit le +5v nécessaire aux alimentations du PIC et des mémoires ; la diode protège des inversions de polarité ; le PIC est, comme presque toujours, accompagné de son circuit d'horloge (quartz 4 MHz et condensateurs 15 pF), et de RESET (touche + 22k + 2,2µF, ces valeurs étant peu critiques). On trouve également trois leds (rouge, verte et jaune) indiquant l'état des opérations, ainsi que cinq touches pour lancer le cycle tout en indiquant au montage le modèle de mémoires présentes. Les résistances de 330 ohms limitent le courant dans les leds à un peu moins d'une dizaine de mA. Les résistances de 10 k ohms sont des résistances de tirage, servant à assurer un niveau logique "1" lorsque la touche sur l'entrée considérée est relachée (ou l'inter non passant, dans le cas de RA3). Bas de page (retour)
Les mémoires I2C partagent une ligne SDA commune, qui est la broche RA4 : cette sortie est du type "à collecteur ouvert", ce qui convient bien à la structure du bus I2C, contrairement aux autres sorties du PIC (RB0 à RB7 et RA0 à RA3) qui sont des sorties TTL. La résistance de tirage sur RA4 est donc absolument indispensable, contrairement à celles présentes sur RA0 et RA2 commandant les entrées SCL des mémoires ; je les ai mises afin de fixer les états des broches SCL lors du RESET, les sorties du PIC étant alors en haute impédance.

Je ne reprendrai pas ici la description du bus I2C et des échanges avec les mémoires 24Cxx : le visiteur intéressé se reportera à la rubrique "Protocole I2C" du programmateur I2C pour port parallèle, présenté sur ce même site.

Bas de page (retour)
Circuit imprimé :

Circuit imprimé (en basse résolution)


Circuit et implantation au format ARES Lite
Cop-ARES.LYT


Dessin du circuit imprimé et implantation des composants au format AresLite.
Circuit imprimé (en haute résolution)
Cop-CIBG.GIF


Dessin du circuit imprimé au format GIF en haute définition (600 dpi), vu côté composants.
Bas de page (retour)
Réalisation du circuit imprimé :

Ceux d'entre-vous qui possèdent le logiciel ARES Lite (ou même la version de démo disponible sur le web ?) pourront directement charger le fichier "COP-Ares.LYT" fourni et l'imprimer sur papier à l'échelle 1. Pour les autres, pas de problème : le dessin du circuit est également fourni ci-dessus au format GIF, avec une résolution de 600 DPI ; vous pourrez donc l'imprimer, par exemple avec Paint Shop Pro V3.11, en indiquant les dimensions : 7,20 cm x 5,93 cm (ou 2,83 pouces x 2,33 pouces). Avec les marges, une plaque de 6 cm x 7 cm suffit.

Il reste alors à réaliser une photocopie de bonne qualité (laser) sur un transparent. Une alternative consiste à rendre la feuille de papier transparente aux UV en vaporisant un produit comme le "Diaphane", de KF : j'ai utilisé cette méthode avec satisfaction, mais il est préférable de prolonger un peu l'insolation aux UV (dans mon cas, 5 mn au lieu de 3). Pour terminer, gravez, puis percez, selon votre méthode habituelle.

Liste au format TXT  Liste des composants : Bas de page (retour)

  • 3 résistances de 330 ohms.
  • 9 résistances de 10 k ohms.
  • 1 résistance de 22 k ohms.
  • 2 condensateurs de 15 pF (céramique).
  • 1 condensateur de 2,2 µF (tantale).
  • 1 condensateur de 10 µF (électrolytique, radial).
  • 1 diode 1N4001.
  • 2 supports 'tulipe' 8 broches (2 x 4).
  • 1 support 'tulipe' 18 broches (2 x 9).
  • 1 quartz 4 MHz.
  • 1 PIC 16F84 (ou 16F84A, ou 16C84).
  • 1 régulateur 7805.
  • 6 touches (voir description).
  • 1 led rouge, diamètre 5 mm.
  • 1 led verte, diamètre 5 mm.
  • 1 led jaune, diamètre 5 mm.
  • 1 double bornier à vis
  • 1 triple bornier à vis
  • 1 clip pour pile 9v.
  • 1 pile 9v.
  • divers : soudure, époxy, perchlo, mèches, etc.
  • en option :
    - 2 inters à bascule (pile et Mode),
    - un bouton poussoir (RESET externe).
Bas de page (retour)
Remarques :

Utilisez impérativement des supports 'tulipe', en particulier pour les mémoires I2C, car ils seront appelés à supporter de nombreux retraits et insertions.

Un mot concernant les touches : ce modèle de touche (carrée, de 6 mm de côté) est assez courant, on le trouve dans les souris d'ordinateurs, en façade de magnétoscopes, lecteurs de CD et autres appareils audio ou vidéo en tous genres :
Touche soudée, en gros plan    Observez les deux bandes parallèles
Comme le montrent le schéma et les photos ci-dessus, les touches possèdent quatre connexions, mais qui sont en fait reliées deux à deux de manière interne : ce sont les extrémités de deux bandes parallèles (bandes mises en contact lors de l'appui sur la touche) ; dans le doute, contrôlez le contact à l'ohmmètre. Cette structure permet de réaliser facilement des claviers matricés, sans avoir à ajouter de strap pour faire se croiser les lignes et les colonnes. Vous pouvez choisir un modèle de touche différent pour la touche RESET, ou vous abstenir de la câbler si vous préférez utiliser un bouton poussoir externe (relié au bornier triple).

Bas de page (retour)
Implantation des composants :

Bas de page (retour)
Câblage :

Commencez par souder les résistances et le strap (constitué d'une patte de résistance), puis la diode, puis les six touches, puis les trois supports de CI, les condensateurs 'céramique', chimiques, les leds, le quartz, et enfin les borniers. Connectez le clip de pile 9v au bornier double, avec éventuellement un interrupteur en série.

Si vous n'utilisez ni le poussoir RESET externe, ni l'interrupteur "Mode" (voir Mise en service), il n'est pas vraiment nécessaire de souder le bornier triple.
Photo du montage terminé :

Gros plan sur le montage Bas de page (retour)

Comme vous le constatez sur la photo ci-dessus, il reste un peu de place sous les touches pour coller des étiquettes indiquant le type de mémoire auquel est associée chaque touche ; de gauche à droite : 24C01, 24C02, 24C04, 24C08 et 24C16. La touche RESET (blanche, à côté du régulateur) permet de se remettre en attente d'un cycle de programmation.
Programmation du PIC :

Personnellement, j'utilise le programmateur JDM ; sa structure est simple, et il tire son alimentation directement du port série auquel il est connecté.

Voici la page web qui décrit la réalisation du programmateur JDM :
http://www.jdm.homepage.dk/newpic1.htm.
Les internautes un peu en froid avec la langue de Shakespeare trouveront là une page avec sa description en français :
http://perso.club-internet.fr/f5jtz/pjacquet/pip02.htm.
Plutôt que le programme PIP02 proposé, je vous engage à utiliser un autre programme DOS, PicCheap, qui semble tourner mieux sur les PC rapides actuels :
http://www.piccheap.fr.st.
Les inconditionnels de Windows pourront également essayer IcProg :
http://www.h2deetoo.demon.nl/index1.htm.
Pour ma part, j'en suis resté à PicCheap.
Bas de page (retour)
Le programme :

Vous pouvez indifféremment utiliser un PIC16C84, un PIC16F84, ou un PIC16F84A, à condition de l'indiquer à PicCheap. Voici le fichier Cop10.HEX (version 1.0) à programmer dans le PIC. Exceptionnellement, j'ai décidé de fournir le fichier 'source' du programme si vous souhaitez y apporter des modifications ; téléchargez pour cela l'archive ASM-PIC.ZIP (80 ko) ; elle contient les quatre fichiers suivants :
  • COP10.ASM : le fichier source, éventuellement à éditer.
  • MPASM.EXE : l'assembleur fourni gracieusement par Microchip.
  • P16F84.INC : le fichier inclus contenant les définitions des registres du PIC16F84.
  • ASM.BAT : le fichier à lancer, qui appelle l'assembleur avec les bonnes options.
Lorsque vous lancez le fichier ASM.BAT, l'assemblage se produit, et génère quatre nouveaux fichiers :
  • COP10.COD, qui n'a pas d'intérêt pour nous.
  • COP10.ERR : la liste des erreurs rencontrées à la compilation ; il est vide (0 octet) si tout s'est bien déroulé.
  • COP10.HEX : le fichier au format Intel / Hexa contenant les codes 'machine' à charger dans le PIC grâce à PicCheap.
  • COP10.LST : le listing contenant toutes les informations obtenues à la compilation (programme source, codes 'machine', messages et nombre d'erreurs, etc.).

Bas de page (retour)
Mise en service :
Utilisation :

La pile est branchée, les mémoires ayant été insérées sur les supports 8 broches (l'original du côté du bornier triple, et la mémoire vierge du côté du quartz).

  • À la mise sous tension, les deux leds rouge et verte clignotent alternativement, pour indiquer que le montage est prêt à effectuer une copie.

  • Appuyez sur la touche correspondant au type de mémoires présentes :
    [24C01], [24C02], [24C04], [24C08] ou [24C16]

  • Le cycle est lancé : les leds rouge et verte s'éteignent ; la led jaune se met à clignoter.

  • Si tout se passe normalement, la led jaune va clignoter :
    • 1 fois dans le cas d'une 24C01.
    • 2 fois dans le cas d'une 24C02.
    • 4 fois dans le cas d'une 24C04.
    • 8 fois dans le cas d'une 24C08.
    • 16 fois dans le cas d'une 24C16.
    Puis la programmation s'achève et la led verte s'allume pour indiquer que tout est terminé, et qu'aucune erreur n'a été détectée (leds jaune et rouge éteintes).

  • Si un problème survient (mémoire absente, erreur d'écriture...), la programmation s'interrompt aussitôt, et la led rouge s'allume (leds jaune et verte éteintes).

  • Lorsque tout est terminé, que la programmation ait réussi ou non, il suffit d'appuyer sur la touche RESET (Remise à zéro) pour repasser en mode 'Attente' (clignotement rouge / vert) ; on peut alors lancer une autre programmation en appuyant sur l'une des cinq touches.

  • L'appui sur la touche RESET en cours de programmation abrège l'opération. La copie n'est alors que partielle, il faudra par conséquent relancer la duplication.

Bas de page (retour)

La programmation dure environ :

  • 1 seconde dans le cas d'une 24C01,
  • 2 secondes dans le cas d'une 24C02,
  • 4 secondes dans le cas d'une 24C04,
  • 8 secondes dans le cas d'une 24C08,
  • 16 secondes dans le cas d'une 24C16.
Cette durée peut paraître longue, notamment à ceux qui utilisent le programmateur pour PC (sur port série ou parallèle) dont l'action est presque instantanée, mais l'algorithme a été renforcé de manière à détecter pour ainsi dire à coup sûr (presque) toute erreur ; la fiabilité est à ce prix...
L'interrupteur 'Mode', lorsqu'il est passant, permet d'éviter une phase de vérification et de réduire ainsi la durée de la programmation d'environ un tiers (ainsi, pour une 24C16, elle passe à environ 11 secondes). Mais il est dommage de limiter de la sorte la fiabilité du système, et je n'exclus pas d'attribuer à l'interrupteur une autre fonction, dans une version ultérieure du système.
 

Aucun commentaire:

Enregistrer un commentaire