Perché un mouse ha bisogno di un cristallo?


22

Stavo guardando questo schema per un vecchio mouse (pre USB):

inserisci qui la descrizione dell'immagine

quando ho notato che aveva un cristallo (Y1). Ero curioso di sapere perché un mouse avrebbe bisogno di un timer? Non sarebbe in grado di utilizzare l'orologio dal computer? Anche se ha il suo cristallo non potrebbe non sincronizzarsi con il clock della CPU?


1
Da dove hai preso quello schema? Ci sono alcuni errori: ad es. La polarità dei fotodiodi è invertita.
Cagliata,


7
Forse il "cristallo" è in realtà solo un risuonatore ceramico. BTW: Perché ti aspetti che non ci sia generazione di clock all'interno di un mouse? È anche probabile che ci siano diversi sottocircuiti all'interno del computer, forse anche sulla scheda madre, che hanno una propria generazione di clock (oscillatori a cristallo).
Cagliata,

4
Come dice la risposta di @OlinLathrop, l'MCU del mouse non sta cercando di essere sincronizzato con il microprocessore del sistema host (MCU). Il mouse MCU vuole solo essere sincronizzato con la porta di comunicazione, sia essa USB, RS232C o qualsiasi altra cosa.
TonyM,

5
Dal tuo link, sembra che questo mouse abbia lo scopo di falsificare un joystick. Se l'interfaccia del joystick non è stata progettata per avere un segnale di clock, non è disponibile alcun segnale di clock da utilizzare per il mouse.
The Photon,

Risposte:


25

Quella cosa MOS 5717 è molto probabilmente un microcontrollore o una parte che esegue il codice. Ha bisogno di un orologio per funzionare.

Tuttavia, solo un orologio per un micro non ha bisogno della precisione del cristallo. Questo è probabilmente per la comunicazione. USB richiede un orologio abbastanza accurato.

Un mouse non ha bisogno di tracciare in tempo reale e non c'è motivo per essere sincronizzato con il clock della CPU. Il suo orologio USB deve essere abbastanza vicino all'orologio USB dell'host affinché la comunicazione funzioni. Tempistica della velocità con cui si verificano gli eventi del mouse o tempo tra gli eventi del mouse viene gestito nell'host. Il mouse invia semplicemente informazioni su ciò che rileva accadendo.

aggiunto

Quanto sopra è stato scritto in risposta alla domanda originale, che non ha fatto menzione di questo mouse che non è USB. Poiché praticamente tutti i nuovi mouse sono stati USB per un decennio o più, era ragionevole rispondere in quel contesto. Quando chiedi qualcosa di insolito, è tua responsabilità chiarirlo.

Pur non avendo USB, questo mouse aveva ancora un processore che doveva essere sincronizzato. Apparentemente ha anche usato il tempismo per misurare le posizioni dei piatti collegati a un joystick, qualcos'altro che l'OP non ha menzionato. Sembra ora che un commento di supercat sia molto pertinente, quindi lo sto copiando nella risposta:

Il Commodore 64 ha ingressi potenziometrici che misurano il tempo necessario per caricare i condensatori fissi attraverso resistenze variabili. Il software prevede che un mouse leggerà come un valore di resistenza nell'intervallo 0-255 e che avvolgerà in modo pulito 254, 255, 0, 1, ecc. Ciò significa che il mouse deve temporizzare accuratamente i suoi impulsi di uscita entro meno di 0,4 %

1
@ user2417339 Perché l'orologio della CPU non è abbastanza preciso. Il cristallo fornisce questa mancanza di precisione al sistema
M. Ferru,

9
Il punto è che per l'USB, entrambe le estremità devono avere un orologio ragionevolmente preciso. Quindi il mouse ha bisogno di un cristallo per far funzionare l'USB. Perché non usare l'orologio dal PC host? La risposta breve è che USB non fornisce al dispositivo una copia dell'orologio host. Perché no è un po 'complicato: molte cose diverse sono state scambiate l'una contro l'altra quando sono state scritte le specifiche USB e questo è andato perso.
Jack B,

2
Downvoter, ti preghiamo di spiegare cosa pensi sia sbagliato.
Olin Lathrop,

3
@OlinLathrop: il Commodore 64 ha ingressi potenziometrici che misurano il tempo necessario per caricare i condensatori fissi attraverso resistenze variabili. Il software prevede che un mouse leggerà come un valore di resistenza nell'intervallo 0-255 e che avvolgerà in modo pulito 254, 255, 0, 1, ecc. Ciò significa che il mouse deve temporizzare accuratamente i suoi impulsi di uscita entro meno di 0,4 %.
supercat,

2
@Jerry: molti di questi sono solo fili con l'unica informazione sul colore dell'isolamento. Immaginai che due di loro sarebbero state le linee D + e D-USB, mentre altre andavano verso i pulsanti del mouse, forse gli indicatori a LED o qualsiasi altra cosa fantasiosa che questo mouse potesse fare oltre ad essere solo un mouse.
Olin Lathrop,

