0

我正在研究 PIC16F887,我的任务主要基于 adc 读数(8 位)。有 10 种不同的模拟输入,因此逐一读取它们需要相当长的时间。时钟是 20Mhz,adc 唯一允许的设备频率是 Fosc/32(当然是 20mhz 时钟),结果 TAD=1.6us

准确的 adc 读数应为 10 TAD(由于 8 位读数),短暂为 16us。

问题来了;例如,如果我使用 10us 会发生什么。我想要更小的延迟。我认为PIC的ADC模块使用逐次逼近。这是否意味着首先读取最高有效位?我认为前 4 位的精度足以满足我的计算需求。但是剩余位的值是多少?他们会是零吗?或身份不明,可能是任何级别?

提前致谢

4

1 回答 1

2

阅读 PIC16F887 手册的 ADC 部分。查找有关如何使用 ADC 端口的具体信息。通常,没有必要在运行时使用轮询 ADC 端口的代码。也就是说,您可以激活一个 ADC 端口,硬件将进行逐次逼近,完成后,硬件将在您的程序可以引用的寄存器中发布一个位。

这意味着您的代码可以多路复用多个 ADC 端口,并且只有在为您的代码准备好样本时才担心处理来自 ADC 的数据。此时,您的考虑将是您自己的代码使用 ADC 数据的效率如何。

同一手册将告诉您是否可以中断 ADC 以获取前四位等。它还将告诉您如何将 ADC 端口的时钟设置为不同的频率。

最后,最好自己阅读这篇文章。如果您有具体问题,请使用手册链接、页码和您的具体问题重新提问。

于 2013-08-18T06:18:33.293 回答