![]() |
1
0
第一个问题是您的位偏移,应该是
下一个问题是结果阅读。您将ADMUX的第五位设置为1,因此ADLAR=1,并且在该模式下,结果将左调整,因此您应该读取ADCH。 此外,当您切换到10位分辨率时,即开始处理多字节结果时,请注意仅读取ADCL是不够的,请参阅数据表23.3以获取解释: 一旦ADCL被读取,ADC对数据寄存器的访问将被阻止。这意味着如果ADCL已被读取,并且转换在ADCH被读取之前完成,则两个寄存器都不会更新,转换的结果也会丢失。当ADCH被读取时,ADC对ADCH和ADCL寄存器的访问将被重新启用 最后,使用硬编码延迟进行读取并不是一种好的做法,尤其是当您稍后更改代码以尽可能快地读取ADC时。在这种情况下,在转换开始后,您应该检查是否设置了ADIF标志,或者在设置ADEN时是否与中断进行反应。有关详细信息,请参阅数据表。 |
![]() |
Devjeet Mandal · 10位ADC值到电压测量 7 年前 |
![]() |
Nicholas Lee · atmega128中电位器adc的实践 7 年前 |
![]() |
user3484569 · adc p24f16ka101错误值微芯片 11 年前 |