我正在研究 PIC16F887,我的任务主要基于 adc 读数(8 位)。 有 10 个不同的模拟输入,因此逐个读取它们需要相当长的时间。 时钟为 20Mhz,adc 唯一允许的设备频率为 Fosc/32(当然对于 20mhz 时钟),结果为 TAD=1.6us
准确的 adc 读数应该需要 10 TAD(由于 8 位读数),短暂的 16us。
问题来了; 例如,如果我使用 10us 会发生什么。我想要更小的延迟。我认为 PIC 的 ADC 模块使用逐次逼近。这是否意味着首先读取最高有效位?我认为前 4 位的准确性足以满足我的计算需求。但是剩余位的值是多少?他们会是零吗?或身份不明,可能是任何级别?
提前致谢
最佳答案
阅读 PIC16F887 手册的 ADC 部分。查找有关如何使用 ADC 端口的具体信息。通常,没有必要使用在运行时轮询 ADC 端口的代码。也就是说,您可以激活一个 ADC 端口,硬件将进行逐次逼近,完成后硬件将在您的程序可以引用的寄存器中发布一个位。
这意味着您的代码可以多路复用多个 ADC 端口,并且只需要在 ADC 为您的代码准备好样本时处理来自 ADC 的数据。届时您将考虑您自己使用 ADC 数据的代码的效率如何。
同一手册会告诉您是否可以中断 ADC 以获取前四位等。它还会告诉您如何将 ADC 端口的时钟设置为不同的频率。
最后,您最好自己阅读一下。如果您有具体问题,请重新询问并提供手册链接、页码和您的具体问题。
关于c - 使用较短的延迟读取 PIC 的 ADC 模块的效果(在 PIC C 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18294433/