¿Por qué un ratón necesita un cristal?

22

Estaba mirando este esquema para un mouse viejo (pre USB):

ingrese la descripción de la imagen aquí

cuando noté que tenía un cristal (Y1). Tenía curiosidad por qué un ratón necesitaría un temporizador? ¿No podría usar el reloj de la computadora? Además, si tiene su propio cristal, ¿no podría estar fuera de sincronización con el reloj de la CPU?

Tyler H
fuente
1
¿De dónde sacaste ese esquema? Hay algunos errores: por ejemplo, la polaridad de los fotodiodos se invierte.
Cuajada
1
@curd el esquema vino de aquí: commodore.ca/manuals/funet/cbm/schematics/misc/index.html
Tyler H
77
Quizás el "cristal" es en realidad solo un resonador de cerámica. Por cierto: ¿Por qué esperas que no haya generación de reloj dentro de un mouse? Incluso es probable que haya varios subcircuitos dentro de la computadora, tal vez incluso en la placa base, que tienen su propia generación de reloj (osciladores de cristal).
Cuajada
44
Como dice la respuesta de @OlinLathrop, la MCU del mouse no está tratando de sincronizarse con el microprocesador (MCU) del sistema Host. El MCU del mouse solo quiere estar sincronizado con el puerto de comunicaciones, ya sea USB, RS232C o cualquier otra cosa.
TonyM
55
Desde su enlace, parece que este mouse estaba destinado a falsificar un joystick. Si la interfaz del joystick no fue diseñada para tener una señal de reloj, entonces no hay señal de reloj disponible para que la use el mouse.
The Photon

Respuestas:

25

Es probable que esa cosa del MOS 5717 sea un microcontrolador o alguna parte que ejecute código. Necesita un reloj para funcionar.

Sin embargo, solo un reloj para un micro no necesita precisión de cristal. Eso es probablemente para la comunicación. USB requiere un reloj de bastante alta precisión.

Un mouse no necesita rastrear en tiempo real, y no hay razón para estar sincronizado con el reloj de la CPU. Su reloj USB solo debe estar lo suficientemente cerca del reloj USB del host para que la comunicación funcione. Momento sobre la rapidez con que ocurren los eventos del mouse o el tiempo entre eventos del mouse se maneja en el host. El mouse solo envía información sobre lo que siente que sucede.

Adicional

Lo anterior se escribió en respuesta a la pregunta original, que no mencionaba que este mouse no fuera USB. Dado que casi todos los nuevos ratones han sido USB durante una década o más, era razonable responder en ese contexto. Cuando preguntas sobre algo inusual, es tu responsabilidad dejarlo claro.

A pesar de no tener USB, este mouse todavía tenía un procesador que necesitaba ser sincronizado. Aparentemente, también utilizó el tiempo para medir las posiciones de las ollas conectadas a un joystick, algo más que el OP no mencionó. Parece ahora que un comentario de supercat es más relevante, así que lo estoy copiando en la respuesta:

El Commodore 64 tiene entradas de potenciómetro que miden el tiempo requerido para cargar condensadores fijos a través de resistencias variables. El software espera que un mouse se lea como un valor de resistencia en el rango de 0-255, y que se ajuste perfectamente a 254, 255, 0, 1, etc., lo que significa que el mouse tiene que cronometrar con precisión sus pulsos de salida a menos de 0.4 %
Olin Lathrop
fuente
1
@ user2417339 Porque el reloj de la CPU no es lo suficientemente preciso. El cristal proporciona esta falta de precisión al sistema
M.Ferru
99
El punto es que para USB, ambos extremos deben tener un reloj razonablemente preciso. Entonces, el mouse necesita un cristal para que el USB funcione. ¿Por qué no usar el reloj de la PC host? La respuesta corta es que el USB no le da al dispositivo una copia del reloj del host. Por qué no es un poco complicado: muchas cosas diferentes se intercambiaban entre sí cuando se escribió la especificación USB, y eso se perdió.
Jack B
2
Votante, por favor explique lo que piensa que está mal.
Olin Lathrop
3
@OlinLathrop: El Commodore 64 tiene entradas de potenciómetro que miden el tiempo requerido para cargar condensadores fijos a través de resistencias variables. El software espera que un mouse se lea como un valor de resistencia en el rango de 0-255, y que se ajuste perfectamente a 254, 255, 0, 1, etc., lo que significa que el mouse tiene que cronometrar con precisión sus pulsos de salida a menos de 0.4 %
supercat
2
@Jerry: La mayoría de ellos son solo cables con la única información del color del aislamiento. Pensé que dos de ellos serían las líneas USB D + y D-, y otros irían a los botones del mouse, tal vez los indicadores LED o cualquier otra cosa elegante que este mouse pudiera estar haciendo más allá de ser solo un mouse.
Olin Lathrop
21

