La plupart des appareils fonctionne maintenant grâce à un microprocesseur. L'amateur préfère souvent en employer un dans ses montages car il permet de réduire sensiblement le nombre de composants actifs utilisés. L'écueil rencontré est le plus souvent le prix d'un programmateur. Voici un article qui permettra de franchir ce pas en réduisant ce coût.
Principe de fonctionnement
Le principe d'un programmateur d'EPROM (ou d'EEPROM) est de charger dans une de ces mémoires, le programme souhaité pour permettre son exécution sur un microprocesseur (ou microcontrôleur). Le format de mémoire choisi ici est aussi le seul utilisable avec ce programmateur. C'est l'EEPROM 28C64, simplement parce que c'est celui le plus souvent utilisé dans les montages de l'amateur.
Le choix d'une EEPROM mérite aussi une explication. En effet, ce type de mémoire se trouve de plus en plus facilement à des coûts de plus en plus petits et ne nécessite pas d'effaceur d'EPROM, appareil coûteux et le plus souvent le temps d'attente pendant l'effaçage est long. En plus, ces mémoires atteignent maintenant plus de 10 000 cycles d'écriture, et ne s'effacent pas lors de la coupure de l'alimentation. Elles conservent les données pendant au minimum dix ans (!). L'utilisation d'une EEPROM permet donc de raccourcir sensiblement le temps de mise au point d'un programme.
Qu'est-ce qui a rendu possible un programmateur aussi peu coûteux ? C'est le circuit intégré 8255. C'est un démultiplicateur de port. Il permet en effet de tripler les huit lignes d'un port d'un processeur (ici en fait celui de l'ordinateur). Ce qui a aussi permis une simplification extrême du circuit, c'est le fait que c'est le logiciel de l'ordinateur qui prend en charge toute la commande de l'EEPROM. Dernier point important, deux connexions sont possibles avec le P.C. : la connexion par le port parallèle qui ne permet que le transfert de l'ordinateur au programmateur, la plupart des ordinateurs possédant encore un port parallèle unidirectionnel, et la connexion par l'intermédiaire d'une carte de décodage d'adresses dans le P.C. ce qui permet des échanges bidirectionnels.
L'électronique et le logiciel
Schéma de principe
Nous allons d'abord examiner le cas où les données arrivent par la carte de décodage d'adresses. Les DIP switch permettent de choisir une des huit adresses possibles pour la carte. ATTENTION ! Il ne faut jamais positionner plus d'un switch à la fois en ON. En effet, il en résulterait une panne de la carte de décodage d'adresses. Le 8255 récupère directement les signaux du processeur (comme la validation d'écriture ou de lecture) qui ne sont qu'isolés et amplifiés par la carte de décodage d'adresses.
Voici le cycle d'écriture de la carte (les temporisations du programme réalisées par la commande SOUND utilisée sur une fréquence inaudible (32767 Hz) permettent d'obtenir une temporisation de longueur équivalente sur tous les types de machines; il sera toutefois préférable de rallonger celles-ci en cas de problèmes avec une machine fonctionnant à plus de 33 MHz). Le logiciel envoie le mot 128 (ils seront tous donnés en décimal) à l'adresse de base + 3, ce qui positionne les trois ports du 8255 en sortie. Puis, il envoie successivement l'adresse et la donnée à écrire dans la mémoire. Cette opération est plus compliquée qu'il n'y parait. En effet, les lignes d'adresses sont mélangées avec les trois lignes de commande de la mémoire : WE (écriture), OE (lecture), CE (validation de la puce). Les deux premières sont connectées à la fin du port B, la dernière étant connectée à la dernière ligne du port A, ce qui ne simplifie pas le logiciel. Le port C quant à lui représente les huit lignes de données.
En lecture, le processus est similaire, à l'exception du mot de commande transféré à la carte qui devient 137. Pour ce qui est de la connexion sur le port parallèle, le processus est plus compliqué, mais ceci uniquement sur le plan logiciel. Voici les principales différences entre le fonctionnement sur carte de décodage d'adresses et sur port parallèle. La différence la plus frappante est que le nombre de lignes du port parallèle est insuffisant pour commander le 8255. Ce problème est résolu par trois résistances de rappel de 10 kW. La première fixe la ligne de validation de lecture à l'état bas, ce qui rend celle-ci impossible. La seconde fixe l'entrée de validation de la puce à l'état bas ce qui la valide et la troisième permet d'inhiber la ligne reset, qui n'est en fait presque jamais utilisée, en la portant à l'état haut. C'est le logiciel du P.C. qui génère les signaux de commande normalement acheminés par la carte de décodage d'adresse. Ce qui occupait une ligne de programme auparavant, occupe six lignes dans cette version.
Réalisation
Les 15 straps verticaux et les 18 straps horizontaux permettant un circuit imprimé en simple face doivent être implantés en premier, du fait que certains vont se retrouver sous les supports des deux circuits intégrés, comme on le voit sur le plan d'implantation des composants. Certains de ces straps seront des fils de câblage pourvus de gaines car ils se croisent. Ensuite, il faut implanter les trois résistances, le bloc de huit DIP switch éventuellement remplacés par un strap au bon endroit pour l'adresse choisie. On terminera l'implantation par les deux supports et la prise parallèle (Centronics 36 broches femelle) et/ou la SUB-D 25 femelle nécessaire pour la carte de décodage d'adresses. L'alimentation de 5V (à 5% près pour ne pas griller les composants) sera acheminée sur un bornier à vis deux points.
Vous pourrez choisir entre la réalisation d'une alimentation ou le prélèvement de celle-ci sur l'alimentation à découpage du P.C. La méthode pour réaliser ceci est très simple. Il faut repérer les bons câbles. Ceux-ci arrivent par groupes de quatre à des prises de deux tailles différentes. On coupera un fil noir et un fil rouge sur lesquels on soudera des rallonges de longueur quelconque. En cas de problèmes de fonctionnement, on pourra éventuellement souder un condensateur de 100 nF au bornier à vis en dessous de la carte.
Utilisation
Il faut d'abord convertir le fichier du format INTEL HEX. Il faut pour cela exécuter le programme CONVERT.BAS. Après un petit message vous rappelant que ce programme a un auteur, celui-ci vous demandera d'entrer le nom du fichier source avec son extension, puis celui du fichier de destination. La conversion ne nécessite que quelques secondes dans le cas d'un fichier d'une dizaine de lignes, et peut aller jusqu'à plusieurs minutes sur un P.C. XT avec un fichier de plusieurs centaines de lignes à analyser.
Puis, il faut lancer le programme de téléchargement. Ici, il faut choisir le bon. En effet, il y a deux versions. La première, EPR.BAS, permet d'utiliser la carte de décodage d'adresses. La seconde, PARAEPR.BAS, permet d'utiliser le port parallèle de l'ordinateur. Il est important de signaler que ces deux programmes sont respectivement configurés pour fonctionner avec l'adresse H300 et le port LPT1 de l'ordinateur. Au cas où vous voudriez reconfigurer ces programmes, il faut modifier toutes les lignes faisant appel aux sorties. Voici les commandes disponibles:
Pour EPR.BAS, il faut utiliser les touches du pavé numérique :
1 : Ecriture d'un fichier dans la 2864.
Cette commande permet le chargement d'un fichier dans la mémoire après sa conversion avec le programme CONVERT.BAS. Chaque octet est vérifié juste après avoir été écrit pour assurer la bonne programmation de la mémoire.
2 : Lecture de l'EEPROM dans un fichier.
Cette commande permet de charger le contenu de la 2864 dans un fichier au format spécifique du programmateur en vue d'une réécriture prochaine dans une autre mémoire.
3 : Copie d'une EEPROM.
Cette commande est en fait l'exécution successive de la commande 2 puis de la commande 1 en prenant comme nom de fichier arbitraire COPIAGE.TMP.
4 : Effaçage total de la 2864.
Cette commande ne présente pas d'intérêt particulier car chaque position de la mémoire s'efface automatiquement pendant l'écriture. Elle peut être néanmoins utile en cas de problèmes de programmation.
5 : Test de virginité.
Comme la commande précédente, cette commande-ci ne présente pas plus d'intérêt. Elle permet juste de vérifier en association avec la commande 4 si la mémoire est bien effacée si le programmateur présente un dysfonctionnement.
6 : Modification du contenu bit à bit.
Cette commande permet après avoir précisé les coordonnées x et y d'une position mémoire de lui assigner une nouvelle valeur en décimal. Elle a été ajoutée à des fins de test, mais peut-être qu'un lecteur lui trouvera un intérêt ?
0 : Quitter.
Cette commande-ci ne nécessite aucune explication.
Voici maintenant les commandes disponibles pour PARAEPR.BAS. Il faut toujours utiliser les touches du pavé numérique:
1: Ecriture d'un fichier dans la 2864.
Le nom de cette commande ressemble bizarrement à la même du programme EPR.BAS. Il n'en est pas de même du contenu. En effet, comme le programmateur utilisé avec un port parallèle n'est qu'unidirectionnel, il n'y a plus de vérification possible.
2 : Effaçage total de la 2864.
Cette commande est équivalente à celle de la version EPR.BAS.
Dernière chose à signaler, ces programmes ne tournent que sous un Qbasic ou un QuickBasic.
Voilà, il ne vous reste plus qu'à passer à l'action.
Nomenclature
Résistances
33 straps (15 verticaux, 18 horizontaux)
R1 à R3 : 10 kW (marron, noir, orange)
Circuits intégrés
IC1 : 8255
IC2 : EEPROM 28C64
Divers
1 bloc 8 DIP switch
1 prise Centronics 36 broches femelle
1 prise SUB D25 femelle