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