This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430F5510:ADC10只读1023的值

Guru**** 2539500 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/573925/ccs-msp430f5510-adc10-reading-only-values-of-1023

部件号:MSP430F5510

工具/软件:Code Composer Studio

你好,我对此完全陌生。 我使用的是Olimex板,我尝试从带有热敏电阻的分压器读取模拟电压值。 模拟输入引脚处的值约为1.4V。 我只能打印1023 (最大值)。 我无法找出问题所在。 有人能指出我的错误吗?

#include <msp430f5510.h>
#include <stdio.h>

int main(void)
	{
	WDTCTL = WDTPW | WDTHOLD;						//停止看门狗计时器
	P1SEL = 0;										//端口1到数字IO
	P1DIR = BIT0;									//将1.0 设置为输出方向,所有其它设置为0
	P1OUT &=~B1LED								

	;/SIT0 (低电压) 		//启用A/D通道A0

	ADC10CTL0 |= ADC10ON;							//打开ADC10,设置采样时间
	ADC10CTL0 |= ADC10SHT_2;						//采样保持时间。 采样周期

	中的时钟周期数ADC10CTL1 |= ADC10SHP;							//将计时设置为在内部完成,而不是通过触发

	器ADC10MCTL0 |= ADC10SREF0; 		//选择AVCC和avss作为参考
	ADC10MCTL0 |= ADC10INCH0;						//启用a0



	volatile unsigned int I;
	printf ("完成设置\n");

	while (1){
		ADC10CTL0 |= ADC10ENC; 				//启用转换
		ADC10CTL0 |= ADC10SC;						//在
		((ADC10CTL1 & ADC10BUSY)==1)时触发新转换{}//
													仅在1 (繁忙)

		时等待i =5万;									// SW延迟,倒计时,使用时钟周期。
		我--;//										只是给出
		一个要做的事情(I !=0);

		printf ("temp =%d\n",ADC10MEM0);

	}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Dawn:

    您需要在WFP 6.0 上选择A0功能,而不是在WFP 1.0 上选择A0功能,并确保您的模拟输入已连接。

    此致,
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢Ryan! 我在发布后解决了这个问题,但忘记了回去编辑它。 我还必须删除第19行,
    ADC10MCTL0 |= ADC10INCH0;
    我仍然不知道为什么这会使它无法工作。

    黎明