Gamoover

[move]Le staff Gamoover vous souhaite la bienvenue ;)

[WIP] - Ampli Video - Console vers jamma

Démarré par liodel, Vendredi 19 Décembre 2008, 14:14:41 PM

gc339

Help !

Je ne retrouve plus la page des pièces détachées pour J-Pac sur le site d'Ultimarc. Je voudrais acheter un ou deux "J-PAC small chip" pour mes tests d'interface, quelqu'un aurait-il le lien vers cette page ?

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





liodel

Avant on y accedait par là
http://www.ultimarc.com/upgrade.html
mais je ne voit plus le small chip, le mieux serait de contacter directement Andy, les contacts que j'ai eu avc lui étaient forts sympathiques jusque là, je pense qu'il te fera parvenir ça.

gc339

#194
Câblage du prototype (suite).

6) Câblage et test du µC Cypress / Entrée HD-15. (suite ...)

Tout d'abord une trace montrant le top de synchronisation Verticale dans le signal composite.


La trace du haut correspond à l'impulsion telle qu'elle est appliqué sur la broche 14 du µC Cypress (P1.1), la trace du bas montre l'insertion de ce top après la résistance de by-pass de 3,3 kilo-ohms. Le µC met un certain temps pour détecter la présence ou la disparition de l'impulsion sur son port P1.1 puis pour actualiser en conséquence l'état de son port P0.0, il y a environ 3,7 µs de retard.

Test en 15 kHz, commutateur du boitier Edge en position "USA"

Tout d'abord ce foutu boîtier possède une temporisation interne qui ne valide le mode 15 kHz de la DC qu'au moins 30 secondes après l'avoir mise sous tension, il doit certainement y avoir une excellente raison mais elle m'échappe. Heureusement il n'en est pas de même pour le mode VGA !

Tout va bien, cavaliers du µC en position 25 ou 31 kHz, le µC Cypress agit : la carte ne délivre pas de signal de synchronisation composite à destination du connecteur Jamma.

Cavalier en position 15 kHz, avec ou sans le cavalier 31 kHz, ça va moins bien. J'ai bien une image stable sur mon moniteur Hantarex mais le tiers haut de l'image est parasité par des lignes noires aléatoires.
Après plusieurs arrêt/marche de la DC conséquemment à la recherche de ce problème, j'obtiens une image impeccable. Nouvelle séquence d'arrêt/marche : le problème apparaît/disparaît, en fait il est beaucoup plus souvent présent qu'absent.
Après avoir obtenu à nouveau une image stable, je tente une séquence de coupure de l'alimentation de la carte interface : tout va bien, l'image reste impeccable. Idem après une série de débranchement/rebranchement du cordon VGA entre la VGA box et la carte interface.
Donc le problème doit provenir de la DC, ou de la VGA box ou encore des deux réunies !

Dieu soit loué, j'ai une deuxième DC, elle a du mal à lire les CD mais elle est fonctionnelle et c'est celle que j'ai utilisé pour mes premiers tests vidéo ainsi que pour  le test audio de l'interface.
Tout va bien avec cette deuxième DC, elle affiche le menu de configuration impeccable après chaque redémarrage, la première DC a donc un problème aléatoire avec la VGA box.

OUF !

Test en 31 kHz, commutateur du boitier Edge en position "JAP"

J'ai aussi récupéré un "VGA câble" pour le test au cas ou il y aurait à nouveau un problème avec la "VGA box"

Tout va bien, cavaliers du µC en position 25 ou 15 kHz, le µC Cypress bloque le signal de synchronisation, rien ne parvient au connecteur Jamma.

Cavaliers 31 et 15 kHz présents, le signal de synchronisation à 31 kHz est bien modifié par le µC Cypress, j'ai effectivement une image double sur l'écran mais impossible de la stabiliser verticalement, elle arrive parfois à se stabiliser pendant une fraction de seconde mais elle se remet immédiatement à défiler. Le problème est identique avec le "VGA cable".
Il va falloir que je regarde cela de plus prêt.

Modifications et préconisations :

  • Les deux LEDs donnant l'état du µC me semblent beaucoup trop lumineuses, il vaut mieux prévoir une résistance en série avec chaque LED pour diminuer le courant traversant chacune. Le régulateur 7805 s'en portera que mieux, à moins d'alimenter le µC par le +5 volts du connecteur Jamma plutôt que par le 7805.
  • La valeur de la résistance de by-pass doit être de 3,3 kilo-ohms plutôt que de 680 ohms
  • Le cavalier qui établi la liaison entre l'émetteur du transistor 2N2222 et le LM1881 n'est pas nécessaire : ou l'on câble la carte en entrée VGA ou on la câble en entrée Péritel, et dans ce dernier cas le µC Cypress et sa circuiterie associée ne sont plus nécessaires.

