picard01
L´art des PIC : une autre approche
Notre ouverture sur les microcontrôleurs, depuis aujourd´hui seize mois (premier article par “Pierre Psi”, en mars 2007, de la série PicTrain) a connu un succès certain : nombreux courriers d´encouragements et, surtout, de nombreux lecteurs s´investissant dans l´aventure — et partageant avec Ptitrain (“PatRuff”, Christian Gauthier, J.-C. Grimaldi, Raymond Charlet), ou la liste dédiée Ptitrainmatique, ou entre eux de façon discrète (mais je le sais !)...
Moi-même j´hésitais depuis quatre-cinq ans à passer de la logique “discrète” à la logique programmée : c´est, comme à des dizaines d´entre vous, l´intervention de Pierre Psi qui m´a donné le nécessaire coup de pied au derrière, grâce à son choix (véritablement “inspiré”) du plus petit, du plus répandu, du plus moderne et du moins cher des composants de cette “technologie”...
Ouf, j´allais pouvoir enfin matérialiser des projets aussi simples que le Tourniket complexifier les idées sur le Super4017 mais aussi simplifier le ver luisant, réaliser des affichages, voire requinquer la rubrique T.T.T. dont les derniers développements devenaient tels, que même s´ils fonctionnaient correctement , je me refusais à publier des travaux aussi... compliqués.
Car la logique “discrète” en prend, de la place, et des soudures : ce décodeur , ultra-simple à concevoir, demandera des heures de prise de tête pour dessiner l´implantation la plus simple et compact en Cimec et des jours pour la même chose en circuit imprimé...
Enfonçons encore le clou
Enfonçons encore le clou : le schéma ci-contre , lui, n´a pas été simple à concevoir (quand on appuie sur un ou plusieurs des quatre boutons poussoirs de gauche il se produit un événement parmi six possibles). Il a fallu utiliser les épouvantables tables de Karnaugh (voyez à “Karnaugh” sur Google !) ou bien la solution bizarre des minterms et maxterms (dont j´ai en un an tout oublié, mais qui me donne encore des cauchemars)...
Rajoutons une couche : ce schéma théorique utilise deux portes inverseuses alors qu´elles sont vendues par six, des portes et alors qu´il n´existe pratiquement que des ou - non-ou, etc. Pour le fabriquer en vrai, il faut donc traduire tout cela en portes différentes — ce qui équivaut non seulement à des semaines de transes mais à une impossibilité de parution (je ne vais pas dire à mes lecteurs : faites comme moi...).
À peu près tout ce que viens de critiquer dans la logique “discrète” est l´affaire des PIC, car toutes les connexions, les soudures, sont à l´intérieur et gérées par... du traitement de texte ! Une fois le comportement décrit (“si appui sur bouton gauche, alors accélérer le train... si appui prolongé sur bouton de droite alors ceci cela...”), on le saisit en mode texte, on grave le PIC, on teste... Quand on est content (jamais la première fois !), on publie le code et tout le monde peut copier, modifier, améliorer...
Je me suis donc lancé dans le travail perso sur les PIC, après avoir essayé et admiré toutes les réalisations de Psi, PatRuff et leurs amis...
C´est là que j´ai pigé que “yaka faire du traitement de texte” était une vue de l´esprit, et que le boulot m´était ardu, à cause de l´utilisation de l´assembleur de Microchip.
Un peu d´histoire
Je ne suis ni un débutant ni un professionnel de la programmation ; si “on” ne me faisait pas changer d´ordinateur tous les quatre ans, et si j´avais pu faire seulement une étude prolongée d´un environnement, je serais (depuis 1980) un vieux routier mais la vie (Bill Gates, l´Éducation nationale, la mode d´Internet...) en a décidé autrement et je galère depuis ces quasi-trente ans entre Pascal UCSD (en français le matin, en anglais l´après-midi, loi Toubon obligeait), assembleur Z80, Basic ZX81, Pascal sur Sord (avec des étiquettes collées sur chaque touche du clavier), MS-Basic, BBC Basic...
... Assembleur 6502, Apple Pascal pour 68000, Applescript, Z-Basic, C, Java, HTML, Javascript, CSS, voire Python (rien que pour utiliser PaintShop), Grep, batch, Excel, Word Basic... Le dernier en date de ces 34 (je les ai comptés) langages étant Autohotkey pour faire des macros (géniales) sous XP et Vista !
Croyez-vous que cette accumulation à la Prévert m´ait formé ?
Non, ou peu, car chacun de ces 34 langages est frappé de la malédiction de Babel : “Tu ne comprendras rien à ce que dit ton voisin”...
Nonobstant, on pourrait quand même en un mot dire que le passage de (par exemple) Excel à Pascal se résume à des traductions de syntaxe : =si(Revenu<>5000; "Heureux"; CouleurRouge) pour l´un, pour l´autre if Revenu <> 5000 then writeln('Heureux') else Couleur:=Rouge; (Remarquez l´énigmatique signe := on dirait un smiley). Le langage C est carrément normalisé et échangeable, la différence entre les Basic est cosmétique, les Pascal sont frères...
Mais les concepteurs se sont amusés à semer d´autres embûches, comme le choix de la présentation des commentaires (et on nous dit toujours “mettez des commentaires pour vous y retrouver par la suite”) : je pense qu´on doit compter 20 possibilités de syntaxe différentes pour une chose qui n´est même pas utilisée par l´ordinateur !... Vous travaillez sous HTML <!-- voici une remarque --> , en C /*voici une autre remarque*/, en assembleur PIC ;voici une remarque, en Basic ´en voici une autre, et chaque invention logicielle génère son vocabulaire, sa syntaxe, sa ponctuation...
Revenons-en à nos PIC
Or donc — revenons-en à nos PIC.
J´avoue : je ne sais pas, après un an, manipuler à l´aise l´assembleur !
Je sais recopier, comprendre, modifier, améliorer... mais mis au pied du mur devant un projet aussi simple que le Balbid, je sèche. Je pense que le bât blesse au niveau des compteurs (je n´arrive pas à traduire un organigramme sans le secours des for...next des langages évolués), au niveau des tests (je ne sais pas traduire un pauvre if...then...else en codes PIC bsf bcf decfsz..., sauf à passer une heure sur chaque “losange” de l´organigramme), et, comme j´hésite encore au sujet des BANK, je vous passe mes soucis sur les interruptions ou le rôle si différent des movfw movwf !
Bref, en assembleur, je rame.

