繁体   English   中英

AVR:atmega328p ADC始终读取最大值

[英]avr: atmega328p ADC always reads max value

我一直在尝试使用c中的atmega328p采样模拟信号。 以前,我已经使用类似的工具进行此工作,但是这次我无法以某种方式工作。 我试图做一个最小的例子,让我得到相同的结果:

#include <avr/io.h>

uint8_t data[2];    

ADMUX = (1 << REFS0);
ADCSRA = (1 << ADEN);

ADCSRA |= (1 << ADSC);
while (ADCSRA & (1 << ADSC));
data[1] = ADCL;
data[0] = ADCH;

此代码导致数组data = {0b00000011, 0b11111111} ,无论如何。 由于atmega328p具有10位ADC,这是最大值,所以我可能做错了什么,但我无法发现错误。

预先感谢您的任何答案

问候,伤害

看来您正在尝试读取PC0引脚ADC0。 确保将PC0连接到GND或其他已知电压; 如果它是浮动的,您将获得无法预测的结果。

您还应该尝试将0x87写入ADMUX以减慢ADC的时钟。

如果您需要更多帮助,则应张贴完整的代码和图片,以显示所有接线方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM