【发布时间】:2021-10-23 16:43:31
【问题描述】:
我想在 Microchip Studio 中设置我的 Arduino 的 ADC0 通道,但遇到了一个奇怪的问题。我想初始化 ADCSRA 寄存器中除 ADIF 之外的所有位。我通过在我的 main 中调用一个 init-Function 来做到这一点,该函数在外部源文件中定义。我尝试了几种方法来写这些位,结果总是一样的,所以假设我这样做很平淡
ADCSRA = 0xEF;
无论我如何写入这些位,当我调试这一步时,寄存器中的值在 Autos 窗口中显示为 -81,而在数据寄存器中的 Hex-Wert 显示为 0xAF。但是,根据数据手册,0xEF 被写入寄存器 0x18,该寄存器是为系统保留的。
在这之前的一步,我将 ADMUX 寄存器设置为 ADMUX |= (1 << ADLAR);,效果很好。
我不知道这里发生了什么。如果有人能引导我找到解决方案,那将不胜感激。提前致谢。
【问题讨论】:
-
0xAF是0xEF - 0x40。那是ADSC位。检查该位的数据表。 -
但是为什么不设置呢?我发现唯一的事情是第一次转换会比平时花费更长的时间,但是只要转换正在进行,该位就应该读为 1,对吧?
标签: arduino cpu-registers atmega adc atmelstudio