Le Deal du moment : -50%
-50% sur les tongs Havaianas Brasil en noir
Voir le deal
11 €

[WIP 60%] Normaliser un signal vidéo

Page 4 sur 4 Précédent  1, 2, 3, 4

Aller en bas

[WIP 60%] Normaliser un signal vidéo - Page 4 Empty Re: [WIP 60%] Normaliser un signal vidéo

Message par Bouz le Lun 23 Mar 2020 - 13:07

@poup a écrit:Ha mince, courage. Si tu es bloqué chez toi, ça te laissera du temps pour explorer tout ça.

Je bosse de chez moi, mais ça me laisse un peu de temps quand même Wink

@theWave a écrit:Hey Bouz, bricolage propre l'alim, c'est net.

Si tu as reçu 2 puces identiques c'est peu probable que tu aies cramé les 2... Je pencherai plus sur contrefaçon ou signal pas bon.
Tu les as prises sur Ebay ?

Oui, commandé sur eBay. Vu que ça ne court pas les rues et que c'est relativement cher, j'en ai pris 8.
Pour ce qui est du signal, il faudrait peut-être que je teste avec une source composite standard, et pas avec un signal de synchro d'arcade bricolé avec une diode zener.
Il faut que je trouve ça parmi mes vieux machins!
La 1881 se comporte bien avec un signal de synchro nu. J'espère que je ne vais pas devoir générer un signal composite à partir du RGBS du JAMMA juste pour isoler la synchro derrière!
J'ai les puces SONY qu'il faut pour ça, mais ça va complexifier un peu le montage pour rien!

Bouz
Mintissime !
Mintissime !

Messages : 1085
Date d'inscription : 11/06/2019

https://www.youtube.com/user/openio

Revenir en haut Aller en bas

[WIP 60%] Normaliser un signal vidéo - Page 4 Empty Re: [WIP 60%] Normaliser un signal vidéo

Message par Bouz le Mer 22 Avr 2020 - 0:22

Et je projet est de retour...
Quelques révélations ces derniers jours / heures!

Tout d'abord, la qualité pourrie de l'image sur mon banc de test...
Après avoir fait ma carte JAMMA intermédiaire pour mon twin stick, et la petite carte vidéo qui va avec pour brancher sur une télé en Péritel RVB, je suis retombé sur une image pourrie. A la limite de la folie, après un samedi après-midi complet d'investigation, j'ai fini par trouver que je suis un boulet et que les câbles Péritel croisent les fils sync in et sync out! J'ai changé de pin et l'image était parfaite ! Ca, c'est fait.

Maintenant, restent les ondulations. Si quelqu'un a regardé la mini vidéo, on voit le signal généré rouge faire des petits sauts temporels alors que le signal source bleu ne bouge pas.
Et ça, je viens de comprendre pourquoi! Ce n'est pas lié, comme je le pensais, au temps d'exécution d'une instruction (même si ça joue un peu). C'est au fait que, pour produire des pulsations hsync pendant un VBL, ma boucle principale passe absolument tout son temps à lire un timer, pendant que le gestionnaire d'interruption reproduit avec un déphasage les impulsions d'entrée.
Eh ben cette lecture de timer en boucle nécessite le calcul d'une valeur gérée par un timer hardware, et nécessite de couper les interruptions le temps du calcul (mais ça, on ne le voit pas, on appelle juste une fonction).
Du coup, vu qu'on ne fait que ça en boucle, eh ben on retarde la prise en charge de l'interruption déclenchée par le hsync, de manière différente suivant à quel moment l'interruption est déclenchée.
Ajoutons à cela que pour pouvoir utiliser ces fonctions de gestion du temps sur un microcontrôleur, on active de fait un gestionnaire d'interruptions matérielles sur un timer qui turbine, multipliant les moments où le système d'interruption n'est pas dispo pour s'occuper de nous!

