Le deal à ne pas rater :
Nike : jusqu’à 50% de remise sur le running
Voir le deal

[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg)

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

Aller en bas

[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Empty Re: [WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg)

Message par Bouz le Sam 16 Mai 2020 - 15:38

En fait, je pensais plus à une matrice de LED. J'ai acheté 3 bandes comme ça, je me disais que ça pourrait être rigolo de faire tourner les records dessus, façon piste de bowling. Mais je suis ouvert aux suggestions, parce que je suis loin d'en avoir fini avec ce projet!

[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 41cved10

Bouz
Near-mint
Near-mint

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

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

Revenir en haut Aller en bas

[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Empty Re: [WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg)

Message par poup le Sam 16 Mai 2020 - 16:24

Ha oui tout aussi fun et retro ce bandeau, je n'y avais pas pensé. Je ne sais pas si c'est faisable mais avoir d'ecrit au dessus de soi le record de l'épreuve c'est sympa et New WR quand il est dépassé ça aurait de la geule. A voir niveau extraction des données dans quelle ordre c'est rangé
poup
poup
Used
Used

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

Revenir en haut Aller en bas

[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Empty Re: [WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg)

Message par Bouz le Sam 16 Mai 2020 - 16:35

Je peux lire les données uniquement quand le PCB n'est pas alimenté. Comme je disais plus haut, si je veux lire, je dois mettre du jus sur les 13 lignes d'adresses. Or elles so t partagées par tous les chips du PCB
Du coup, si j'essaie de lire, je vais forcément foirer le bus d'adresses pour quelqu'un d'autre. Seul le CPU sait ce qui se passe sur le bus.
Du coup, ma solution passera par un autre bricolage, avec un microcontrôleur plus puissant et avec plus de pattes: en plus de lire sur le bus de données, il faudra lire sur le bus d'adresses et sur les lignes de commande, pour savoir si le CPU est en train de lire ou écrire en SRAM, quoi, et à quelle adresse.
S'il charge à l'adresse des records de saut, alors je sais qu'on est sur l'épreuve de saut. J'en profite pour enregistrer les records à la volée.
S'il écrit à ces adresses, alors je sais que le record est battu, et par qui...
J'espère qu'il stocke le nom des joueurs quelque part, pour pouvoir aller les chercher. Ça va être plus dur à trouver, ça :-).
Bref, de l'électronique appliquée, je m'amuse bien Wink


Dernière édition par Bouz le Sam 16 Mai 2020 - 18:54, édité 1 fois (Raison : Fautes de frappe)
Bouz
Bouz
Near-mint
Near-mint

Messages : 961
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 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Empty Re: [WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg)

Message par poup le Sam 16 Mai 2020 - 18:04

Des idées qui changent des poncifs, je trouve ça hyper bien. Le genre de truc, sur ce type de jeux qui donnent envie de remettre une pièce pour écrire son nom... comme dans un flipper.
poup
poup
Used
Used

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

Revenir en haut Aller en bas

[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Empty Re: [WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg)

Message par Bouz le Sam 16 Mai 2020 - 21:35

J'essaie de trouver des choses qu'on ne voit pas tous les jours, tout en m'amusant techniquement Wink
Et tiens, je viens de trouver pourquoi mes écritures ne fonctionnaient pas bien à l'endroit, en lisant la doc de la puce de SRAM. Un problème de timing, je lâchais les lignes de données trop tôt, le circuit n'avait pas le temps d'intégrer les nouvelles valeurs.
Je reprends le boulot ce soir avec un petit protocole d'échange avec la puce, qui me permettra d'établir la map de la mémoire sans recompiler du code à chaque test.
Bouz
Bouz
Near-mint
Near-mint

Messages : 961
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 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Empty Re: [WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg)

Message par Bouz le Dim 17 Mai 2020 - 1:04

Eh ben j'ai mis en place un outil qui me permet de remonter des zones mémoire, et d'aller écrire des nombres ou des caractères encodés à la sauce Hyper Olympic dedans.
Ca m'a permis de trouver:
- comment sont encodés les noms
- où et comment sont codés les records de chaque épreuve
- où sont enregistrés les noms des (4?) joueurs en lice
- où sont enregistrés les temps / distances des 3 tentatives pour chaque épreuve.
Ce que je n'ai pas trouvé, c'est où et comment sont stockés les 200 meilleurs scores!

Du couo, si je m'en tiens à ce que je voulais faire, à savoir scruter tout ce qui se passe sur le bus, eh ben il va falloir que je fasse de sérieux tests de perf avec les microcontrôleurs! J'aurais aimé utiliser un ESP32 parce qu'il a 2 coeurs à 240 MHz (et il ne coûte rien). Un pour lire les bus, et l'autre pour gérer le ou les afficheurs. Malheureusement, il ne propose pas assez de pins! Je vais voir si je peux me débrouiller quand même, et si des circuits logiques pourraient m'aider (et seraient assez rapides).
Sinon, il reste le STM32 Blue Pill. Il aurait assez de pins, mais il n'a qu'un coeur et tourne à 72 MHz.
Un coup d'oscillo devrait déjà me donner une idée de la cadence d'accès à la SRAM par le CPU...
Bouz
Bouz
Near-mint
Near-mint

Messages : 961
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 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Empty Re: [WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg)

Message par Bouz le Dim 17 Mai 2020 - 23:36

Aujourd'hui, j'ai passé un peu de temps à étudier quelques possibilités pour récupérer les données des bus à la volée.
Le souci des microcontrôleurs, c'est qu'ils ont principalement des interfaces série. Et là, il faut super vite récupérer les valeurs d'une vingtaine de lignes à la fois...
Etant donné le nombre élevé de lignes, je suis a priori contraint d'utiliser un micro-contrôleur rapide. Il doit arriver à lire 20 lignes en série pendant un seul cycle de lecture du CPU du PCB...
Pour savoir avec quoi je dois lutter, j'équipe la puce de SRAM de sondes logiques...

[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 20200543

Je récupère une séquence d'une seconde (ça fait déjà énormément d'échanges!), et je mesure les écarts minimums entre les lectures ou écritures.

[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Lectur11

L'occasion de voir que la puce est toujours active (la ligne CS est toujours en état bas), et elle est pilotée par les lignes OE et WE (donc lecture et écriture).
Le plus petit écart tourne autour des 660ns (nanosecondes). C'est méga rapide, il va falloir courir!

Pour lire tout ça, j'utilise un ESP32. Il tourne à 240MHz, c'est cool. J'utilise avec lui un multiplexeur et deux registres à décalage pour faire passer les données de 16 lignes sur un seul fil.
Le souci, c'est que ce contrôleur tourne en 3.3V. Et ça, ça implique d'injecter un buffer intermédiaire, qui va faire la conversion des signaux TTL de la SRAM (5V) vers du niveau 3.3V.
Ca fait une installation comme ça:

[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 20200544

Je fais des essais de transferts en boucle pour voir combien de temps il faut pour sérialiser les 16 lignes.
Ca donne ça:

[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Lectur10

=> 3,9 microsecondes! 7 fois trop lent.
Je pourrais gagner en vitesse en augmentant la fréquence de la sérialisation. Mais malheureusement, à cause des composants intermédiaires de conversion de niveau de tension, je suis bloqué à 10MHz!
Je vire le buffer, et je le remplace par un level shifter (un transistor à effet de champ), qui devrait être plus rapide => je peux pousser jusqu'à 12MHz. Pas plus. Ca sent le sapin, cette affaire.
Je passe au plan B, le STM32. Lui, il ne court qu'à 72MHz, mais il a un énorme avantage sur l'ESP32: au moins la moitié de ses entrées est tolérante aux signaux TTL (5V). Je vais donc pouvoir gicler les composants de conversion de niveau.
Et donc pour le moment, j'en suis là. Il va falloir attendre un peu, parce que ce machin est un peu plus compliqué à programmer et je galère un peu pour le flasher...
Bouz
Bouz
Near-mint
Near-mint

Messages : 961
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 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Empty Re: [WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg)

Message par poup le Dim 17 Mai 2020 - 23:42

Ha merde le coup du 3,3V c'est balo ! Pourtant à 240MHz, j'étais pourtant persuadé que tu avait de la place mais au final la transformation te fait un énorme goulet d'étranglement, je n'aurais jamais pensé.
Tu es sûr d'avoir fait le tour de tous les matériels dispo pour faire ça, tu n'as pas le truc idéal pour ça avec plein d'entrées en 5V et qui galope vite ?
poup
poup
Used
Used

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

Revenir en haut Aller en bas

[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Empty Re: [WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg)

Message par Bouz le Lun 18 Mai 2020 - 0:02

J'ai un Arduino Mega qui traîne. C'est blindé d'entrées (une cinquantaine?), mais ça tourne à 16MHz. Ca risque d'être limite pour gérer autre chose en même temps (l'afficheur Wink).
Je vais faire des tests avec. Dans le doute, j'ai commandé à l'instant en Chine la version compacte de la carte qui, elle, peut être soudée sur un circuit imprimé (je découvre, je ne savais pas que ça existait et j'ai toujours mis le 2560 de côté à cause de ça).
Si tu vois autre chose de pas trop exotique, je prends!
Bouz
Bouz
Near-mint
Near-mint

Messages : 961
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 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Empty Re: [WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg)

Message par Bouz le Lun 18 Mai 2020 - 20:57

Here comes a challenger!

[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 20200545

Soudure party pour faire un adaptateur!
Bouz
Bouz
Near-mint
Near-mint

Messages : 961
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 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Empty Re: [WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg)

Message par Bouz le Mar 19 Mai 2020 - 0:41

Bon, je viens de perdre une soirée de ma vie, mais j'aurai appris des choses (j'essaie de m'en convaincre).

J'ai commencé par étudier le meilleur endroit pour me câbler, afin de lire les données par paquets de 8 bits (un port par paquet de 8 bits). Puis j'ai prépare un adaptateur pendant 2h parce que c'est super serré pour souder...

[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 20200546

Et puis je me suis dit tiens, je vais quand même vérifier les temps de réponse, histoire d'en avoir le coeur net... (mais un peu tard). J'ai monté tout ça et j'ai branché un fil sur un bouton. J'appuie, ça simule une lecture sur le bus.

[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 20200547


De l'autre côté, un gestionnaire d'interruption qui descend une ligne quand il détecte une impulsion.
A l'oscillo on voit dont 2 lignes descendre l'une après l'autre: l'impulsion, et la réponse. La distance entre les deux donne le temps de réponse.

[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Tempsd14

Eh pif, 3 microsecondes. Pour rappel, l'objectif est de pouvoir lire toutes les 0,6 microsecondes. Donc 5 fois trop lent. Et pourtant, on ne peut pas dire que je fasse du gros traitement...

[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Tempsd12

On fait difficilement plus court: un vecteur d'interruption avec une seule instruction en assembleur derrière. Vu qu'il y a un accès mémoire, on va dire qu'elle dure 2 cycles. à 16MHz, ça doit faire 125 nanosecondes. Clairement, on n'y est pas.

Pour en avoir le coeur net, je tente une petite fantaisie: dans le traitement d'interruption, je bascule plusieurs fois l'état de la ligne, et je chronomètre à l'oscillo...

[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Tempsd13

On peut mesurer 250 nanosecondes pour une alternance complète, soit 125 nanosecondes par alternance. C'est bien ça. Par contre, on note que la première alternance arrive vraiment longtemps après l'impulsion.

Conclusions:
- C'est la mécanique même de l'interruption qui prend des cycles (26 cycles, a priori). Le traitement d'une interruption nécessite de backuper les registres du microcontrôleur. Ca, c'est la couche C qui le fait pour nous en standard. On s'en passerait bien, pour le coup.
- Avec ce timing, ça va être tendu pour faire quelque chose!

Vu que je me suis bien enquiquiné la vie à faire l'adaptateur, je vais quand même creuser un peu pour voir si je peux faire un gestionnaire d'interruptions 100% en assembleur. Ca permettrait de ne pas backuper autant de registres. Il y aura toujours le coup du saut avant-arrière, ça laissera peu d'instructions pour faire quelque chose, mais ça se tente. Au pire, j'aurai vraiment appris un truc!
Bouz
Bouz
Near-mint
Near-mint

Messages : 961
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 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Empty Re: [WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg)

Message par Bouz le Mer 20 Mai 2020 - 23:33

J'ai avancé/reculé un peu hier, avec des tests de traitement des interruptions en assembleur inline.
Une fois décompilé, on voit bien qu'il n'y a pas grand chose dans la routine d'interrution: juste l'instruction qui fait le front descendant de réponse.

[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Tempsd15

Eh ben le résultat est....

[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Tempsd16

10x plus rapide. Mais ça ne suffit pas, malheureusement.

Après une soirée passée à souder un ESP32 sur un support qui me permet de câbler juste assez de pattes pour toutes les raccorder, et donc éviter d'utiliser un registre à décalage chronophage en entrée, je me décide à faire un test que j'aurais pu faire dès le départ (comme d'habitude).
Je colle un interrupteur sur une patte, je sors un signal sur une autre, et je regarde le délai de traitement du signal.
Et c'est tout pourri, pire que sur l'Arduino Mega. En fait, l'ESP32 embarque un mini OS qui induit des latences. On peut bricoler un peu pour essayer de gagner en performance, mais je n'attends pas de miracles. Sans compter que je devrai quand même me farcir les adaptations de niveaux pour les 19 lignes!

Je réfléchis très sérieusement à un plan B qui va tourner avec un Arduino Pro Mini, mais qui va utiliser pas mal d'électronique pour l'épauler. Pour le moment, je compte:
- Une douzaine de quadruples portes NAND
- Deux quadruples portes NOT
- Deux doubles bascules RS
- 3 registres à décalage série->Parallèle
- 1 registre à décalage parallèle->Série
Soit une vingtaine de circuits intégrés. Ca va prendre un peu de place!

L'idée est de ne plus essayer de lire les données à la volée, mais de profiter de l'instant entre deux lectures / écritures pour mettre mes propres adresses sur le bus d'adresses, et de balancer instantanément les données dans un registre à décalage, puis de rendre les bus au système jusqu'à la prochaine fin d'accès officiel aux bus, pendant que je lis tranquillement le contenu du registre à décalage.
Sur le papier, ça fonctionne, mais la logique pour décider de ce qui va transiter sur les bus, et quand, est assez intense!
Je vais voir si je ne peux pas trouver des circuits intégrés qui me feraient économiser 1m² de circuit et 12km de fils, mais la stratégie me plait bien.
Bouz
Bouz
Near-mint
Near-mint

Messages : 961
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 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Empty Re: [WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg)

Message par Bouz le Jeu 21 Mai 2020 - 1:25

Je viens de commander sur eBay quelques circuits intégrés qui devraient me faire économiser pas mal d'espace. Il s'agit de différents types de buffers et bascules 8 bits, le tout en 3 state (haut, bas, déconnecté). Ce dernier point est capital quand on écrit sur un bus (et surtout quand on n'écrit pas dessus!).
Plus qu'à attendre. Ca arrive de France, c'est déjà ça.
Bouz
Bouz
Near-mint
Near-mint

Messages : 961
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 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Empty Re: [WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg)

Message par poup le Jeu 21 Mai 2020 - 10:54

Y'a plus qu'à attendre du coup.
poup
poup
Used
Used

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

Revenir en haut Aller en bas

[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Empty Re: [WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg)

Message par Bouz le Jeu 21 Mai 2020 - 11:02

Je peux déjà avancer sur la modélisation, parce que c'est costaud Wink
Bouz
Bouz
Near-mint
Near-mint

Messages : 961
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 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Empty Re: [WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg)

Message par Bouz le Ven 22 Mai 2020 - 21:37

En attendant, le facteur est passé, et je vais déjà présenter ces deux-là, histoire de pouvoir tester tout ça sur une "vraie" borne bounce[WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 20200550
Bouz
Bouz
Near-mint
Near-mint

Messages : 961
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 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg) - Page 2 Empty Re: [WIP 100%] Résurection d'un PCB Hyper Olympic AKA Track & Field (bootleg)

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

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

Revenir en haut

- Sujets similaires

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