Et pourquoi pas, tant qu'à faire !

Le µC Cypress "J-PAC small chip" en tant que pièce détachée a disparu de la page http://www.ultimarc.com/upgrade.html, il y a probablement moyen d'en obtenir quelques exemplaires en en faisant la demande auprès d'Andy d'Ultimarc mais cette solution me semble pas des plus pérenne.
Aussi je suis en train de réfléchir à son remplacement par un PIC 12F635 ou 12F683. Il y a bien le bloqueur à base de PIC 12C508 précité plus en avant dans ce fil de discussion : http://www.gamoover.net/Forums/index.php?topic=17890.msg268016#msg268016


Le problème est que c'est un simple bloqueur de signal de synchronisation différent de 15 kHz et qu'il ne remplit pas les fonctions du µC Cypress / Ultimarc.

Je compte plutôt m'inspirer de ce projet de "video surimposer" : http://www.micro-examples.com/public/microex-navig/doc/081-pic-osd-superimposer.html tout en reproduisant le schéma utilisé avec le µC Cypress : résistance de by-pass, entrées synchronisation Horizontale et Verticale sur ports distincts ...


A suivre ...






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





funkycochise

toujours aussi passionnant de suivre les évolutions de cette interface.
merci pour toutes les explications/photos d'une étonnante accessibilité.  :-*

gc339

#196
Projet de remplacement du µC Cypress.

Mon choix s'est porté sur le µC 12F635 de Microchip pour différentes raisons :

  • Je possède un clone d'ICD2 acheté sur eBay pour programmer les µC Microchip.
  • Le jeu d'instruction des µC de la série 12F est pratiquement le même que le 16F84 que j'ai déjà utilisé.
  • Les outils logiciels sont téléchargeables gratuitement sur le site de Microchip.
  • Ce sont des µC relativement rapides, 5 Mips soit 5 instructions par µs pour une fréquence d'horloge externe de 20 MHz.
  • Possibilité d'utiliser l'horloge interne à 8 Mhz, la vitesse est alors de 2 Mips soit 2 instructions par µs.
  • Liodel avait exprimé sa préférence pour implanter un chip à 8 pattes.

Le schéma retenu :




Rien de bien original, le schéma est extrapolé de celui du µC Cypress. Le 12F635 n'ayant que 6 broches de disponibles pour les entrées/sorties, il va falloir optimiser au maximum.

  • Dans un premier temps, pour la mise au point, je vais utiliser un boîtier horloge extérieur à 20 MHz. Si j'arrive à maîtriser les timings avec l'horloge interne à 8 MHz, je réutiliserais cette broche pour par exemple allumer une LED.
  • Je conserve le principe de la résistance by-pass.

    • La synchro ligne est appliquée sur la broche GP4/T1G afin de pouvoir mesurer la fréquence ligne avec le compteur 1.
    • La broche GP2 sera utilisée pour filtrer la synchro ligne et insérer la synchro trame après la résistance de by-pass. Pas de raison particulière ici à l'emploi de cette broche plutôt qu'une autre.
  • La synchro trame est appliquée sur la broche GP3, cette broche ne peut être utilisée que comme entrée donc autant lui affecter ce signal à observer.
  • Les broches restantes GP0 et GP1 seront utilisées pour les cavaliers de configuration, une combinaison binaire de l'absence/présence de ces cavaliers sera nécessaire pour les 4 configurations possibles, par exemple :

    • absent, absent : 15 kHz.
    • absent, présent : 24 kHz.
    • présent, absent : 31 kHz.
    • présent, présent : 31 kHz --> 15 kHz.
  • Cette organisation des E/S n'est pas figée, l'affectation des signaux aux différentes broches pourra être modifiée pour mieux optimiser les temps de réponse du programme.

J'ai commandé plusieurs chips 12F635 ainsi que le boîtier oscillateur Dimanche soir sur le site de Farnell. Je devrais être livré aujourd'hui dans la journée si j'en crois le suivi UPS.
J'ai aussi pris la précaution de commander plusieurs chips 18F1320, au cas où le 12F635 serait trop juste.  Ce µC permet d'obtenir du 10 Mips avec une résonateur extérieur de 10 MHz, il a aussi un jeu d'instructions plus performant, mais n'existe qu'en boîtier 18 broches.