Bon, en résumé, je dois:
- désactiver les fonctions de gestion de temps le noyau des deux microcontrôleurs (celui qui sépare hsync et vsync en produisant les hsync manquants, et celui qui génère un nouveau signal déphasé)
- réécrire mon algo de suivi de synchro en n'utilisant plus de fonctions temporelles, mais des séquences d'instructions en assembleur de durée connue.
Me voilà bien.

En tout cas, ça relance le truc, je suis bien content, il commence à durer un peu, ce projet!
OK, je ne suis pas sûr d'avoir été clair.
Bouz
Bouz
Mintissime !
Mintissime !

Messages : 1085
Date d'inscription : 11/06/2019
Age : 42
Localisation : Saint Bauzille de Putois

https://www.youtube.com/user/openio

Revenir en haut Aller en bas

[WIP 60%] Normaliser un signal vidéo - Page 4 Empty Re: [WIP 60%] Normaliser un signal vidéo

Message par Joker le Mer 22 Avr 2020 - 12:01

Cool bon courage !

_________________
"Il est indispensable d'avoir une euro dans un setup arcade" :Raditz 2/02/2018.


[WIP 60%] Normaliser un signal vidéo - Page 4 Sign_m10

John Caffe le 25/09/2018:"Je comprends mieux ta remarque. Toi, t'es au moins ingénieur, et probablement inscrit à Mensa "
Joker
Joker
Scellé
Scellé

Messages : 3741
Date d'inscription : 01/10/2016
Age : 42
Localisation : Bordeaux

https://youtu.be/6u-tp2f_Pt8

Revenir en haut Aller en bas

[WIP 60%] Normaliser un signal vidéo - Page 4 Empty Re: [WIP 60%] Normaliser un signal vidéo

Message par Bouz le Dim 26 Avr 2020 - 21:07

Tests effectués une partie non négligeable du week-end...
- remplacement de toutes les temporisation par des timers hardware pour plus de précision
- des interruptions matérielles lancent des timers hardware
- tout le reste du code tourne à temps constant, sans se faire parasiter par des interruptions
- la stabilité du signal est visiblement bien meilleure à l'oscillo
- des décalages de l'ordre de quelques centaines de nanosecondes sont visibles
- je remets tout sur le circuit soudé précédemment
- j'essaie
- je peux régler la position au pixel près horizontalement, ce qui n'était pas le cas avant (c'était plutôt de l'ordre de 4 à 8 pixels)
- ça ondule toujours horizontalement à l'écran, bordel de flûte!

Il me reste 3 solutions:
- lâcher l'affaire (pas encore)
- tenter ça avec un microcontrôleur plus rapide, pas cher, et dual core (un ESP32) => plus probable
- basculer sur FPGA: j'ai de quoi commencer à m'amuser, mais même si ça fonctionne, le coût du machin est rédibitoire pour moi pour un projet qui semble si basique.

Prochaine étape, donc: je gratte autour de l'ESP32, ses timers, ses interruptions. J'avais eu de mauvaises surprises l'année dernière, alors je croise les doigts!
Bouz
Bouz
Mintissime !
Mintissime !

Messages : 1085
Date d'inscription : 11/06/2019
Age : 42
Localisation : Saint Bauzille de Putois

https://www.youtube.com/user/openio

Revenir en haut Aller en bas

[WIP 60%] Normaliser un signal vidéo - Page 4 Empty Re: [WIP 60%] Normaliser un signal vidéo

Message par Bouz le Dim 26 Avr 2020 - 23:04

Je suis ne train d'en finir avec ls tests ESP32... Les timers sont plutôt prévis (10 nanosecondes d'erreur sur une onde générée à 15kHz).
Mais dès que je commence à mettre du code là-dedans, ça part en vrille et je me retape des glissements temporels très gênants.
On dirait que le FPGA commence à s'imposer, mais je trouve hallucinant qu'il n'y ait pas une solution plus simple!

Ca va être long, je ne maîtrise pas du tout les outils, ça va être un long apprentissage!


