我正在查看旧(USB前)鼠标的示意图:
当我注意到它上面有一个水晶时(Y1)。我很好奇为什么鼠标需要计时器?难道不能用电脑上的时钟吗?此外,如果它有自己的晶体,它会不会与 CPU 时钟不同步?
我正在查看旧(USB前)鼠标的示意图:
当我注意到它上面有一个水晶时(Y1)。我很好奇为什么鼠标需要计时器?难道不能用电脑上的时钟吗?此外,如果它有自己的晶体,它会不会与 CPU 时钟不同步?
那个 MOS 5717 很可能是一个微控制器或执行代码的某个部分。它需要一个时钟来运行。
然而,只是一个微型时钟不需要晶体精度。那可能是为了交流。USB 需要相当高精度的时钟。
鼠标不需要实时跟踪,也没有理由与 CPU 时钟同步。它的 USB 时钟必须与主机的 USB 时钟足够接近才能进行通信。鼠标事件发生的速度或鼠标事件之间的时间在主机中处理。鼠标只是发送有关它所感知到的事情的信息。
以上是针对原始问题编写的,其中没有提到这款鼠标不是 USB。由于几乎所有新鼠标都已使用 USB 十年或更长时间,因此在这种情况下回答是合理的。当你问一些不寻常的事情时,你有责任说清楚。
尽管没有 USB,但这款鼠标仍然有一个需要计时的处理器。它显然还使用时间来测量连接到操纵杆的罐子的位置,这是 OP 没有提到的。现在似乎 supercat 的评论最相关,所以我将其复制到答案中:
Commodore 64 具有电位计输入,可测量通过可变电阻为固定电容器充电所需的时间。软件预计鼠标将读取为 0-255 范围内的电阻值,并且它将干净地包裹 254、255、0、1 等,这意味着鼠标必须准确地将其输出脉冲计时在小于 0.4 %
MOS 5717 有相当多的独立工作要做,以通过一组光学编码器创建鼠标功能。
数据表中的描述表明它是最好的,
5717 是为 Commodore 64 定制的 CMOS 鼠标控制器。它将安装在一个两键鼠标的机身中,使其能够插入 64 操纵杆端口并提供 GEOS 软件的鼠标控制等。它通过在 SID 512uS 周期内的不同时间将 SID 芯片的 POTX 和 POTY 线接地,为 64 提供位置信息,从而实现鼠标功能。
在 ADC 可以自由添加到几乎任何 IC 之前,SID 接口使用由电位计和输入集成电容器创建的充电/放电时间来估计“电位”值。5717 通过控制 POT 线上的信号时序来模拟具有数字输出的电位器。
您现在可以在许多电子设备中看到这种振荡器。微控制器在每个滴答声中执行操作。要控制和了解 µC 正在做什么,您需要一个准确的时钟。大多数µC 都有内置时钟,但不是很准确。
正如@Olin Lathrop所说,USB协议最终需要这个准确的时钟,或者定期进行一些测量......
其他答案涵盖了鼠标内部的微型时钟需要时钟的用途。但是他们没有涵盖问题的最重要部分:-
难道不能用电脑上的时钟吗?
首先要注意的是计算机没有给它一个时钟。如果没有一个可以使用,你就不能使用它。当然,除非您想设置自定义连接器 - 但是您需要说服所有潜在客户手动修改他们的计算机。除非您的客户都是非常铁杆的电子专家,否则这不会是一个成功的商业策略!
更重要的是为什么计算机没有给它一个时钟。为了使时钟足够快以运行鼠标中的微控制器,它需要非常快 - 几百 kHz 是绝对最小值,更常见的是,即使是非常旧的微控制器,您也可以达到 MHz。5717 显然期望 4MHz 时钟。这里的问题是,除非您对电缆结构、信号源和接收器以及快速数字通信的所有相关有趣方面非常小心,否则当您将 4MHz 的电缆放入电缆时,您创建的就是无线电发射器。在不向世界广播的情况下完全可以做到这一点——USB、DVI 和 HDMI 设法以高速率发送数字数据——但这绝不是简单的。因此,除非有充分的理由,否则人们通常不会通过长电缆发送时钟。
另外,如果它有自己的晶体,它会不会与 CPU 时钟不同步?
您绝对正确,如果鼠标产生 CPU 必须同步读取时钟的数据,那么鼠标将需要 CPU 时钟。(实际上,您可以使用较慢的同步时钟并在另一端倍增,但为了简单起见,我们暂时忘记这一点。)是吗?
再一次,看看系统,答案显然是“不”。5717 会随着用户移动鼠标而改变其阻力。用户不会那么快地移动鼠标,并且用户可以随时移动鼠标,因此不需要时钟同步。最坏的情况是,电阻在 CPU 读取它的过程中发生变化,CPU 要么获得较低的值,要么获得较高的值。下一次,阻力保持稳定,CPU 获得最终值。由于鼠标仅以用户手的速度移动,因此没有人会或多或少地关心一个样本以获得最终值。
因此,以相反的顺序回答您的问题: