La multiplication des pins (3)

Première réalisation pratique : “Multipin1”
Pour cette première réalisation pratique, copiable ou modifiable par chacun d´entre vous, nous nous sommes arrêtés à un défilement ininterrompu de six leds, grâce à trois pattes du petit 12F675, mais le principe sera le même de 4 à 20 leds (oui, 20, avec utilisation des pins 4 et 5 — voyez les pages précédentes de la présente série si vous êtes dubitatif. Le maximum avec un PIC courant et pas cher (p. ex. le 16F628 avec 15 pattes utiles) serait de commander 15 × 14, soit 210 leds...).

FAQ Séraphin, je te vois venir : Pourquoi encore un chenillard ? C´est niaiseux, un microP pour un chenillard si simple ? — Eh, eh, c´est qu´il est simple aujourd´hui, mais qu´il pourrait bien se compliquer bientôt 

Et voici le grand principe : les 3  “états”, Tri-State, d´où le mot TRISIO...
Voici le petit schéma (l´alimentation a été négligée)...

Il suffit de forcer, une à une, les sorties 0, 1 et 2 à passer à l´état (+ 5 volts), ou bien à l´état (zéro volt) ou bien à l´état Z de “haute impédance” (la patte concernée peut être considérée comme dessoudée !).
Au niveau du microP, la haute impédance se commande via TRISIO, en forçant le bit concerné à être une entrée, donc au niveau (mnémonique destinée aux angloglottes  : c´est-à-dire 1, ressemble à i, comme Input) ; les autres bits restent à zéro (mnémo : c´est-à-dire 0, ressemble à o, comme Output). (Attention : Z est choisi dans le monde de l´électronique comme le symbole de la haute impédance, mais cela n´a rien à voir avec Z, le célèbre bit du registre STATUS, dont nous nous fichons aujourd´hui.)
Et comme à l´habitude, les bits forcés à être des sorties sont portés à via GPIO.
Utilisons un tableur pour créer ce petit dessin représentant tous les bits des deux registres TRISIO et GPIO. (Un tableur, si, si, car plus tard nous verrons comment générer le barbant code assembleur... automatiquement avec Excel ou Open Office !)
Dans TRISIO, les quatre bits de gauche sont inutilisés aujourd´hui, et le bit 3 reste à 1 car il ne peut pas changer (par construction, GP3, la pin 3, est toujours une entrée).
On traduit chaque ligne du tableur en binaire (ce qui est le plus pratique pour tripoter les bits) ou en décimal ou en n´importe quel autre mode qui vous serait plus habituel, naturel  —par exemple :
TRISIO pour la Lampe 1 :
tableur x x x x 1 i 0 0
soit en binaire b´00001100´
soit en décimal d´12´ (8+4+0+0)
soit en hexadécimal h´0C´
À vot´ bon goût..
Dans GPIO, les quatre bits de gauche et le bit 3 sont ignorés, inutilisés. De même que les bits marqués Z, à haute impédance. Ne nous intéressent que les bits + ou 0 et 1. Qui passent eux aussi à la traduction dans votre système de numérotation préféré — par exemple : GPIO pour la Lampe 1 :
tableur x x x x x z + 0
soit en binaire b´00000010´
soit en décimal d´2´ (0+0+2+0)
soit en hexadécimal h´02´
Vous aurez remarqué que TRISIO est le même pour deux lampes qui se succèdent ?
Voici le plan (vu à la loupe !) des composants sur une plaque d´essais sans soudure (ou sur un Cimec, c´est pareil).
ATTENTION : les diodes sont montées tête-bêche, suivez bien le schéma de principe !
ATTENTION encore : le 12F675 a un brochage contraire à tous les autres circuits du monde, avec zéro volt en haut et le pluss en bas ! Si vous le montez à l´envers, pchhhh, et en plus vous risquez de vous brûler (expérience vécue...).
Nous ne sommes pas dans une série d´initiation aux microP (qui existe, et se trouve ici), mais dans du concret, du cambouis, aussi notre intro sera sèche : le minimum légal !
Remarquez l´initialisation indispensable des deux registres pièges, CMCON et ANSEL (bizarrement, à la mise en marche, le microP est conçu pour ne pas travailler en tout-numérique, mais au contraire pour aller faire des galipettes analogiques !).
Puis Debut du programme : allumage de la led n° 1 :
La partie casse-pieds du travail (c´est ce que nous essaierons plus tard de faire faire par un tableur), la saisie de chiffres, et de chiffres :
Toutes leds ont été allumées, une par une... On recommence jusqu´à la fin des temps :
Un délai , afin de voir les leds s´allumer lentement (n´oublions pas que sans temporisation les leds brilleraient... un millionième de seconde !) :
(Le code ci-dessus vient de la page Cheniyou.)
Et enfin un détail... qu´il ne faut pas oublier...

Tous les fichiers de travail, .ASM (Multipin3.asm), .HEX et .INC, notamment le fichier SP_delai_version1.inc de la rubrique Briquothèque de Ptitrain, se trouvent comme d´habitude ici.
Jidé
06.12.2007

Cette page n´est pas à considérer comme une initiation aux PIC ; le lecteur est censé avoir lu les articles de PSi, à retrouver sur leur sommaire, ici.
Bibliogr. : Microchip, datasheet du 12F675, leds, ds91029
Ptitrain, l´e-magazine du train éclectique. — Directeur de la publication : Christophe Franchini.
Rédacteur en chef : Jean-Denis Rondinet