Dernière édition par Bouz le Lun 27 Avr 2020 - 18:40, édité 1 fois
Bouz
Bouz
Mintissime !
Mintissime !

Messages : 1085
Date d'inscription : 11/06/2019
Age : 42
Localisation : Saint Bauzille de Putois

https://www.youtube.com/user/openio

Revenir en haut Aller en bas

[WIP 60%] Normaliser un signal vidéo - Page 4 Empty Re: [WIP 60%] Normaliser un signal vidéo

Message par poup le Lun 27 Avr 2020 - 16:47

Ha merde c'est con qu'un contrôleur classique puisse pas faire l'affaire. Je trouve ça même étrange.
Le fait de pouvoir régler au pixel et tout rend le truc ultra prometteur. Je serais vraiment content et intéressé si ça marchait au final.
poup
poup
Used
Used

Messages : 465
Date d'inscription : 03/12/2015
Age : 42
Localisation : 37

Revenir en haut Aller en bas

[WIP 60%] Normaliser un signal vidéo - Page 4 Empty Re: [WIP 60%] Normaliser un signal vidéo

Message par Bouz le Lun 27 Avr 2020 - 19:00

Je t'avoue que j'ai du mal à copprendre aussi ce qui peut se passer.
La mécanique est plutôt simple, à la sortie. Pour la version ESP32, j'ai juste fait ce test: un timer déclenche une interruption qui change la durée du timer. En alternant entre 2 durées, j'obtiens une suite d'impulsions qui ressemblent à un signal de synchro.
Sans même me caler sur un signal existant, et sans perturbation a priori, j'obtiens un signal carrément instable, avec des variations de période de l'ordre de la centaine de nanosecondes.
Sur ATtiny85, c'est beaucoup plus stable, mais avec 2 microcontrôleurs en cascade qui déphasent chacun d'une demi-période, j'accumule les erreurs.
Ici, par contre, le test des timers est plutôt bon.
Le gros souci tient dans la différence entre générer soi-même le signal de synchro ET les signaux RVB, et générer un signal de synchro seul, qui doit suivre des signaux décorellés, et où chaque erreur se voit.
Les timers sont d'une précision redoutable. C'est le code qui gère les interruptions qui prend un oeu trop de temps. D'un autre côté, je me dis que ce temps est constant et que je ne devrais pas avoir d'ondulation...
Tu as presque réussi à mon convaincre qu'il y a encore un truc qui m'échappe. Comme par exemple:
- un vecteur d'interruption actif sur un autre timer
- l'instabilité de l'ADC qui lit les potars, qui provoque des décalages logiciels.

Je vais peut-être gratter encore un peu, qui sait...
Surtout que c'est trop cool de déplacer l'image à l'écran avec les 2 potars :-)
Bouz
Bouz
Mintissime !
Mintissime !

Messages : 1085
Date d'inscription : 11/06/2019
Age : 42
Localisation : Saint Bauzille de Putois

https://www.youtube.com/user/openio

Revenir en haut Aller en bas

[WIP 60%] Normaliser un signal vidéo - Page 4 Empty Re: [WIP 60%] Normaliser un signal vidéo

Message par Bouz le Mar 28 Avr 2020 - 1:34

