Bonjour.
Voilà, je me lance dans le WIP de fabrication d'un outil qui me manque quand je dépanne un PCB.
En effet, il arrive qu'un bug graphique ou tout autre problème ne soit présent qu'à un endroit de l'écran.
Lorsque je promène la sonde de mon oscilloscope ici et là sur le PCB malade, le déclenchement de l'affichage de l'oscillo se fait au p'tit bonheur la chance.
C'est à dire que je suis certain de ne jamais voir 2 fois la même chose car les différentes RAM, ROM et autres composants sont utilisés en permanence pour générer l'image.
En pratique, je vois un signal logique qui change à toute vitesse et qui n'a rien de cohérent.
Ce dont j'ai besoin, c'est d'un outil qui analyse l'image (en tout cas son signal de synchro) et qui puisse me permettre de piloter le déclenchement de mon oscillo à partir de la Nième ligne affichée...
Ainsi, si au milieu de la Nième ligne affichée se trouve un sprite buggé, alors je pourrais analyser les signaux électroniques du PCB au moment exact où il est en train de générer cette Nième ligne, et non pas tout autre instant aléatoire.
Là, normalement, j'ai une chance d'observer le PCB tenter de lire les data du sprite en RAM ou en ROM et de comprendre pourquoi il y a un problème.
L'outil en question, je l'ai baptisé "LineTrigger".
Voici ce que je pense réaliser :
- affichage en clair du numéro de la ligne en cours de synchro
- affichage en clair du délai (probablement en µs) supplémentaire pour synchro au milieu de la ligne choisie
- utilisation de boutons pour facilement changer le numéro de la ligne et le délai
- composants pas trop chers, et facile à trouver
- tout mon travail sous license GPL (http://fr.wikipedia.org/wiki/Licence_publique_générale_GNU) / Creative Common (http://fr.wikipedia.org/wiki/Licence_Creative_Commons)
Voici l'état d'avancement :
- un microcontrôleur PIC (http://fr.wikipedia.org/wiki/Microcontrôleur_PIC) modèle 16F84A-20 (http://fr.wikipedia.org/wiki/PIC_16F84_de_Microchip) sera utilisé (coût : 6,00 € (http://www.electronique-diffusion.fr/product_info.php?products_id=79729))
- un afficheur LCD de 2 lignes de 16 caractères sera utilisé (coût : 6,00 € (http://www.electronique-diffusion.fr/product_info.php?products_id=92107))
- je pense me simplifier la vie en utilisant un séparateur de synchro LM1881 (coût : 4,30 € (http://www.electronique-diffusion.fr/product_info.php?products_id=49190))
La réalisation actuelle :
(http://gamoovernet.pixhotel.fr/pics_gamoovernet690px/20131010220101-f4brice-20131010-210605-7645-img.jpg) (http://gamoovernet.pixhotel.fr/pics/20131010220101-f4brice-20131010-210605-7645-img.jpg)
Le PIC est sur un support "ZIF (http://fr.wikipedia.org/wiki/Zero_insertion_force)" (Zero Insertion Force) de récupération, car il fait de nombreux aller-retours entre la plaque d'essais et le progammateur !
(http://gamoovernet.pixhotel.fr/pics_gamoovernet690px/20131010220316-f4brice-40.png) (http://gamoovernet.pixhotel.fr/pics/20131010220316-f4brice-40.png)
La procédure d'initialisation de l'afficheur est faite, avec les bons timings !
J'utilise mon analyseur logique (http://www.tech-tools.com/DV3200-logic-analyzer.htm) pour examiner de près ce que j'envoie à l'afficheur LCD, et avec quels timings.
J'utilise une machine virtuelle Zindoz XP car le logiciel fourni avec l'analyseur ne fonctionne que sur ce système d'exploitation.
(http://gamoovernet.pixhotel.fr/pics_gamoovernet690px/20131010220121-f4brice-20131010-210536-7643-img.jpg) (http://gamoovernet.pixhotel.fr/pics/20131010220121-f4brice-20131010-210536-7643-img.jpg)
Le pilotage de l'afficheur semble correct !
À suivre...
Bonsoir.
J'ai avancé sur le schéma :
(http://gamoovernet.pixhotel.fr/pics_gamoovernet690px/20131012220220-f4brice-53.png) (http://gamoovernet.pixhotel.fr/pics/20131012220220-f4brice-53.png)
J'utilise la suite d'outils open-source "gEDA" : http://www.geda-project.org/ (http://www.geda-project.org/).
Rien de bien compliqué une fois que les concepts essentiels ont été compris, mais c'est la première fois que j'utilise ce genre d'outils. D'habitude, je fais ça "à la main" avec les transferts Mecanorma...
Juste pour voir, j'ai commencé aussi le futur PCB :
(http://gamoovernet.pixhotel.fr/pics_gamoovernet690px/20131012220455-f4brice-36.png) (http://gamoovernet.pixhotel.fr/pics/20131012220455-f4brice-36.png)
Rien d'extraordinaire, à part que j'ai dû faire moi-même l'emprunte ("footprint") de plusieurs éléments :
- l'afficheur LCD Seiko L1652 acheté chez Électronique Diffusion (http://www.electronique-diffusion.fr/product_info.php?products_id=92107)
- la résistance variable pour le contraste du LCD (je ne comprends par pourquoi ça n'existait pas)
- les boutons poussoirs
J'ai simplement tenté un routage automatique à la barbare...
Les pistes seront à reprendre en manuel pour améliorer tout ça.
J'ai aussi commencé à mettre en oeuvre le LM1881.
Là, il y a un fonctionnement que je ne comprends pas...
Je l'ai câblé comme sur mon schéma plus haut.
Je lui injecte sur sa broche #2 à travers un condo de 100 nF le signal de synchro généré par un PCB qui fonctionne parfaitement bien.
En sortie, sur sa broche #3, je devrais avoir un signal débarrassé des tops de synchro horizontale.
Pourtant, voici ce que je mesure :
(http://gamoovernet.pixhotel.fr/pics_gamoovernet690px/20131012221250-f4brice-01.png) (http://gamoovernet.pixhotel.fr/pics/20131012221250-f4brice-01.png)
J'ai vérifié à l'oscillo, et ce n'est pas une erreur de l'analyseur logique.
J'ai essayé avec un 2e LM1881 et aussi avec 2 autres PCB, j'ai toujours le même fonctionnement.
Si quelqu'un a une idée du pourquoi mon LM1881 ne filtre pas les top de synchro H, je suis preneur de l'explication !
Si je ne peux pas faire fonctionner le LM1881 comme je le pensais (extraire la synchro verticale sans transpirer), je risque de devoir le faire en pur logiciel et là ça risque d'être tendu (mais intéressant)...
À suivre...