El MOS 5717 tiene mucho trabajo independiente que hacer para crear la funcionalidad del mouse a partir de un conjunto de codificadores ópticos.

La descripción de la hoja de datos lo indica mejor como,

El 5717 es un controlador de mouse CMOS personalizado para el Commodore 64. Se alojará en el cuerpo de un mouse de dos botones, lo que le permite enchufarlo al puerto del joystick 64 y proporcionar el control del mouse del software GEOS, etc. Alcanza la función del mouse conectando a tierra las líneas POTX y POTY del chip SID en diversos momentos del ciclo SID 512uS para proporcionar al 64 información posicional.

Antes de que los ADC fueran libres de agregar a casi cualquier IC, la interfaz SID usaba el tiempo de carga / descarga creado con el potenciómetro y un condensador de integración de entrada para estimar el valor 'pot'. El 5717 emula un potenciómetro con salidas digitales controlando la sincronización de la señal en las líneas POT.

sstobbe
fuente
3
Coloque la hoja de datos en la máquina wayback por si acaso. web.archive.org/web/99991232235959/http://…
Oskar Skog
4

Puede ver ese oscilador en muchos dispositivos electrónicos hoy en día. Un microcontrolador ejecuta la operación en cada tic. Para controlar y comprender lo que está haciendo el µC, necesita un reloj preciso. La mayoría de µC tiene un reloj incorporado, pero no es muy preciso .

Como dijo @Olin Lathrop, este reloj preciso se necesita eventualmente para el protocolo USB o, para realizar algunas mediciones periódicamente ...

M.Ferru
fuente
3

Otras respuestas han cubierto para qué necesita el micro dentro del mouse un reloj. Sin embargo, no han cubierto las partes más importantes de la pregunta:

¿No podría usar el reloj de la computadora?

Lo primero a tener en cuenta es que la computadora no le está dando un reloj. Si no hay uno para usar, no puede usarlo. A menos que desee configurar un conector personalizado, por supuesto, pero luego debe persuadir a todos sus clientes potenciales para que modifiquen manualmente sus computadoras. A menos que sus clientes sean expertos en electrónica extremadamente exigentes, ¡esta no será una estrategia comercial exitosa!

Más importante aún es la pregunta de por quéla computadora no le da reloj. Para que el reloj sea lo suficientemente rápido como para ejecutar el micro en el mouse, debe ser bastante rápido: unos pocos cientos de kHz es el mínimo absoluto, y más normalmente estás en MHz incluso para micros muy antiguos. El 5717 aparentemente esperaba un reloj de 4MHz. El problema aquí es que, a menos que tenga mucho cuidado con la construcción del cable, el origen y el hundimiento de la señal, y todos los aspectos interesantes asociados de las comunicaciones digitales rápidas, lo que crea cuando coloca 4MHz en un cable es un transmisor de radio. Es absolutamente posible hacerlo bien sin transmitir al mundo: USB, DVI y HDMI logran enviar datos digitales a altas velocidades, pero de ninguna manera es sencillo. Por lo tanto, las personas generalmente no envían relojes por cables largos a menos que tengan una buena razón para hacerlo.

Además, si tiene su propio cristal, ¿no podría estar fuera de sincronización con el reloj de la CPU?

Tiene toda la razón en que si el mouse produce datos que la CPU debe leer sincrónicamente, entonces necesitará el reloj de la CPU. (En realidad, puedes pasar con un reloj síncrono más lento y multiplicarte en el otro extremo, pero olvidemos eso por el momento, por simplicidad). Entonces, ¿lo hace?

Una vez más, mirando el sistema, la respuesta es claramente "no". El 5717 cambia su resistencia a medida que el usuario mueve el mouse. El usuario no va a mover el mouse tan rápido, y el usuario puede mover el mouse cuando lo desee, por lo que no es necesario que esté sincronizado con el reloj. En el peor de los casos, la resistencia cambia a la mitad de la lectura de la CPU, y la CPU obtiene el valor más bajo o el más alto. La próxima vez, la resistencia se mantiene estable y la CPU obtiene el valor final. Dado que el mouse solo se mueve a la velocidad de la mano del usuario, a nadie le importa más o menos una muestra para llegar al valor final.

Entonces, para responder sus preguntas en orden inverso:

  • No importa si no está sincronizado con el reloj de la CPU.
  • Hay buenas razones técnicas para no enviar el reloj de la CPU por un cable a menos que sea absolutamente necesario, y en este caso no es así.
Graham
fuente
Incluso con interfaces modernas, se sugiere alejar la electrónica digital de los equipos de RF . (En ese caso particular, mantener cierta separación entre un concentrador USB y un transceptor de radioaficionado.)
un CVn