Vérifications faites: RAS au niveau des ADC, pas d'interruptions cachées...
Par contre, j'ai trouvé quelque chose d'intéressant du côté du prescaler du compteur.
Présentation rapide d'un compteur... on va parler de l'un de ceux de l'ATtiny85, et même d'une configuration particulière... quasiment tous les microprocesseurs et microcontrôleurs ont des timers.
Ce timer précis compte à une vitesse de 16MHz. Le compteur fait 8 bits. Donc quand il arrive à 256, il repart à 0.
On peut régler le système pour que le timer nous prévienne quand il atteint une certaine valeur.
Si on veut attendre pendant une durée très précise, on va calculer à combien d'incréments de compteur elle correspond, on configure le compteur pour qu'il nous prévienne à l'arrivée, et c'est parti...
Le souci, c'est que le timer compte vraiment très vite, et que le compteur n'est vraiment pas grand. Il déborde très très vite. A 16MHz, il va arriver à boucler en 16 microsecondes.
Vu que moi, je veux déphaser des signaux vidéo à 15kHz, une ligne fait environ 64 microsecondes. Si je veux m'approcher du cycle suivant en 2 bonds (d'où les 2 microcontrôleurs), je dois pouvoir compter jusqu'à environ 40 microsecondes. Trop long pour le compteur.
Et c'est là qu'intervient le prescaler! Un prescaler, c'est en gros un compteur intermédiaire. On va lui donner une certaine taille, et à chaque fois qu'il atteint cette taille, il ca incrémenter notre compteur. Cela revient à diviser la vitesse du timer par la taille du prescaler pour alimenter le compteur.
Dans notre cas précis, j'ai pris un prescaler de 8. Je peux donc patienter 8x plus longtemps, soit 256 microsecondes, avant que le compteur ne déborde.
Banco.
Et c'est là que j'ai fait une erreur... lors de chaque impulsion reçue, je programme un timer pour être notifié 40 microsecondes plus tard.
Pour ça, je configure ma valeur de référence du compteur en fonction du prescaler et de la vitesse d'horloge (80 incréments en l'occurrence, sisi), je remets le compteur à zéro, et c'est parti.
Sauf que.... je mets le compteur à zéro, mais pas le prescaler... au moment où je lance mon compteur, je peux donc avoir une fraction de temps déjà écoulé. Mon prescaler peut avoir n'importe quelle valeur entre 0 et 7, et cela injecte donc dans mes timings un décalage aléatoire entre 0 et 500 nanosecondes environ.
500 nanosecondes, pour une ligne de 360 pixels (pas tous affichés) qui s'affiche en 60 microsecondes, ça fait loin de 3 pixels de vibration.
Et vu que j'ai fait la même bourde sur les 2 microcontrôleurs, ça me double l'amplitude d'erreur, et hop, 6 pixels de vibration horizontale !

Bon, dans les faits, c'est bien plus joli qu'avant, mais il reste toujours de la vibration dont je ne connais pas l'origine...
Je vais chercher encore un peu...
Bouz
Bouz
Mintissime !
Mintissime !

Messages : 1085
Date d'inscription : 11/06/2019
Age : 42
Localisation : Saint Bauzille de Putois

https://www.youtube.com/user/openio

Revenir en haut Aller en bas

[WIP 60%] Normaliser un signal vidéo - Page 4 Empty Re: [WIP 60%] Normaliser un signal vidéo

Message par poup le Mar 28 Avr 2020 - 11:51

Désolé que tu n'ai pas trouvé mais merci pour tes précisions sur le fonctionnement des timing.
Je n'y connaissais rien et désormais pas beaucoup plus mais pas rien.
Je pense que tu auras trouvé l'origine, le final sera nickel tellement tu auras cherché partout.
poup
poup
Used
Used

Messages : 465
Date d'inscription : 03/12/2015
Age : 42
Localisation : 37

Revenir en haut Aller en bas

[WIP 60%] Normaliser un signal vidéo - Page 4 Empty Re: [WIP 60%] Normaliser un signal vidéo

Message par Bouz le Sam 30 Mai 2020 - 19:53

Eh ben je viens de trouver une nouvelle piste, en me câblant directement sur la génération PWM (pulse wave modulation). C'est le système qui permet de générer des ondes carrées nativement, avec un cycle de service configurable.
La particularité de ce truc est qu'il mèle intimement les timers et l'état des pins. Autrement dit, de l'état du timer dépend directement le niveau logique des pins. Je devrais pouvoir faire sauter une partie des aléas observés jusque là, mais il va encore falloir changer de manière de réfléchir.
Il m'aura quand même appris 2-3 trucs, ce projet, en effet!


