Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 为什么adc总是读取1023而不考虑输入_Arduino_Embedded_Avr_Attiny_Winavr - Fatal编程技术网

Arduino 为什么adc总是读取1023而不考虑输入

Arduino 为什么adc总是读取1023而不考虑输入,arduino,embedded,avr,attiny,winavr,Arduino,Embedded,Avr,Attiny,Winavr,我正在尝试使用attiny85中的ADC读取模拟电压。但无论给定什么输入,ADC寄存器总是读取1023 此外,当使用万用表测量ADC引脚时,显示接近3.1V。我估计它是拉上去的,但事实是,当我把引脚连接到它的模拟输入时,引脚上的电压会干扰输入电压电路。我不知道为什么会这样。同样的代码在6个月前运行良好,但现在不是。原因不明。谁能解释一下我到底做错了什么?我使用USBasp作为我的程序员,attiny85作为我的目标微控制器,arduino作为我的编译器。我还尝试使用WinAVR进行编译,但模拟输

我正在尝试使用attiny85中的ADC读取模拟电压。但无论给定什么输入,ADC寄存器总是读取1023

此外,当使用万用表测量ADC引脚时,显示接近3.1V。我估计它是拉上去的,但事实是,当我把引脚连接到它的模拟输入时,引脚上的电压会干扰输入电压电路。我不知道为什么会这样。同样的代码在6个月前运行良好,但现在不是。原因不明。谁能解释一下我到底做错了什么?我使用USBasp作为我的程序员,attiny85作为我的目标微控制器,arduino作为我的编译器。我还尝试使用WinAVR进行编译,但模拟输入引脚的电压仍然接近3.1V。 提前感谢:)

#定义F#U CPU 1600000UL
#定义myTx PB1//PB1
#定义myRx PB0//PB0
#定义ADC_Chu_2 PB4
#定义ADC_Chu_3 PB3
#包括
#包括


当ADC配置2.56V作为参考电压时,2.56级及以上的所有电压将被读取为ADC的最大值,即1023。 3.1伏也是如此

问题可能在于启用的内部上拉:

PORTB |= (1 << ADC_CH_2) | (1 << ADC_CH_3); //  writing 1 to an input pin activates pullup-resistor

PORTB |=(1我正在研究该代码,但我必须问一下,没关系吗?ADMUX&=~(1在ISR中进行浮点操作和串行数据记录充其量是不明智的。@dunajski实际上变量temp是ADMUX。在这里输入代码时,我忘了更改它。有一条定律,当你问一些事情时,有人只回答一个问题:-)。我问的其他问题如何,然后我认为你应该编辑你的帖子,让他更“有吸引力”地回答,而不会出现这些bug。我的道歉@dunajski,我会编辑并重新发布。谢谢你纠正我。上拉已禁用。但仍然存在相同的问题。但这不会改变我的答案:3.1V>2.56V,你将有ADC值1023。检查示意图或使用其他参考电压(例如Aref或AVCC)在
REFS1:0
ADMUX
寄存器的位@AterLux中,您建议禁用上拉的解决方案对其他adc引脚有效。但即使禁用上拉后,adc3仍然读取1023。原因可能是什么?我使用电阻分压器应用了421mV的测试输入,并使用多电平分压器验证了它仪表。ADC在adc2,adc1中读取正确的值。但是adc3读取1023。我得到了解决方案。当我用另一个ATINY85替换部件(mcu)时,一切都正常工作。感谢大家的讨论
PORTB |= (1 << ADC_CH_2) | (1 << ADC_CH_3); //  writing 1 to an input pin activates pullup-resistor
PORTB &= ~(1 << ADC_CH_2) & ~(1 << ADC_CH_3); //  disable pull-ups