Gamoover

[move]Vous vous épilez le maillot et collectionnez les bornes d'arcade avec des hommes musclés dessus ? Alors soyez les bienvenus sur Gamoover ! [/move]

Réalisation d'un générateur de mires avec un Arduino

Démarré par olc, Dimanche 01 Novembre 2020, 22:59:49 PM

olc

Modération : Sujet scindé depuis  Etude/Réalisation d'un générateur de mires 15/24/31 kHz de gc339

Mon MTC900 est démonté pour dépannage, je souhaitais en profiter pour refaire les réglages. Du coup, j'ai entrepris de réaliser un équivalent du générateur de mlre de @gc339 sur une base Arduino Uno (je me limite au 15 KHz pour l'instant). Sauf que je tourne en rond sur un problème de synchro : j'ai vérifié et revérifié dans tous les sens et je ne vois pas où est le problème.



Voici quelques screen shots des timings mesurés à l'analyseur (affichage de lignes blanches, pour faciliter les mesures) :







Niveau électronique, mon moniteur de test (un BVM Sony) est connecté directement aux sorties de l'arduino.

Si quelqu'un à une idée ... :) Merci d'avance !

kaneda56

Alors je suis loin d'être spécialiste, mais il n'y a pas une spécificité du BVM au niveau de la synchro justement? Tu as essayé sur un moniteur différent?

"Arrête de te croire fort avec tes roll cancel!!!"
Paroles de Sac

olc

Non, mais je n'ai aucun problème avec mes PCB (outrun, streetfighter, ...) & pandora box, mire d'un convertisseur CGA etc... et lorsque je compare les signaux à l'analyseur je n'arrive pas à voir ce qui diffère vraiment (à part que chacun semble faire un peu à sa sauce). Cela dit, il y a p-e des subtilités par rapport aux niveaux électriques mais j'ai testé différentes configs sans que cela change quoi que soit au problème.

Cette nuit, je me suis demandé si je ne serais pas passé à côté de qq chose d'évident relative au mode entrelacé. Je vais creuser de ce côté là.

Merci en tout cas pour ta réponse.

--
Olivier

gc339

Bonjour à tous.

Le programme de l'Arduino est écrit en langage Arduino ou en assembleur?
Le repos, c'est fait pour les jeunes. Ils ont toute la vie devant eux. J. Gabin/M. Audiard





olc

#4
En assembleur, impossible sinon de respecter les timings (je donnerai le source quand il sera un peu stabilisé).

gc339

#5
Citation de: olc le Lundi 02 Novembre 2020, 10:30:28 AM
je me suis demandé si je ne serais pas passé à côté de qq chose d'évident relative au mode entrelacé.

Le mode entrelacé est plus sophistiqué que le mode progressif car le nombre de lignes dans une image doit être impair. Ceci impose qu'une impulsion trame sur deux débute au beau milieu d'une ligne alors qu'en mode progressif elles sont toutes synchrones avec l'impulsion ligne.

Pour une mire simple, le mode progressif suffit, les trames sont toutes identiques car elles comportent toutes le même nombre de lignes, les impulsions d'égalisation ne sont alors plus nécessaires.
Le nombre de lignes par image est donc égal à celui d'une trame quelconque, c'est pour cela que la fréquence ligne en VGA est le double par rapport au CGA entrelacé afin d'obtenir la même définition verticale.


Détails pour 525 lignes entrelacées et 30 images/seconde.




Le repos, c'est fait pour les jeunes. Ils ont toute la vie devant eux. J. Gabin/M. Audiard





olc

OK, merci beaucoup pour l'explication, c'est très clair. C'est en relisant une doc que j'avais eu un doute ... je commence à tout mélanger à force de tourner en rond !

olc

En mesurant au scope, j'ai constaté un peu de « gigue » sur les signaux qui ne se voit pas à l'analyseur logique. Je vais regarder du côté des timers que je n'ai pas désactivé, avec un peu de chance cela pourrait expliquer ces « glissements » de phase.

--
Olivier

spectroman


olc

#9
Bon, et bien c'était définitivement les timers ! Une fois les interruptions globales désativées avec l'instruction `cli`, tout est rentré dans l'ordre. Pas mal de temps de perdu mais cela m'a permit de sécouvrir que mon scope avait une fonction très pratique pour synchroniser l'affichage sur une ligne en particulier ! :)



Je vais continuer le développement afin d'ajouter les autres mires.

@spectroman: un uno et un nano, avec une horloge à 16 MHz, qui permet de générer des patterns pour le 15 KHz. J'ai approvisionné un Arduino Due cadencé à 84 MHz, histoire d'essayer d'aller jusqu'au bout de la démarche tel que l'a fait gc339 à l'époque. Les Arduinos sont peu chers et on les trouve facilement, cela pourra peut-être rendre service à d'autres membres du forum.

AsPiC

Bonjour olc, j'ai scindé tes posts du sujet initial car je penses qu'il intéresse pas mal de monde et je suis sûr que tu va nous partager tes avancés afin que l'on puisse faire comme toi :) ^-^

olc

Très bonne idée, Merci AsPiC. Je suis un peu débordé en cette semaine, mais je ferai part de mes avancées sur ce fil dès que possible.

olc

Bonjour,

Une première version, capable de générer une mire composée de 8 bares de couleurs verticales en 15 KHz est disponible. Cela doit fonctionner sur tout Arduino cadencé à 16 MHz (testé sur Uno et Nano).

Le source en assembleur est accessible sur github: https://github.com/olc/arduino-rgb-pattern-generator/tree/main/15khz_pattern_generator
Il suffit d'ouvrir le projet avec l'IDE Arduino afin de compiler puis transférer le programme.



Je vais maintenant ajouter d'autres mire, en prenant modèle sur le développement de gc339 dans son projet à base de micro-contrôleur Parallax.

tilowil

#13
Salut,

J'aime beaucoup l'idée. Je suis ta progression avec interet.  ^-^

j'avais trouvé un exemple avec un Attiny2313, mais je prefère un arduino.

A+

olc

Le générateur de mire Arduino est désormais capable d'afficher une grille en plus des bares de couleurs. Le passage d'une mire à la suivante se fait grace à un bouton poussoir connecté à PB0.


olc

Ajout d'une troisième mire : croix. Enjoy! :)

--
Olivier