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
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
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é :
Dessin du circuit imprimé et implantation
des composants au format AresLite.
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
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
, 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
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
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
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
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 :
.
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
(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
(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
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
Copieur autonome de mémoires I2C 24C01 à 24C16
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