まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

Joystick Super Nintendo -1-

dsc07495.jpg Un joystick d'arcade USB c'est bien, mais pour jouer sur d'autres consoles, comment faire ?

Suite à ma première expérience concluante de conception sur microcontrôleur (µC), je pense que je peux me lancer et tenter de réaliser un « joystick Super Nintendo » à base de µC ATmega.

Étant donné qu'ils est simple, pourquoi s'embêter à pondre un programme alors qu'il suffirait de copier le circuit électronique à base de CD4021 contenu dans la manette Super Nintendo ??
dsc07497.jpg
Voire même de faire le barbare comme certains font, en sacrifiant une manette pour y souder des fils et la raccorder directement aux joystick…

Et bien car je prévois de fusionner ce nouveau programme avec celui du joystick USB.
Et même avec de futurs programmes, rendant ainsi le joystick compatible : PC, Super Nintendo, PC Engine, Playstation 1,2 et 3.

Mais voyons déjà l'étude du

Protocole de communication de la manette Super Nintendo :

dsc06197.jpg dsc06191.jpg Une fois la manette démontée, on va regarder à l'oscilloscope les signaux qui transitent dans les fils de la manette, donc en se branchant sur le connecteur CN1.

connecteur.png dsc07486.jpg

Côté connectique avec la console, ces 5 fils se répartissent ainsi :

- L'alimentation 5 Volt,
- et la masse.

- Les signaux Clock,
- Latch,
- et Serial Data.






Pour l'occasion j'ai donc ressorti l'oscilloscope poussiéreux de son étagère… mais vu comme ça, c'est pas très parlant…




J'ai donc pris le temps de relever les chronogrammes, en respectant le code couleur :

snes-oscillo-latch.png snes-oscillo-clock.png snes-oscillo-data02.png

Interprétation :

Chaque fois que le signal Lacth émis par la console est activé, l'état des boutons de la manette est chargé en mémoire pour être ensuite transmis en sortie sur le signal Serial Data, c'est à dire que l'état de chaque bouton est sérialisé sur cette sortie en suivant les impulsions l'horloge Clock.

Ceci se répète toutes les 16,8 ms, soit presque 60Hz… Compte tenu du fait que ma console fonctionne en 60Hz , sinon j'imagine que cela ce passerait en 50Hz.

La courbe SERIAL DATA représente ce qu'il se passe lorsque le bouton R est enfoncé, un état bas qui dure 12µs, situé à la 12ième impulsion d'horloge.
Les pointillés récapitulent l'emplacement sur la courbe de tous les autres boutons.

«yapluka»… établir un schéma de câblage et écrire un programme qui réalise le signal SERIAL DATA en fonction des signaux CLOCK et LATCH.

À suivre…

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

Fil des commentaires de ce billet