HARDWAREMONTAGES ★ Intégration HxC + Connecteur PSX Controller ★

Integration HxC avec Adaptateur Dualshock - CPCHardware Montages

Mon intégration de HxC et de manette PS2 a bien avancé aujourd'hui. Du coup je suis de bonne humeur, et j'ai même mis une petite photo.

Je ne sais pas si des gens peuvent être intéressés par le montage que j'ai fait pour brancher une manette de PS2, mais bon, on ne sait jamais, j'ai vu qu'il y avait plein de bricoleurs sur ce forum... Il a été développé grâce à un Arduino, et permet d'émuler n'importe quelle touche du clavier, ainsi que d'envoyer des séquences. Je l'ai programmé pour envoyer des 'cat' et des copy*12 + ctrl gauche et entrée. Comme ça, je peux lancer des jeux sans toucher le clavier. Il me permet aussi de contrôler le HxC et de faire un hard reset avec le CPC. Il peut émuler les flèches du clavier ou le joystick.

Il faut un Atmega 328 (ou 168 ou 88) ainsi qu'un bon fer à souder, car il faut relier des fils au décodeur bcd et à l'AY3 du CPC. Le microcontroleur interroge la manette avec son module SPI, et de façon asynchrone, positionne l'état de la ligne du clavier à chaque changement au niveau du décodeur BCD.

Ce qui est marrant, c'est qu'entre le PIC du HxC et l'ATMega, on doit plus que tripler le nombre de transistors dans le CPC.


CPC + DualShock + HxC = it RuleZ !

Voici une présentation rapide du fonctionnement de l'adaptateur Dualshock/CPC que j'ai fabriqué.

Il est basé sur un micro-contrôleur ATMega 328, tout simplement parce que c'est celui qui est dans l'Arduino qui m'a servi lors du développement, et qu'il est très facile à programmer en C, avec la toolchain AVR-GCC et Eclipse.

Le mCU est relié à :

- l'entrée du décodeur BCD relié à l'entrée de la matrice du clavier.
- l'entrée du chip sonore, qui est utilisé par le CPC pour connaître l'état des touches sur la ligne sélectionnée par le décodeur BCD.
- la clock 16 mHz du CPC, ce qui permet de ne pas utiliser d'oscillateur externe et d'économiser une patte pour le mCU.
- la manette PS2.


Avec le HxC intégré devant, et relié à mon montage.


L'ATMega 328 en position sur la carte. A coté l'emplacement vide servira plus tard pour l'affichage.


Avec le HxC intégré devant, et relié à mon montage.

Le programme du mCU se compose de deux parties distinctes qui vivent leurs vies indépendamment, et qui communiquent uniquement via une zone mémoire.

0) La zone mémoire en question correspond à l'état des touches à simuler. Il s'agit d'un tableau qui pour chaque ligne indique le masque à transmettre au chipset sonore.

uint8_t keymapToSend[NB_LINES]= {0,0,0,0,0,0,0,0,0,0};

1) l'émulation du clavier du CPC

Une interruption sur changement d'état est programmée sur les 4 entrées reliées au décodeur BCD pour fournir immédiatement en sortie sur le chip sonore la valeur stockée dans le tableau. C'est là qu'il faut être réactif, car le CPC n'attend pas.

2) l'interface avec la DualShock. C'est de loin la plus grande partie du code.

L'interrogation de la manette ne peut pas se faire sous interruption, car dans ce cas, on risque de rater le moment ou le CPC interroge le clavier. On utilise donc le fait que Sony a choisi le SPI (http://fr.wikipedia.org/wiki/Serial_Peripheral_Interface) pour l'interface. Le SPI est supporté nativement par les ATMega. Cela permet un dialogue avec la manette qui s'effectue pendant que le prog continue de tourner sur le MCU. Le principe est simple, on écrit dans un registre du MCU, et un peu plus tard, on lit la valeur retournée par la manette. J'ai fait une petite lib pour effectuer cette tâche.
Ensuite, tout le travail consiste à remplir le tableau keymapToSend en fonction de ce que l'on souhaite envoyer au CPC. Les mappings sont en dur dans le MCU, mais il devrait être possible d'utiliser l'eeprom qu'il contient pour permettre une customisation online.

Sur le montage, on peut voir une place prévue pour un autre MCU. Il devrait me permettre de mélanger la sortie LCD du HxC avec mon MCU. Pour l'instant, je ne fais que rerouter la sortie avec des straps que l'on voit d'ailleurs sur la photo.

http://cpcrulez.fr

★ LICENCE: ???
★ ANNÉE: 2012
★ AUTEURS: Rewk

CPCrulez[Content Management System] v8.75-desktop/c
Page créée en 061 millisecondes et consultée 1604 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.