Bon, maintenant y a plus qu'à ...
Le repos, c'est fait pour les jeunes. Ils ont toute la vie devant eux. J. Gabin/M. Audiard





gc339

#197
Bonsoir.

Quelques nouvelles du front ...

J'ai décidé de câbler un prototype à part rien que pour développer et mettre au point le programme du pic 12F635.


Pour me simplifier la vie j'ai utilisé un "finger board" de récupération, il sert juste à récupérer le + 5 volts du connecteur Jamma car je vais continuer à utiliser mon banc de test Jamma pour la mise au point.
Ce "finger board" sert aussi de support à une "deuxième étage" constitué d'un morceau de circuit imprimé pré-percé où sont installés les différents supports et le connecteur HD-15.
Les supports utilisés sont du type à wrapper :

  • Un support 2×4 pour le pic 12F635.
  • Un support 2×4 pour le boitier oscillateur à 20 MHz.
  • Un support 2×8 pour une plateforme où seront soudés les composants passifs nécessaires comme condensateurs et résistances.
Le mini-wrapping est très pratique. Il suffit de déwrapper les fils des liaisons obsolètes et de rewrapper les nouvelles pour modifier facilement le circuit si un impératif du programme l'exigeait, pas besoin de jouer du fer à souder !

Le clone de l'ICD2 qui va servir à programmer le µC 12F635. Pas besoin d'une alimentation externe, l'ICD2 utilise le 5 volts présent sur le bus USB du PC sur lequel il est raccordé.


Tel qu'il a été livré, le clone ICD2 ne comprenait que deux circuits imprimés (le circuit imprimé principal avec le bus USB et le circuit supportant le Textool ) sans aucun boîtier ni support mécanique.
J'ai donc réalisé un support moi-même avec des chutes de plexiglass et des entretoises de récupération.

A suivre ...

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





Iro

"Jet set 2, c'est avec Robert Garcia ?" Kaneda, Lapsus de sac Vol.1
Peter Shou Owner' Club

WIPs : Naomi - SEGA Rally - AB Cop - Lethal Enforcers - COMPUMI - Terminator 2 - Space Invaders - Artworks pour Boitiers K7 Naomi CF - Ma collec' de panels

LES TUTOS DE GAMO   

guizmo059

pfiou c'est beau c'est grand ! Courage pour la suite et merci pour toutes tes explications !  ^-

gc339

#200
Bonsoir.

Tout d'abord merci pour les messages d'encouragement !

Quelques nouvelles ....

Après avoir téléchargé pas moins de 4 notices, sans compter les additifs ou correctifs, sur le site Microchip :


  • PIC123F635 Data Sheet (232 pages ).
  • MPLAB® IDE User's Guide (330 pages ).
  • MPASMTM, MPLINKTM, MPLINKTM User's Guide (287 pages ).
  • ICD2® User's Guide (148 pages ).

Je les ai imprimées à raison de quatre pages par feuille A4 : 2 au recto et 2 au verso, ce qui limite bien l'épaisseur et le poids de chacune.
Une notice c'est quand même plus confortable sur papier que sur écran, on peut plus facilement en zieuter plusieurs en même temps et il est facile de les annoter ...

La deuxième notice est celle concernant l'outil de développement MPLAB sous windaube, la troisième correspond à l'assembleur/éditeur de lien accessible dans MPLAB et la dernière à celle à celle du programmateur ICD2 qui doit être piloté par MPLAB pour pouvoir programmer les chips.

Je dois avouer que c'est plutôt laborieux, l'outil MPLAB intègre de très (trop) nombreuses fonctionnalités.
Il faut étudier le datasheet du µC pour pouvoir écrire le programme, consulter la notice de l'assembleur/éditeur de liens pour les directives d'assemblage, s'aider de la notice de MPLAB pour toute opération : créer le projet, écrire/éditer le source, l'assembler, utiliser le simulateur intégré ... Et à chaque écueil rechercher la solution à travers les trop nombreuses pages de ces notices.

Un aperçu de l'écran MPLAB :



  • Dans le coin en haut à gauche : la fenêtre concernant le projet et les fichiers associés.
  • Immédiatement à sa droite : une vue sur le fichier ".inc" avec définitions de noms et bits des registres du 12F635
  • En haut à droite : la fenêtre d'observation où l'on peut choisir les registres ou les variables programme à observer en mode déboguage.
  • En bas à droite la fenêtre qui permet de créer des stimuli, ici un clic sur un bouton virtuel permet de simuler l'interruption qui sera réalisée plus tard par le signal de synchronisation ligne.
  • Et enfin en bas à droite la grande fenêtre avec le code source que l'on doit entrer manuellement.
    C'est aussi une des fenêtres utilisée par le débogueur, ce dernier permet d'exécuter les instructions une à une en mode manuel ou en automatique, un index se déplaçant sur le code source à chaque pas. Il est aussi possible de mettre des points d'arrêt ou de simuler un évènement extérieur pour vérifier la réaction du programme.