21

MOS 5717 ha un po 'di lavoro indipendente da fare da solo per creare la funzionalità del mouse da un set di encoder ottici.

La descrizione dal foglio dati lo indica come,

Il 5717 è un controller mouse CMOS personalizzato per Commodore 64. Sarà alloggiato nel corpo di un mouse a due pulsanti, consentendogli di essere collegato alla porta 64 del joystick e di fornire il controllo del mouse del software GEOS, ecc. Raggiunge la funzione del mouse mettendo a terra le linee POTX e POTY del chip SID varie volte nel ciclo SID 512uS per fornire al 64 informazioni sulla posizione.

Prima che gli ADC fossero liberi di aggiungere praticamente a qualsiasi IC, l'interfaccia SID utilizzava il tempo di carica / scarica creato con potenziometro e un condensatore di integrazione di ingresso per stimare il valore "pot". Il 5717 emula un potenziometro con uscite digitali controllando la temporizzazione del segnale sulle linee POT.


3
Metti il ​​foglio dati nella macchina di ritorno per ogni evenienza. web.archive.org/web/99991232235959/http://…
Oskar Skog

4

Al giorno d'oggi puoi vedere un tale oscillatore in molti dispositivi elettronici. Un microcontrollore esegue l'operazione ad ogni tick. Per controllare e capire cosa sta facendo l'µC, è necessario un orologio preciso. La maggior parte dei µC ha un orologio incorporato ma non è molto preciso .

Come detto @Olin Lathrop, questo orologio preciso è necessario alla fine per il protocollo USB o, per eseguire periodicamente delle misurazioni ...


3

Altre risposte hanno riguardato il motivo per cui il micro all'interno del mouse necessita di un orologio. Tuttavia non hanno coperto le parti più importanti della domanda: -

Non sarebbe in grado di utilizzare l'orologio dal computer?

La prima cosa da notare è che il computer non gli sta dando un orologio. Se non ce n'è uno da usare, non puoi usarlo. A meno che tu non voglia impostare un connettore personalizzato, ovviamente - ma poi devi convincere tutti i tuoi potenziali clienti a modificare manualmente i loro computer. A meno che i tuoi clienti non siano tutti esperti di elettronica estremamente hardcore, questa non sarà una strategia aziendale di successo!

Ancora più importante è la domanda sul perchéil computer non gli sta dando un orologio. Affinché l'orologio sia abbastanza veloce da far funzionare il micro nel mouse, deve essere piuttosto veloce: poche centinaia di kHz sono il minimo assoluto e più normalmente sei su MHz anche per micros molto vecchi. Il 5717 apparentemente si aspettava un orologio da 4 MHz. Il problema qui è che, a meno che tu non sia molto attento alla costruzione del cavo, all'approvvigionamento del segnale e all'affondamento e a tutti gli aspetti interessanti associati delle comunicazioni digitali veloci, ciò che crei quando metti giù 4MHz un cavo è un trasmettitore radio. È assolutamente possibile farlo bene senza trasmettere al mondo - USB, DVI e HDMI riescono a inviare dati digitali a velocità elevate - ma non è affatto semplice. Quindi le persone generalmente non inviano orologi lungo cavi lunghi a meno che non abbiano una buona ragione per farlo.

Inoltre se ha il suo cristallo non potrebbe non sincronizzarsi con il clock della CPU?

Hai perfettamente ragione che se il mouse produce dati che la CPU deve leggere in modo sincronizzato, allora il mouse avrà bisogno del clock della CPU. (In realtà puoi cavartela con un orologio sincrono più lento e moltiplicare all'altra estremità, ma dimentichiamolo per il momento, per semplicità.) Quindi, vero?

Ancora una volta, guardando il sistema, la risposta è chiaramente "no". Il 5717 cambia resistenza mentre l'utente sposta il mouse. L'utente non sposterà il mouse così velocemente e l'utente può spostare il mouse quando lo desidera, quindi non è necessario che sia sincronizzato. Nel peggiore dei casi, la resistenza cambia parzialmente durante la lettura della CPU e la CPU ottiene il valore più basso o il valore più alto. La prossima volta, la resistenza rimane stabile e la CPU ottiene il valore finale. Poiché il mouse si sta muovendo solo alla velocità della mano dell'utente, a nessuno interessa molto più o meno un campione per raggiungere il valore finale.

Quindi, per rispondere alle tue domande in ordine inverso:

  • Non importa se non è sincronizzato con l'orologio della CPU.
  • Ci sono buone ragioni tecniche per non inviare il clock della CPU a un filo a meno che non sia assolutamente necessario, e in questo caso non è così non lo sono.

Anche con interfacce moderne, si suggerisce di allontanare l'elettronica digitale dalle apparecchiature RF . (In quel caso particolare, mantenendo una certa separazione tra un hub USB e un ricetrasmettitore radioamatore.)
un CVn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.