Pourquoi une souris a-t-elle besoin d'un cristal?


22

Je regardais ce schéma pour une vieille souris (pré USB):

entrez la description de l'image ici

quand j'ai remarqué qu'il y avait un cristal dessus (Y1). J'étais curieux de savoir pourquoi une souris aurait besoin d'une minuterie? Ne pourrait-il pas utiliser l'horloge de l'ordinateur? De plus, s'il a son propre cristal, ne pourrait-il pas se désynchroniser avec l'horloge du processeur?


1
D'où avez-vous obtenu ce schéma? Il y a quelques erreurs: par exemple, la polarité des photodiodes est inversée.
Curd


7
Peut-être que le "cristal" n'est en réalité qu'un résonateur en céramique. BTW: Pourquoi pensez-vous qu'il n'y a pas de génération d'horloge à l'intérieur d'une souris? Il est même probable qu'il existe plusieurs sous-circuits à l'intérieur de l'ordinateur, peut-être même sur la carte mère, qui ont leur propre génération d'horloge (oscillateurs à cristal).
Curd

4
Comme le dit la réponse @OlinLathrop, le MCU de la souris n'essaie pas d'être synchronisé avec le microprocesseur du système hôte (MCU). La souris MCU veut juste être synchronisée avec le port de communication, que ce soit USB, RS232C ou autre chose.
TonyM

5
À partir de votre lien, il semble que cette souris était destinée à usurper un joystick. Si l'interface du joystick n'a pas été conçue pour avoir un signal d'horloge, il n'y a pas de signal d'horloge disponible pour la souris.
Le Photon

Réponses:


25

Cette chose MOS 5717 est très probablement un microcontrôleur ou une partie qui exécute du code. Il a besoin d'une horloge pour fonctionner.

Cependant, juste une horloge pour un micro n'a pas besoin d'une précision cristalline. C'est probablement pour la communication. L'USB nécessite une horloge assez précise.

Une souris n'a pas besoin de suivre en temps réel, et il n'y a aucune raison pour qu'elle soit synchronisée avec l'horloge du processeur. Son horloge USB doit être suffisamment proche de l'horloge USB de l'hôte pour que la communication fonctionne. La synchronisation de la rapidité avec laquelle les événements de souris se produisent ou le temps entre les événements de souris est géré dans l'hôte. La souris envoie simplement des informations sur ce qu'elle sent se produire.

Ajoutée

Ce qui précède a été écrit en réponse à la question d'origine, qui ne mentionnait pas que cette souris n'était pas USB. Étant donné que presque toutes les nouvelles souris sont USB depuis une décennie ou plus, il était raisonnable de répondre dans ce contexte. Lorsque vous posez des questions sur quelque chose d'inhabituel, il est de votre responsabilité de le préciser.

Bien qu'elle n'ait pas d'USB, cette souris avait toujours un processeur qui devait être cadencé. Il a également apparemment utilisé le timing pour mesurer la position des pots connectés à un joystick, autre chose que l'OP n'a pas mentionné. Il semble maintenant qu'un commentaire de supercat soit le plus pertinent, donc je le copie dans la réponse:

Le Commodore 64 possède des entrées potentiomètres qui mesurent le temps nécessaire pour charger des condensateurs fixes via des résistances variables. Le logiciel s'attend à ce qu'une souris se lise comme une valeur de résistance dans la plage 0-255, et qu'elle encapsule proprement 254, 255, 0, 1, etc., ce qui signifie que la souris doit chronométrer avec précision ses impulsions de sortie à moins de 0,4. %

1
@ user2417339 Parce que l'horloge du processeur n'est pas suffisamment précise. Le cristal fournit ce manque de précision au système
M.Ferru

9
Le fait est que pour l'USB, les deux extrémités doivent avoir une horloge raisonnablement précise. La souris a donc besoin d'un cristal pour faire fonctionner l'USB. Pourquoi ne pas utiliser l'horloge du PC hôte? La réponse courte est que l'USB ne donne pas à l'appareil une copie de l'horloge hôte. Pourquoi pas est un peu compliqué - beaucoup de choses différentes étaient échangées les unes contre les autres lorsque les spécifications USB ont été écrites, et cela a perdu.
Jack B

2
Votant, veuillez expliquer ce que vous pensez être faux.
Olin Lathrop

3
@OlinLathrop: Le Commodore 64 possède des entrées potentiomètres qui mesurent le temps nécessaire pour charger des condensateurs fixes via des résistances variables. Le logiciel s'attend à ce qu'une souris se lise comme une valeur de résistance dans la plage 0-255, et qu'elle encapsule proprement 254, 255, 0, 1, etc., ce qui signifie que la souris doit chronométrer avec précision ses impulsions de sortie à moins de 0,4. %.
supercat

2
@Jerry: La plupart d'entre eux ne sont que des fils, la seule information étant la couleur de l'isolant. Je pensais que deux d'entre eux seraient les lignes USB D + et D-, avec d'autres allant vers les boutons de la souris, peut-être des indicateurs LED, ou tout autre truc de fantaisie que cette souris pourrait faire au-delà d'être juste une souris.
Olin Lathrop

21

