CPC Rulez
https://cpcrulez.fr/forum/

information port joystick cpc/cpc+
https://cpcrulez.fr/forum/viewtopic.php?f=5&t=6988
Page 1 sur 1

Auteur :  duduche87 [ 29 Fév 2024, 16:11 ]
Sujet du message :  information port joystick cpc/cpc+

Bonjour,
Voila je passe tous mes joysticks en sans fil via arduino.
Aucun problème sur Amiga/Atari/C64/MSX2/TO8 le commun étant la masse et un 5v étant disponible.
Par contre sur CPC pas de 5V et les communs 1 et 2 ne sont naturellement pas à la masse.
L'arduino envoie des LOWs sur les pins 1 2 3 4 5 6 lorsque que ces derniers sont actifs, j'ai récupéré le 5V et Masse sur le port crayon optique du CPC+ (pour l'instant je teste sur celui-ci).
Mon problème que je mette le pin 7 (com1) à l'état haut (5v) ou bas (gnd), mes directions font un peu n'importe quoi sous le menu du C4CPC (le bas, fait le bas avec le bouton) sous les jeux la direction droite me fait aussi pause.
Sous basic j'arrive à avoir uniquement des 1 pour haut, 2 pour bas, 4 pour gauche mais j'ai le droit à un espace aussi et 8 pour droite, et 32 pour feu.
Il me semble que le CPC passe par un décodage pour le port joystick et clavier d'où le problème, ça doit se mélanger.
Y aurait-il une solution ?
Merci.

Auteur :  TotO [ 03 Mars 2024, 11:23 ]
Sujet du message :  Re: information port joystick cpc/cpc+

Bonjour,

On va essayer d'expliquer autrement. :)

Pour la manette 1, ton Arduino doit mettre en contact les pins des directions (1, 2, 3, 4) et les boutons d'action (6, 7), avec la pin de COM1 (8). Pour la manette 2, ton Arduino doit mettre en contact les pins des directions (1, 2, 3, 4) et les boutons d'action (6, 7), avec la pin de COM2 (9).

Il n'y a pas à mettre à l'état haut ou à l'état bas quoi que se soit, c'est fait par les circuits qui composent a matrice clavier du CPC. Le +5V et le GND récupérés sur le port du crayon optique doivent uniquement servir à alimenter l'Arduino.

Auteur :  AsT [ 03 Mars 2024, 13:13 ]
Sujet du message :  Re: information port joystick cpc/cpc+

:)

Auteur :  duduche87 [ 03 Mars 2024, 19:17 ]
Sujet du message :  Re: information port joystick cpc/cpc+

Bonsoir,
Je suis bien d'accord.
L'arduino peut-il faire cela sans relais électrique ou autre ? Si oui je suis preneur.
Mais tout ce que j'ai trouvé à base d'arduino c'est que les entrées/sorties digitales 2 à 13 et A0 à A7 ne peuvent fournir que des tensions ? Ou aurais-je loupé quelque chose.
J'ai regardé le PS2Mouse pour CPC tout ce qu'il y a c'est un PIC (donc l'arduino doit faire de même) et un 74LS240.
Le pin 8 est à 5V avec les OE du 74LS240 le reste sont des fronts montants/descendants haut/bas transmit via le 74LS240 sur les pins 1 2 3 4 5 6 7.

Auteur :  TotO [ 03 Mars 2024, 20:52 ]
Sujet du message :  Re: information port joystick cpc/cpc+

La pin8 n'est pas vraiment à 5V, c'est une résistance pull-up pour maintenir à l'état haut COM1 (et les OE).
Je regarderai un peu mieux le fonctionnement de cet adaptateur souris dans la semaine.

Auteur :  flaco [ 04 Mars 2024, 22:40 ]
Sujet du message :  Re: information port joystick cpc/cpc+

Bonjour,

TotO a écrit :
Pour la manette 1, ton Arduino doit mettre en contact les pins des directions (1, 2, 3, 4) et les boutons d'action (6, 7), avec la pin de COM1 (8). Pour la manette 2, ton Arduino doit mettre en contact les pins des directions (1, 2, 3, 4) et les boutons d'action (6, 7), avec la pin de COM2 (9).

Je suggère une approche un peu différente : le microcontrôleur doit surveiller l'état des com1 et com2 comme des entrées et agir sur les directions et boutons d'action comme des sorties en collecteur ouvert. Lorsque com1 est à l'état bas, alors il doit mettre à la masse les directions et bouton feu qui sont enclenchées sur le premier contrôleur. Lorsque com2 est à l'état bas, il fait de même avec l'état du second contrôleur.