Dernière édition par Bouz le Jeu 4 Juin 2020 - 8:15, édité 1 fois (Raison : Orthographe)
Bouz
Bouz
Mintissime !
Mintissime !

Messages : 1085
Date d'inscription : 11/06/2019
Age : 42
Localisation : Saint Bauzille de Putois

https://www.youtube.com/user/openio

Revenir en haut Aller en bas

[WIP 60%] Normaliser un signal vidéo - Page 4 Empty Re: [WIP 60%] Normaliser un signal vidéo

Message par Bouz le Jeu 4 Juin 2020 - 8:25

Petite révélation cette nuit.... Ca rejoint un peu la réflexion ci-dessus, ça tombe bien.
Plutôt que d'essayer de caler mon signal sur le début de chaque ligne, comme je l'ai fait jusqu'à présent avec un succès mitigé, je devrais plutôt essayer de me caler en début de trame, et générer un signal PWM régulier, entièrement piloté par un timer du microcontrôleur.
Si je fais ça, je vais accumuler les erreurs, ligne après ligne, et me retrouver avec un gros décalage en bas de l'écran. L'idée sera alors d'ajuster, en cours de route ou à la fin de la trame (à voir) les valeurs du timer pour se caler sur le timing d'affichage.
Je n'ai pas d'idée précise sur les possibilités d'ajustement et l'impact que ça pourra avoir sur l'affichage, mais intuitivement, je pense que j'aurai le même niveau d'ondulations qu'avant, mais à l'échelle d'un balayage complet d'écran (et non d'une ligne).
Il a falloir tenter ça.
Bouz
Bouz
Mintissime !
Mintissime !

Messages : 1085
Date d'inscription : 11/06/2019
Age : 42
Localisation : Saint Bauzille de Putois

https://www.youtube.com/user/openio

Revenir en haut Aller en bas

[WIP 60%] Normaliser un signal vidéo - Page 4 Empty Re: [WIP 60%] Normaliser un signal vidéo

Message par Bouz le Jeu 4 Juin 2020 - 23:37

Bon, eh ben je viens de générer un PWM à 15kHz et de l'ajuster pour tout pile 64 microsecondes et un cycle de service de 7.5%. De loin, ça ressemble furieusement à un signal HSYNC.
L'ATTiny85 a un registre de calibration qui permet d'ajuster la fréquence de l'horloge interne. Je comptais m'en servir pour asservir le PWM en fréquence, basé sur la fréquence du signal source.
Hélas:
- un incrément du registre OSCAL a un impact trop important sur la période du signal généré, de l'ordre de la microseconde. C'est trop.
- Le signal PWM n'est curieusement pas franchement stable, ça bouge dans tous les sens!
=> il faut passer à autre chose, j'ai encore des idées :-)
Bouz
Bouz
Mintissime !
Mintissime !

Messages : 1085
Date d'inscription : 11/06/2019
Age : 42
Localisation : Saint Bauzille de Putois

https://www.youtube.com/user/openio

Revenir en haut Aller en bas

[WIP 60%] Normaliser un signal vidéo - Page 4 Empty Re: [WIP 60%] Normaliser un signal vidéo

Message par Bouz le Mar 30 Juin 2020 - 8:00

Bon, ben ça y est, plus besoin d'attendre. Comme quoi c'était pas complètement idiot, comme concept:
https://www.smallcab.net/image-positioning-card-screen-p-2047.html?osCsid=dl6vov5fnb83l5anuq0qlrso52
Si ça ne coûtait pas un bras, j'en achèterais un pour voir comment c'est fichu Wink
Bouz
Bouz
Mintissime !
Mintissime !

Messages : 1085
Date d'inscription : 11/06/2019
Age : 42
Localisation : Saint Bauzille de Putois

https://www.youtube.com/user/openio

Revenir en haut Aller en bas

[WIP 60%] Normaliser un signal vidéo - Page 4 Empty Re: [WIP 60%] Normaliser un signal vidéo

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 4 sur 4 Précédent  1, 2, 3, 4

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum