background image

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

Copieur autonome de mémoires I2C

24C01 à 24C16 

 

 

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. 

http://col2000.free.fr/copieur/cop_indx.htm (1 of 10)17/8/2548 2:27:58

background image

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

Schéma électrique :

 

 

 

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

http://col2000.free.fr/copieur/cop_indx.htm (2 of 10)17/8/2548 2:27:58

background image

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

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. 

Circuit imprimé :

 

 

Cop-ARES.LYT

Dessin du circuit imprimé et implantation 

des composants au format AresLite. 

Cop-CIBG.GIF

Dessin du circuit imprimé au format GIF 

en haute définition (600 dpi), vu côté 

composants. 

 

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 ?) 

http://col2000.free.fr/copieur/cop_indx.htm (3 of 10)17/8/2548 2:27:58

background image

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

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 des composants :

 

●     

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

 

Remarques :

 

http://col2000.free.fr/copieur/cop_indx.htm (4 of 10)17/8/2548 2:27:58

background image

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

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 : 

    

 

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

Implantation des composants :

 

http://col2000.free.fr/copieur/cop_indx.htm (5 of 10)17/8/2548 2:27:58

background image

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

 

 

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é :

http://col2000.free.fr/copieur/cop_indx.htm (6 of 10)17/8/2548 2:27:58

background image

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

 

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

http://col2000.free.fr/copieur/cop_indx.htm (7 of 10)17/8/2548 2:27:58

background image

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

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. 

 

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

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. 

http://col2000.free.fr/copieur/cop_indx.htm (8 of 10)17/8/2548 2:27:58

background image

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

●     

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. 

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. 

http://col2000.free.fr/copieur/cop_indx.htm (9 of 10)17/8/2548 2:27:58

background image

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

  

Retour au sommaire 

Dernière mise à jour : le 24-03-2001. 

http://col2000.free.fr/copieur/cop_indx.htm (10 of 10)17/8/2548 2:27:58


Document Outline