L'utilisation de sorties collecteur ouvert est important afin de ne pas interférer avec le scan des autres lignes de touche du clavier (et accesoirement relier une sortie à 'état haut avec une autre à l'état bas).
L'utilisation de la même masse et du même 5v que le CPC est important aussi : évite dans le futur d'utiliser une alimentation séparée.

(pour info je suis moi aussi passé par là : https://github.com/f1ac0/Dual-USB-Contr ... dapter-CPC)

Auteur :  TotO [ 05 Mars 2024, 09:58 ]
Sujet du message :  Re: information port joystick cpc/cpc+

@flaco Tout à fait, il est important que les sorties soient ouvertes (open collector). C'est d'ailleurs déjà le cas sur le 74LS145, depuis le PPI.

Pour reprendre mon message de dimanche, la pin8 et les OE du 74LS240 sont maintenues à l'état haut avec une résistance pull-up. La pin8 va passer à l'état bas, lors de la lecture du port manette par le logiciel qui utilise la souris, ce qui aura pour effet d'activer le 74LS240, qui va transmettre l'état des bits générés par la souris dans les registres du AY.

Lorsque le port manette n'est pas lu, le 74LS240 est désactivé et déconnecté du circuit, les sorties à trois états étant mises en haute impédance. A noter que c'est ce que doit réaliser l'adaptateur USB Imperium Solo, qui gère un seul port. (et à moindre mesure la MultiPlay intégrée à mon ITX-CPC)

Pour l'Arduino, il est donc nécessaire de faire de même, pour COM1 (pin8) et pour COM2 (pin9), si tu souhaites gérer deux manettes en même temps.

Auteur :  duduche [ 05 Mars 2024, 13:04 ]
Sujet du message :  Re: information port joystick cpc/cpc+

Bonjour,

Merci. C'était bien l'information qu'il me manquait.
Je vais donc regarder l'état du pin 8 pour synchroniser tout cela.

J'avais mis en pause mon pad Jaguar, devant regarder justement les états sur les 4 pins pour voir ce qu'envoyait la console dessus.

Et au pire j'ajouterai un 74LS240 pour synchroniser tout ça.

Merci.

Auteur :  poulette73 [ 05 Mars 2024, 16:09 ]
Sujet du message :  Re: information port joystick cpc/cpc+

duduche87 et duduche... c'est le même compte si j'ai bien compris ? :D

Auteur :  duduche [ 05 Mars 2024, 17:07 ]
Sujet du message :  Re: information port joystick cpc/cpc+

Oui j'ai du me mélanger les pinceaux. Je note mes mots de passe maintenant. Mais bizarre que je n'ai pas pu me connecter avec le premier la dernière fois. Et en plus coup de chance, j'ai mis le même mot de passe.
J'aurai du jouer au loto ce jour là.
Si possible de joindre les 2, je n'aurai rien contre.

Auteur :  flaco [ 05 Mars 2024, 20:20 ]
Sujet du message :  Re: information port joystick cpc/cpc+

Le buffer (type 74240 ou bien 74367) n'est pas forcément requis, avec un AVR qui ne supporte que des sorties push/pull il est possible de faire comme du collecteur ouvert en définissant la broche comme une entrée, et en la remettant en sortie lorsque tu as besoin de la passer à l'état bas.

pinMode(pin, INPUT);
digitalWrite(pin, LOW);

//mettre à l'état bas :
pinMode(pin, OUTPUT);
//remettre ouvert :
pinMode(pin, INPUT);

Par contre le timing risque d'être important : notamment le délai de réponse à interruption de changement d'état sur la broche com, et aussi les fonctions pinmod qui sont lentes et peuvent être remplacées par des écritures dans les registres des ports.

Auteur :  duduche [ 05 Mars 2024, 21:38 ]
Sujet du message :  Re: information port joystick cpc/cpc+

Oui je fais cela sur les pins

pinMode(3, OUTPUT);
digitalWrite(3, LOW);
delay(pause);
else
pinMode(3, INPUT);

j'ai du mettre des pauses de 2ms, il faudrait que je regarde cela de plus prêt aussi mais bon sur Amiga/Atari/C64 ça fonctionne pas mal. Sur NeoGeo il faudrait que j'optimise.

Sur CPC et Jaguar il me manquait la synchronisation avec les infos sur le pin 8 (com1), et sur la Jaguar voir la trame pour les pins 1 à 4 pour être synchro sur mes envoies sur les pins 6 et 10 à 14. Mon programme foireux m'a permis de découvrir qu'il y a avait une combinaison de touches pour faire un reset sur la sauvegarde de la cartouche.
Merci, car ça me remotive pour finir le pad jaguar et surtout avec la gestion du joycon à la place de la croix directionnelle (j'ai abimé le caoutchouc sur un contact) et de mettre les récepteurs sur la colecovision.

Page 1 sur 1 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/