![]() |
|
Signalons qu'il existe maintenant une version
de ce programmateur fonctionnant sur le port
série :
elle est décrite ici ;
vous trouverez aussi un petit adaptateur pour
utiliser les cartes à puce I2C. |
---|
Signalons aussi que cette version pour le port série permet une programmation 'In situ' avec paramétrage des adresses physiques (A0, A1 et A2) ; de plus, elle est en principe compatible avec Windows NT. Ce n'est pas le cas avec la version pour le port parallèle, décrite sur cette page. |
Les utilisateurs de microcontrôleurs ressentent souvent le
besoin d'ajouter à leur montage un peu de mémoire EEPROM ;
en effet, cette dernière permet le stockage d'informations
qui survivront à la coupure de l'alimentation (paramètres
de fonctionnement, résultats de mesures, textes, tables etc.) ;
il est toutefois impératif que cet ajout ne mobilise pas trop
de connexions au niveau du circuit, le nombre d'entrées / sorties
étant généralement assez limité ;
grâce à leur bus série, les mémoires I2C
(développées par Philips, et très utilisées
en télévision), apportent une solution intéressante...
Leur utilisation suppose la possibilité de pouvoir les lire
et les programmer simplement, avec un minimum d'investissements
matériel et logiciel ; c'est dans cet esprit que je vous propose
la réalisation d'un petit module à connecter sur le port
parallèle d'un PC, et qui sera piloté par un programme
fait maison, fonctionnant sous Windows 95 ou 98 (mais pas avec cette
chose nommée Windows NT) ; celui-ci accepte les mémoires
de types 24C00, 24C01, 24C02, 24C04, 24C08, 24C16, 24C32, 24C64, 24C128
24C256, 24C512, et PCF8582, ainsi que leurs différentes variantes
(en principe)...
La documentation sur les mémoires est (parfois) disponible
au format PDF sur les sites web des fabricants ; allez en
particulier consulter les sites suivants :
Le système ne requiert pas d'alimentation extérieure
; compte tenu de la faible consommation des mémoires, y compris
pendant la phase de programmation, l'énergie nécessaire
est prélevée sur les sorties non utilisées du
port ; voici un rappel du brochage du port parallèle, et le
schéma de câblage de l'ensemble :
Le schéma n'appelle pas beaucoup de commentaires :
La sortie parallèle du PC est une fiche femelle 25 broches ; la fiche représentée ci-dessus est la prise mâle branchée sur la sortie et vue côté soudures.
Les quatre diodes BAT 85, permettent de récupérer une tension d'alimentation suffisante (ce sont des diodes Schottky, la chute de tension qu'elles introduisent reste faible). Elles sont soudées ensembles au niveau de la fiche DB25 mâle.
La résistance de 56 k et le condensateur de 2,2 nF sont là afin de respecter les indications de la documentation du PCF 8582 (concernant l'entrée 7 'PTC') ; la diode BAT85 permet de mettre à la masse la broche WP dans le cas des 24Cxx.
Le transistor sert à conserver la structure "collecteur ouvert" (ou plutôt "drain ouvert") de l'entrée / sortie SDA ; une telle précaution n'est pas nécessaire sur SCL, car celle-ci fonctionne toujours en tant qu'entrée.
Les entrées A0, A1 et A2 sont reliées à la masse, le programme en tient compte au niveau de l'adressage (mais il ne serait pas impossible de programmer simultanément plusieurs mémoires situées à des adresses successives, par exemple deux 24C02 - la seconde ayant A0 à "1" - en indiquant au programme une 24C04).
Je doute qu'il existe des supports à force d'insertion nulle en huit broches, par contre un support tulipe fera très bien l'affaire...
Le montage est connecté au PC par une DB25 mâle ; il devra être relié directement pour les premiers essais, mais pour l'utilisation courante, je recommande une rallonge de 1 mètre (vérifiez qu'il s'agit bien d'une rallonge pour port parallèle, et non d'un câble RS232 avec DB25) ; méfiez-vous également des répartiteurs (commutateurs pour plusieurs imprimantes), qui ne commutent pas toujours toutes les broches.
Liste des composants :
Composants : |
![]() |
Réalisation pratique :
Le montage est simple et ne nécessite pas impérativement
de circuit imprimé ; voici une première mouture
réalisée sur une plaque à bandes, en application
du schéma électrique fourni que vous devrez avoir sous
les yeux ; faites attention aux soudures qui débordent et au
positionnement un peu acrobatique du transistor...
Les cinq diodes sont soudées dans la DB25 ; un support tulipe a
été rajouté par dessus le support standard originel
(car ce dernier supportait mal les multiples montages / démontages
des mémoires). Le côté un tantinet brouillon n'est
acceptable que dans le cadre d'une réalisation 'express', en
dépannage.
Pour les électroniciens un peu plus exigeants, vous trouverez en
cliquant sur le lien de droite une description illustrée
de l'insertion du dispositif dans le capot d'une fiche DB25
mâle, mais cela nécessite un certain soin étant
donnée l'exiguité de ce 'boîtier' inhabituel ; le
résultat aura alors un aspect plus fini ; la cohésion
de l'ensemble est assurée par un petit morceau de plaque à
trous pastillée...
Une solution plus élégante consiste à
réaliser un mini circuit imprimé à loger
dans le capot de la DB25 : en cliquant sur le lien
à gauche, vous découvrirez les détails
de réalisation du circuit conçu par Patrice
F5JTZ ; à ce propos, je vous engage vivement
à aller consulter le site de Patrice à
l'adresse
http://perso.club-internet.fr/f5jtz.
Un site avec un réel contenu ! de nombreux
éléments d'informations à destination
des radio-amateurs, ou des simples bricoleurs comme nous :
multiples logiciels, adresses, adaptations de matériels
de télécommunication, montages électroniques
HF et divers (dont programmateurs de PICs et d'EEPROM Microwire,
et bien d'autres choses encore), etc.
Merci encore, Patrice...
Je ne veux pas vous porter la poisse, mais il faut quand même évoquer le problème ! Le premier réflèxe doit consister à vérifier soigneusement le câblage de la partie matérielle, car si l'ensemble n'est pas très compliqué, il est en revanche assez compact :
En principe, la tension d'alimentation fournie par les bits B4 à B7 (broches 6 à 9 de la DB25) via les quatre diodes BAT85 est suffisante pour alimenter la mémoire I2C ; les PCs étant plus ou moins compatibles, il n'est pas totalement exclu de tomber sur un ordinateur dont le port parallèle serait un peu faiblard ; ceci se traduirait dans le pire des cas par l'impossibilité de lire le contenu de la mémoire, ou plus vraisemblablement par des difficultés lors de la phase de programmation (échecs, de temps en temps) ; dans ce cas, la solution évidente la plus simple consiste à fournir une alimentation extérieure, à partir d'une pile 9V associée à un régulateur 5V, comme l'indique le schéma ci-dessous :
La sortie 'Gnd' vient se connecter à la broche "4" du support (masse) ; la sortie '+5V' se branche sur la broche "8" (Vcc). Vous pouvez laisser les quatre diodes, elle ne sont plus rigoureusement nécessaires, mais il se peut que le module utilisé sur un autre ordinateur (avec un port parallèle plus dynamique) consente à fonctionner sans la pile. Le régulateur peut être un 7805, voire un 78L05 pour gagner un peu de place (brochage inversé !). La diode 1N4001 n'est pas indispensable, mais elle protège des erreurs de branchement de la pile. J'espère que vous n'aurez pas à en arriver là, ce serait un peu rageant, car l'avantage de ce programmateur, outre sa simplicité et son programme sous Windows, est aussi l'absence d'alimentation extérieure.
Avant de procéder à cette modification, il est
possible de faire quelques mesures : dans le menu
[Configuration], sélectionnez l'option [Test
du port parallèle] :
- Pour mesurer la tension d'alimentation de la mémoire
non alimentée, cochez uniquement le bit B1 ; la masse
est la broche "4", le Vcc est la broche "8" du
support ; j'obtiens 0,12V avec ou sans mémoire.
- Alimentez la mémoire en cochant en plus B4, B5, B6 et
B7 ; j'obtiens 4,85V avec mémoire (une 24C02 de ST),
ou sans.
- Vous pouvez également fixer la valeur de SDA
(complément du bit B1), et la lire (en cliquant sur
[Lire les entrées] ; la ligne correspondante
est l'entrée "Acknowledge [10]") ;
activez B1 uniquement, et lisez SDA : elle est à
"0" ; n'activez aucun bit et vérifiez que
SDA est à "1".
SDA est complémenté par rapport à B1 à
cause du transistor en émetteur commun. Même résultat
en activant les bits d'alimentation (B4 à B7), auquel cas vous
pouvez en profiter pour mesurer les tensions sur SDA.
- Vérifiez chaque bit directement au voltmètre
sur la fiche DB25 du port parallèle (B0 à B7 =
broches 2 à 9, Masse = broches 19 à 25).
- Une tension trop faible (difficile de dire combien, cela
dépend du modèle de mémoire, grosso modo
disons inférieure à 4,5V) due à un port
un peu "mou" constitue le risque principal de
mauvais fonctionnement...
Si cela ne donne toujours rien, aspergez votre ordinateur d'eau bénite, insultez-le, consultez un prêtre, un pasteur, un rabbin, et un imam, plongez-vous dans la lecture de Confucius, partez trouver le repos de l'âme aux îles Kerguelen ou dans l'Atlas Tunisien, allez vous soûler dans un boui-boui à Macao, exilez-vous chez les aborigènes... je ne peux plus rien pour vous !
Voici une copie d'écran du programme EEPROM32.EXE ; il a
été écrit avec C++ Builder 3 de Borland.
Le programme possède un Buffer de 65536 octets (64 ko) dont
le contenu, affiché en HEXA et en ASCII, est modifiable octet
par octet ; le Buffer est initialisable de plusieurs façons
différentes.
Son contenu peut être chargé ou lu dans l'EEPROM ;
une boîte à liste déroulante permet de
choisir le type d'EEPROM : PCF8582, 24C00, 24C01, 24C02, 24C04, 24C08,
24C16, 24C32, 24C64, 24C128, 24C256 ou 24C512 ; la taille du Buffer
est alors ajustée automatiquement. Il est possible de
programmer un octet individuellement. Le contenu binaire du buffer
peut être chargé depuis un fichier (icône [Fichier
ouvrir]), ou sauvegardé dans un fichier (icône [Fichier
sauver]). Attention, le programme ne reconnaît pas tous les
formats HEXA ; si vous disposez de ce type de fichiers, vous
devrez au préalable les convertir en binaire grâce à
l'utilitaire Dos 'HEXOBJ.EXE' ; seul le format
Intel HEXA est reconnu, et ce depuis la version 3.1...
Le programme est conçu pour fonctionner sous Windows 95 et
98 (mais pas sous Win NT !) ; la configuration minimale est celle
nécessaire à Windows : il semble même
fonctionner correctement sur un 486 SX 25, mais utilisez plutôt
un Pentium, notamment avec les mémoires de grande capacité
pour lesquelles la mise à jour du Buffer peut prendre plusieurs
secondes ; je l'utilise personnellement sur un Pentium 200 MMX.
Le module peut être branché sur le port LPT1 ou LPT2 ; le
choix se fait dans le menu 'Configuration' et est sauvegardé
automatiquement (ainsi que le type de mémoire) en quittant le
programme.
Pour les utilisateurs de Linux, signalons que j'ai pu faire fonctionner
EEPROM32.EXE avec la Mandrake 6.0 (et 7.0) grâce à
l'émulateur Windows 'wine' (fourni avec cette version)...
Plus récemment, j'ai téléchargé et
installé la version Wine-991212, avec la SLACKWARE 7.0
fournie dans le hors-série n°5 de Linux Magazine.
Voici les modifications apportées pour cela au fichier
'wine.conf' (qui se trouve dans '/etc' ou dans
'/usr/local/etc') :
Alias0 = Courier New, -sony-fixed-medium-
read=0x378,0x379,0x278,0x279,0x3bc,0x3bd
write=0x378,0x379,0x278,0x279,0x3bc,0x3bd
Le programme est assez long à se lancer, et un peu lent, mais il fonctionne de manière satisfaisante. Attention, il faut être logué en tant que superutilisateur ('root') pour avoir le niveau de privilège permettant l'accès direct au port parallèle.
Consultez également la rubrique d'aide du programme ;
signalons enfin que l'aide et le schéma électrique
sont aussi accessibles depuis le menu 'Informations', ceci
afin que le programme distribué seul puisse permettre
à son utilisateur de construire le programmateur.
![]() |
|
![]() |
Vous pouvez télécharger ci-dessous
le programme EEPROM32 dans sa version 3.2 (en date du 18/01/2001) ;
le fichier est disponible sous la forme d'une archive
EEPROM32.ZIP de 306 522 octets ;
une fois décompressée, celle-ci fournit le
programme EEPROM32.EXE (666 624 octets) ; vous pouvez
également récupérer l'utilitaire Dos
HEXOBJ.EXE (13 368 octets) qui sert
à créer un fichier binaire à partir d'un fichier
HEXA au format T.I., MOTOROLA, ou encore TEKTRONICS...
For english speaking people : Click the icon above to download the program. Menu and hints can be translated into english ; you just need to save the file EEPROMLG.INI in the Windows directory (usually C:\Windows) ; then, in the menu [Configuration], check [Autre Langue au lancement] and restart the program ; you can modify EEPROMLG.INI to improve the translation. |
Améliorations apportées par la version 3.2 (janvier 2001) :
Améliorations apportées par la version 3.1 :
Améliorations apportées par la version 3.0 :
Améliorations apportées par la version 2.0 :
Cette application DOS permet la lecture et la programmation des PCF8582
ainsi que des 24C01 à 24C64. En cliquant sur l'icône
ci-dessous, vous pouvez télécharger le programme
I2CDOS09.EXE
(37.604 octets, version 1.0 du 12/02/2000) ;
l'utilitaire HEXOBJ.EXE est
aussi disponible.
Vous vous posez sûrement la question de savoir pourquoi faire
une version DOS alors qu'il existe une version Windows ?
il y a deux raisons à cela :
1 - D'une part, les nostalgiques du DOS n'ont pas totalement disparu,
et puis avec les progrès de l'informatique, beaucoup ont investi
dans un nouvel ordinateur ; l'ancien est alors mis à profit
pour faire tourner les vieux programmes DOS, ou bien se retrouve dans
l'atelier 'bricolage' où il est réservé à
des tâches subalternes : piloter notre montage, ou tout autre
dispositif du genre modem (minitel, baycom), terminal, ou appareil de
mesure...
2 - D'autre part, certains d'entre-vous utilisent Windows NT ;
ce système d'exploitation impose le recours à un
driver pour l'accès direct aux ports d'entrée/sortie
(port parallèle), ce qui le rend pour l'instant incompatible
avec ce genre de programme ; il en est de même avec Windows
2000 ; la seule solution dans l'immédiat consiste à
faire une disquette de Boot (avec Windows 98, 95, ou le DOS 6.22,
voire avec une version antérieure) ; il suffira alors de
booter sur cette disquette et de lancer depuis elle le programme.
Elle devra contenir tous les fichiers nécessaires au
fonctionnement (CONFIG.SYS et AUTOEXEC.BAT pour le clavier en mode
AZERTY, etc.). Il est également possible d'utiliser le programme
sous Linux (avec 'dosemu') ou encore avec des clones de DOS comme FreeDOS.
Rappelons que la version du programmateur fonctionnant sur le port
série (également décrite sur ce site) est, elle,
compatible avec Windows NT.
![]() |
---|