~ Description du système ~


EEPROM I2C - 2048 octets


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.


Haut de la page Généralités :

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)...
Haut de la page

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 :

 

Protocole I2C / Application avec une 24C16 (et 24C64) :

En cliquant sur le lien de droite, vous découvrirez une description simplifiée du protocole I2C, ainsi qu'un schéma et un morceau de programme en assembleur illustrant la communication entre un PIC16F84 et une 24C16, et une variante avec une 24C64.

>>


Haut de la page Description de la partie matérielle :

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 :

Schéma électrique :

Schéma électrique

Haut de la page

Le schéma n'appelle pas beaucoup de commentaires :

Haut de la page

Liste des composants :

    Composants :

  • 2 résistances 4,7 K ohms.
  • 1 résistance 22 K ohms.
  • 1 résistance 56 K ohms.
  • 1 condensateur 2,2 nF.
  • 1 transistor NPN quelconque, genre BC107B, 2N2222...
  • 5 diodes Schottky BAT85 (ou BAT83, 86...).
  • 1 fiche DB25 mâle et son capot.
  • 1 support tulipe 8 broches.
  • soudure, plaque pastillée, fil de câblage.
 i2c_pho1.jpg

Haut de la page

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

Premier prototype...

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.

Programmateur logé dans une DB25
Haut de la page

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...
  Haut de la page Version avec le circuit imprimé de Patrice

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



Et si cela ne marche pas, ou mal ?
Haut de la page

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 :

Haut de la page

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 :

Alimentation 5v externe à partir d'une pile 9v standard
Haut de la page

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... Haut de la page


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 !


Haut de la page Présentation du programme :

Voici une copie d'écran du programme EEPROM32.EXE ; il a été écrit avec C++ Builder 3 de Borland.

Interface graphique du programme EEPROM32.EXE
Haut de la page

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... Haut de la page

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') :

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.

Haut de la page

Programmateur de mémoire I2C

La photo de gauche montre le module relié au port parallèle par une rallonge ; la mémoire Eeprom (comme celle présentée à droite) sera connectée au module en respectant impérativement le sens de branchement (les broches 5 à 8 du côté de la DB25).

EEPROM I2C 256 octets


Haut de la page Télécharger le programme pour Win 95/98 :

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


Télécharger EEPROM32.ZIP

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.

Haut de la page

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 :


Haut de la page Télécharger la version MS-DOS du programme :


Interface du programme "I2Cdos09.exe"


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.


Télécharger I2CDOS09.EXE
Haut de la page

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. Haut de la page


Dernière mise à jour : le 18/01/2001.