J´ai été tenté d´aller voir ailleurs, donc, comme je l´ai (hélas !) fait à d´innombrables reprises en informatique (le plus crève-coeur : Windows remplaçant Macintosh, suite à la défection de Apple !)...
Mon itinéraire a été guidé, comme pour le Meccano électronique, par : la simplicité, la gratuité (le plus possible), la reproductibilité (selon ma philosophie, rien ne sert de faire quelque chose si les autres ne peuvent en faire autant ; et cela s´applique au tournage-fraisage aussi bien qu´à la peinture !), l´abondance de documentation (surtout sur Internet, car les livres d´électronique sont hors de prix, ou en anglais), la modernité (ne pas utiliser un outil délaissé par ses concepteurs en 2004 !), l´ouverture (pouvoir aller du simple au complexe sans devoir changer d´outil)... Et un peu par hasard, j´ai opté aussi pour l´intégration : un ordi, un câble USB et une carte, dont le PIC n´a même pas à être extrait.
N.-B. Les cartes programmateurs USB sont bizarrement encore rares, alors que les ordi modernes n´ont plus de prises RS232. Aussi à prendre en compte : pas de soucis avec Vista alors que l´installation de Microchip sur cet O.S. est assez... délicate.
J´ai choisi : un ordinateur sous Windows (désolé...), un langage évolué (le compilateur MikroBasic gratuit de MikroElektronika), le programme PicFlash (de la même source, intégré, gratuit) et enfin une carte EasyPic qui sert à la gravure in situ du PIC aussi bien qu´aux tests et à l´expérimentation, sans même devoir ôter le PIC de la carte ; carte qui comporte boutons poussoirs, leds, sept segments, RS232, quartz, commande via USB — bien plus qu´il ne nous en faut pour commencer, mais à un prix presque incroyable de 129 dollars sur Internet ou 129 euros via un distributeur français !
C'est moins que le prix des composants présents sur la carte, la raison du phénomène serait-elle l´origine, ex-yougoslave, du matériel ? Il y a des supports pour toutes les tailles de PIC, jusqu´aux gros 40 pattes qui pilotent des écrans graphiques à cristaux liquides, des sorties USB, des interfaces MP3... J´ai ajouté dans un petit espace vide une “plaque sans soudures” au format d´un Cimec... (La photo représente une “vieille” carte version 4 aujourd'hui remplacée par la version Easypic 5 ; les différences sont minimes.)
Notez bien que le code .HEX qui sort par logiciel pourrait être gravé dans le PIC avec votre programme actuel (par exemple IC-Prog utilisé par Psi) et votre carte actuelle sans aucun problème, si ce n´est de mettre et d´enlever le PIC à chaque modif, ce que EasyPic fait, sans manip, en moins de huit secondes !
Tous les pourquoi
Pourquoi MikroBasic et pas PicBasic ou un des cinq autres  ? Pourquoi MikroElektronika ? J´ai longuement (six mois) testé le pour et le contre. Cela fera l´objet de débats, que j´espère sans haine ( je crains surtout la réaction des C-istes !), sur la liste Ptitrainmatique. En revanche je réponds tout de suite à votre question :
Est-ce qu´on abandonne PicTrain ? Est-ce que ce qu´on a déjà fait avec l´assembleur est lettre morte ? Est-ce qu´on reprend tout de zéro ?
Non. Vous ne pourrez pas suivre la suite de mes aventures si vous n´avez pas lu et compris PicTrain : ce qui s´y trouve concerne à 75 % tous les PIC, car un langage évolué (comme son nom l´indique) n´est qu´une évolution du langage de base du microP, l´assembleur. Psi a fait un travail pédagogique en français quasi unique (l´autre phénomène étant saint Bigonoff, mais il se fiche du train)  !
Je vous demande de voir cette nouvelle série Basic, non comme concurrente de Pictrain, mais comme la suite (avec des PIC) du Meccano électronique : je n´ai pas envie de réécrire ou de vous voir réécrire une alim à boutons poussoirs comme Pictrain2 ou traduire TramPic. Mais plutôt de vous permettre de concevoir en dix minutes une minuterie simple comme le désormais célèbre montage du Meccano, le mst555a ou un feu rouge routier, ou un “lanceur de dé” pour décider au hasard qu´un train s´arrête ou pas dans une gare, ou la gestion (qui pourra devenir hyperréaliste) d´un grumier à motorisation par FÀM... c´est-à-dire beaucoup de ce qui a été fait en Meccano électronique.
Je ne cache pas en revanche que le Youbiton ou le Cheniyou seront, eux, des proies faciles pour le Basic et bénéficieront du passage à l´environnement évolué : il devenait (selon moi) excessif de devoir tant écrire et réfléchir pour engendrer des actions aussi primaires !
Dans quelques jours, le premier article de la série concernera une minuterie simple dont voici le programme au complet ! Et, pour que le clou ne ressorte plus du trou, voici une comparaison de schéma entre une minuterie à 555 et la même avec un PIC...

Si vous trouvez une erreur ou une chose pas claire dans cette page, faites-le-nous savoir par mail, au plus vite, merci !
Les mots marqués d´un astérisque (*) sont ou seront expliqués dans le “P´tit dictionnaire du Meccano électronique”.
Bibl. : PicTrain, divers. — Descr. : 555, PIC, minuterie, MikroBasic
 

Jidé
août 2008

Rev 10/12/08
Ptitrain, l´e-magazine du train éclectique. — Directeur de la publication : Christophe Franchini.
Rédacteur en chef : Jean-Denis Rondinet