Après réflexion, j'ai décidé de modifier la manière de mesurer la fréquence du signal de synchronisation ligne. Je vais lire la valeur du compteur TMR0 ou TMR1 entre deux interruptions générées par le front descendant du signal de synchronisation ligne plutôt que d'utiliser le compteur TMR1 en chronomètre pour mesurer le temps écoulé entre la fin d'un top ligne et le début du suivant.
Cela entraîne une modification du schéma précédemment publié au niveau de GP2 et GP4 :


Donc l'écriture du programme avance laborieusement, c'est pas toujours évident quand on doit tout apprendre par soi-même, sans formation préalable, uniquement avec des notices qui pour faciliter la tâche sont écrites en anglais.

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





BigPanik

Perso j'utilise les compilateurs C dispo pour les PIC, avec en cas de besoin d'un timing serré l'instruction ASM.

BP

ckf92

il a l'air enorme ce projet!! chapeau! :)

En gros ca va etre un JAMMASD mais pour console! :p

ca sort quand ?? :)

speedsterharry

@gc339:Arf, tu connais Bruno Gavand ??? Il m'avait proposé un jour un flashage de PIC à titre gracieux à son boulot (pour un projet non arcadien). Comme le monde est petit ...

liodel

Citation de: ckf92 le Mercredi 04 Novembre 2009, 16:38:56 PMca sort quand ?? :)
On a prévu d'envahir le monde en 2010...  =:))

Enfin, les pays équipés scart (péritel) ce qui réduit considérablement la taille du monde  :D

gc339

#205
Citation de: BigPanik le Mercredi 28 Octobre 2009, 01:18:11 AM
Perso j'utilise les compilateurs C dispo pour les PIC, avec en cas de besoin d'un timing serré l'instruction ASM.

J'ai horreur du langage C, donc le bout de programme pour cette application sera écrit uniquement en assembleur.

Citation de: speedsterharry le Mercredi 04 Novembre 2009, 16:51:41 PM
@gc339:Arf, tu connais Bruno Gavand ??? Il m'avait proposé un jour un flashage de PIC à titre gracieux à son boulot (pour un projet non arcadien). Comme le monde est petit ...

Non, ce nom me dit rien.




Des nouvelles du projet :

Voici une description succincte du programme :

Après la séquence d'initialisation le programme entre dans une boucle sans fin d'attente qui sera :

  • Interrompue à la fréquence des impulsions de synchronisation ligne.
  • Annulée par le chien de garde en cas de disparition du signal de synchronisation ligne.

Le timer 0 va servir de chronomètre, il mesurera le temps écoulé entre deux interruptions consécutives autrement dit entre deux tops de synchronisation.

  • Le temps chronométré va être comparé aux limites d'une fenêtre temporelle pour déterminer s'il est :

    • Dans les normes et doit être accepté.
    • Hors normes et doit alors être refusé.
  • La fréquence d'horloge du Timer 0 est choisie de telle manière que la valeur attendue soit supérieure à 128 pour qu'il y ait dépassement de ce compteur pour la première fréquence ligne sous multiple de celle attendue.

A chaque interruption :

  • Le Chronomètre (Timer 0) est lu, sauvegardé puis réinitialisé.
  • Le Top trame est inséré s'il est présent et si le circuit est verrouillé.
  • La valeur chronométrée entre deux tops ligne est comparée aux durées inférieures et supérieures de la fenêtre :

    • Les durées bornant la fenêtre sont fonction de la fréquence ligne à autoriser, elles sont sauvegardées dans deux variables après lecture des cavaliers de configuration lors de l'initialisation du programme
    • Si la valeur chronométrée est à l'intérieur de la fenêtre, un compteur est incrémenté. Quand il y a 20 chronométrages consécutifs positifs, le circuit est déclaré verrouillé. Le by-pass du signal de synchronisation ligne sera validé lors de l'interruption suivante.
    • Si la valeur chronométrée est en dépassement (overflow du Timer 0) ou en dehors de la fenêtre, ce même compteur est décrémenté. Quand sa valeur atteint zéro, le circuit est déclaré non verrouillé et le by-pass du signal de synchronisation ligne est immédiatement interdit.
  • Le chien de garde est réinitialisé et l'interruption par la broche GP2/INT est réautorisée.