Le MOS 5717 a un peu de travail indépendant à faire seul pour créer la fonctionnalité de la souris à partir d'un ensemble d'encodeurs optiques.

La description de la fiche technique l' indique le mieux car,

Le 5717 est un contrôleur de souris CMOS personnalisé pour le Commodore 64. Il sera logé dans le corps d'une souris à deux boutons, ce qui lui permettra d'être branché sur le port du joystick 64 et de fournir le contrôle de la souris du logiciel GEOS, etc. Il atteint la fonction de souris en mettant à la terre les lignes POTX et POTY de la puce SID à différents moments du cycle SID 512uS pour fournir au 64 des informations de position.

Avant que les ADC ne soient libres d'ajouter à peu près n'importe quel circuit intégré, l'interface SID utilisait le temps de charge / décharge créé avec un potentiomètre et un condensateur d'intégration d'entrée pour estimer la valeur du «pot». Le 5717 émule un potentiomètre avec des sorties numériques en contrôlant la synchronisation du signal sur les lignes POT.


3
Mettez la fiche technique dans la machine de retour au cas où. web.archive.org/web/99991232235959/http://…
Oskar Skog

4

Vous pouvez voir un tel oscillateur dans de nombreux appareils électroniques de nos jours. Un microcontrôleur exécute l'opération à chaque tick. Pour contrôler et comprendre ce que fait le µC, vous avez besoin d'une horloge précise. La plupart des µC ont une horloge intégrée mais elle n'est pas très précise .

Comme l'a dit @Olin Lathrop, cette horloge précise est éventuellement nécessaire pour le protocole USB ou, pour effectuer périodiquement des mesures ...


3

D'autres réponses ont couvert ce pour quoi le micro à l'intérieur de la souris a besoin d'une horloge. Cependant, ils n'ont pas couvert les parties les plus importantes de la question: -

Ne pourrait-il pas utiliser l'horloge de l'ordinateur?

La première chose à noter est que l'ordinateur ne lui donne pas d'horloge. S'il n'y en a pas, vous ne pouvez pas l'utiliser. À moins que vous ne vouliez configurer un connecteur personnalisé, bien sûr - mais alors vous devez persuader tous vos clients potentiels de modifier manuellement leurs ordinateurs. À moins que vos clients ne soient tous des experts en électronique extrêmement hardcore, cela ne sera pas une stratégie commerciale réussie!

Mais le plus important est la question de savoir pourquoil'ordinateur ne lui donne pas d'horloge. Pour que l'horloge soit assez rapide pour faire fonctionner le micro dans la souris, elle doit être assez rapide - quelques centaines de kHz est le minimum absolu, et plus normalement, vous êtes en MHz pour les micros même très anciens. Le 5717 s'attendait apparemment à une horloge de 4 MHz. Le problème ici est que, sauf si vous faites très attention à la construction du câble, à la provenance et à la descente du signal et à tous les aspects intéressants associés aux communications numériques rapides, ce que vous créez lorsque vous mettez 4 MHz sur un câble est un émetteur radio. Il est absolument possible de bien faire cela sans diffuser dans le monde - USB, DVI et HDMI parviennent à envoyer des données numériques à des taux élevés - mais ce n'est en aucun cas simple. Donc, les gens n'envoient généralement pas d'horloges sur de longs câbles à moins d'avoir une bonne raison de le faire.

De plus, s'il a son propre cristal, ne pourrait-il pas se désynchroniser avec l'horloge du processeur?

Vous avez absolument raison de dire que si la souris produit des données que le processeur doit lire de façon synchrone, la souris aura besoin de l'horloge du processeur. (En fait, vous pouvez vous débrouiller avec une horloge synchrone plus lente et vous multiplier à l'autre extrémité, mais oublions cela pour le moment, pour plus de simplicité.) Alors, c'est ça?

Encore une fois, en regardant le système, la réponse est clairement «non». Le 5717 change de résistance lorsque l'utilisateur déplace la souris. L'utilisateur ne va pas déplacer la souris aussi rapidement, et l'utilisateur peut déplacer la souris quand il le souhaite, il n'est donc pas nécessaire qu'elle soit synchronisée avec l'horloge. Dans le pire des cas, la résistance change à mi-chemin pendant que le CPU le lit, et le CPU obtient la valeur la plus basse ou la valeur la plus élevée. La prochaine fois, la résistance reste stable et le CPU obtient la valeur finale. Étant donné que la souris ne se déplace qu'à la vitesse de la main de l'utilisateur, personne ne se soucie plus ou moins d'un échantillon pour atteindre la valeur finale.

Donc, pour répondre à vos questions dans l'ordre inverse:

  • Peu importe si elle n'est pas synchronisée avec l'horloge du processeur.
  • Il y a de bonnes raisons techniques de ne pas envoyer l'horloge du processeur sur un câble, sauf si c'est absolument nécessaire, et dans ce cas, ce n'est pas le cas.

Même avec des interfaces modernes, il est suggéré d' éloigner l'électronique numérique des équipements RF . (Dans ce cas particulier, garder une certaine séparation entre un concentrateur USB et un émetteur-récepteur radio amateur.)
un CVn
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.