我在PIC16F887上工作,我的任务主要是基于adc读数(8bit)。有10个不同的模拟输入,因此逐个读取它们需要相当长的时间。时钟是20 The,模数转换器唯一允许的器件频率是Fosc/32 (当然是20 the时钟),这导致了TAD=1.6us
准确的adc读数应为10TAD(由于8位读取),简短地说是16us。
问题来了;例如,如果我使用10us会发生什么情况。我想要更小的延迟。我认为PIC的ADC模块使用了逐次逼近。这是否意味着首先读取最重要的位?我认为前4位的精确度对于我的计算已经足够了。但是剩余位的值是什么呢?它们会是零吗?或者身份不明,可能是任何级别的?
提前感谢
发布于 2013-08-18 14:18:33
请阅读PIC16F887手册中的模数转换器部分。查找有关如何使用ADC端口的特定信息。通常,不必使用在ADC端口运行时轮询ADC端口的代码。也就是说,您可以激活ADC端口,硬件将执行连续近似,完成后,硬件将在您的程序可以引用的寄存器中发布一个位。
这意味着您的代码可以多路复用多个ADC端口,并且只需在ADC为您的代码准备好样本时才需要处理来自ADC的数据。在这一点上,您需要考虑的是您自己使用ADC数据的代码的效率。
同一本手册将告诉您是否可以中断ADC以获取前四位,等等。它还将告诉您如何将ADC端口的时钟设置为不同的频率。
最后,你最好自己读这篇文章。如果您有特定的问题,请重新询问,并提供手册、页码和您的特定问题的链接。
https://stackoverflow.com/questions/18294433
复制相似问题