Le chien de garde a aboyé :

  • Suite à l'absence d'interruptions, donc de tops de synchronisation ligne pendant une période équivalente à plusieurs dizaines de lignes.
  • Le circuit est immédiatement déclaré non verrouillé, le by-pass est interdit.
  • Le chien de garde est inhibé et le programme entre dans une boucle sans fin, attendant une interruption générée par la réapparition d'un signal de synchronisation ligne.

Il pourrait y avoir des impulsions d'égalisation ajoutées dans le signal de synchronisation ligne d'une image entrelacée. Ce n'est pas le cas sur la DreamCast mais ce n'est pas exclu pour d'autres consoles.
Ces impulsions sont présentes pendant la période de suppression trame et leur fréquence est celle d'une demi-ligne, il y en a 14/16 pour une trame 625 lignes (Europe) et 18 pour une trame 525 lignes (USA, Japon), c'est pourquoi une vingtaine de chronométrages consécutifs bons ou mauvais sont nécessaires comme filtrage pour déclarer ou non le circuit synchronisé afin d'éviter un verrouillage non désiré sur une fréquence harmonique.



Ci-dessus les impulsions d'égalisation encadrant la synchronisation trame dans un signal vidéo composite en 525 lignes.



Ci-dessus les impulsions d'égalisation encadrant la synchronisation trame dans un signal vidéo composite en 625 lignes.




Le programme est écrit au deux tiers, je n'ai réalisé pour l'instant que la reconnaissance de la fréquence ligne à 15 kHz, il tourne sur le simulateur logiciel intégré à MPSIM mais pas encore en réel.

Un exemple des difficultés de déverminage avec le dernier écueil rencontré : les interruptions s'exécutent bien avec le simulateur MPLAB intégré en simulant un changement d'état sur la broche GP2/INT dans la fenêtre des stimulus mais rien ne se passe en réel.

En relisant le datasheet du PIC12F635 au sujet des interruptions, en bas de la page 139, je remarque une note en grisée à laquelle je n'avais pas vraiment fait attention lors de mes précédentes lectures:




The CMCON0 (19h) register must be initialized to configure an analog channel as a digital input. Pins configured as analog inputs will read '0'.
Ce n'est vraiment pas très explicite, l'expérience et l'intuition me disent d'aller consulter le paragraphe similaire concernant les interruptions dans les datasheets des PIC de la même famille. Ils ont du être rédigés à partir d'un même modèle car beaucoup de paragraphes sont identiques.


  • BINGO avec le datasheet du PIC 12F609, pas besoin de faire un dessin avec le "cannot generate an interrupt", c'est plus qu'explicite ! :
    The ANSEL register must be initialized to configure an analog channel as a digital input. Pins configured as analog inputs will read '0' and cannot generate an interrupt.





  • Et encore mieux avec celui du PIC 12F683 où il est question des deux registres impliqués:
    The ANSEL and CMCON0 registers must be initialized to configure an analog channel as a digital input. Pins configured as analog inputs will read '0' and cannot generate an interrupt.




Et l'interruption s'est mise à fonctionner après avoir modifié les bits impliqués dans le registre CMCON0, comme quoi le simulateur logiciel intégré à ses limites et qu'il faut s'en méfier, les datasheets ne sont pas en reste non plus !




Ce qu'il reste à faire :


  • Déterminer pourquoi le chronométrage est toujours hors fenêtre en réel alors que tout va bien avec le simulateur intégré.
  • Gérer le chien de garde.
  • Lire les cavaliers de configuration et appliquer les paramètres pour chaque fréquence ligne à filtrer.
  • Oblitérer une impulsion ligne sur deux dans le cas de la pseudo conversion 31 kHz vers 15 kHz.

A suivre...


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





ckf92

Citation de: liodel le Mercredi 04 Novembre 2009, 18:12:12 PM
On a prévu d'envahir le monde en 2010...  =:))

Enfin, les pays équipés scart (péritel) ce qui réduit considérablement la taille du monde  :D

c'est pour bientot!!! cooooooooooooool! lol ;)

speedsterharry

Citation de: gc339 le Jeudi 05 Novembre 2009, 00:21:38 AM
Non, ce nom me dit rien.
Il apparait sur un des schémas que tu donné dans un de tes posts. J'ai cru que tu le connaissais personnellement...