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.

[参考译文] 编译器/MSP430G2553:MSP430 ADC在发布模式下不工作

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/615251/compiler-msp430g2553-msp430-adc-does-not-work-in-release-mode

部件号:MSP430G2553

工具/软件:TI C/C++编译器

您好,

我在PCB上有一个MSP430G2553器件,我可以通过启动板对其进行编程。 我在设备上加载一段代码,只要PCB连接到启动板,就能正常工作。 该代码由PWM和ADC组成。 我一断开与启动板的连接并为PCB提供3.5V电源,ADC就停止工作,但PWM仍然工作。 我知道ADC停止工作是因为我从引脚读取并根据读数输出一些内容,而输出信号在释放模式下没有显示任何内容。  

我遇到了第二个问题,让代码在释放模式下工作。 我当前正在以1MHz运行设备。 如果我以16MHz的频率运行设备,当连接到启动板时,它将再次正常工作。 在释放模式下,PWM的工作方式与以前一样,高达12MHz的DCO频率。 但在16MHz时,即使PWM也会在释放模式下停止工作。  

关于为什么会出现这种情况或我可以执行什么操作的任何建议或建议,代码在发布模式下有效?

提前非常感谢。

下面是供您参考的代码:  

#include "msp430G2553.h"
#include <stdint.h>

//void ConfigureADC()
void ConfigureADC(void)

{
ADC10CTL1 |= inch_5; //从WFP 1.5 读取,浮式引脚
ADC10CTL0 || SREF_0 + ADC10SHT_3 + ADC10ON + ADC10IE;
ADC10AE0 |= BIT5;
}

易失性uint8_t A0;			//此处存储ADC位

//状态名称
static uint8_t S0 = 0;
静态uint8_t S1 = 0;

void main( void )
{//
停止看门狗计时器
	WDTCTTL =(WDTPW | WHODTLD);

//将范围设置为1MHz
BCSCTL1 = CALLM;
//将DCO步进和调制设置为1MHz
DCOCTL = CALDCO_1MHz;
// BCSCTL2 &=~(divs_3);

P1SEL |= 0x40; 	//将WFP 1.6 的特殊功能设置为定时器模块
P1DIR |=0x5F; 	//设置为输出方向
P2DIR |= 0x0F;
P1OUT |= 0x00; 			//设置WFP 1.0 打开,1.1 关闭
P2OUT |=0x00;

// PWM频率40kHz (25us)
TA0CCR0 =25;
//以占空比基址
TA0CCR1 =4;
//重置/设置模式
TA0CCTL1 = OUTMOD_7;
// SMCLK,分频器1,上行模式
TA0CTL = 4; EC_ADC_1;




//启用全局中断

//无限循环-主程序
,同时(1){


		ADC10CTL0|= ENC + ADC10SC;//开始采样和转换
	__bis_sr_register (CPUOFF + GIE );

	A0 = ADC10MEM & 0x1f;	//要获取5位随机编号

			,如果(! S0 &&!S1)
			{

				P1OUT = A0;	//随机选择引脚(WFP 1.0 到WFP 1.4)
				P2OUT = 0x00;	

				__DELAY周期(3200);	//脉冲持续时间
				//S0,转至下一状态标志
				=0;
				S1 = 1
			;}

			如果(!S0 &&S1)
			{

				P1OUT = A0;//	随机选择引脚(WFP 1.0 至WFP 1.4 ;
				P2OUT = 0x0C;	

				__DELAY周期(1000);	//脉冲持续时间

				S0 =1;
				S1 =0;}

			

			如果(S0 &&&! S1)
			{

				P1OUT = A0;//	随机选择引脚(WFP 1.0 至WFP DEP09 1.4 )
					

				;=0x0_DEP0; 	//脉冲持续时间

				S0 = 1;
				S1 = 1;

			}

			如果(S0 && S1)
			{

				P1OUT = A0;	//随机选择引脚(WFP 1.0 至1.4)
				P2OUT = 0x00;	

				__DELAY周期(3200);	//脉冲持续时间
				S0 = 0;
				S1 = 0;
			}



}

}//

ADC中断服务例程
#pragma vector = ADC10_vector
__interrupt void ADC10_ISR( void )
{
__BIC_SR_REGISTER_ON_EXIT(CPUOFF);//返回活动模式
}

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

    您好,Sahar:

    我有一些提示,希望可以帮助您调试问题:

    1.初始化DCO时,您需要考虑勘误表文档 www.ti.com/lit/pdf/slaz440中的BCL12错误, 并实施变通办法。 我怀疑这可能与您的16MHz问题有关。 请按照2xx用户指南 www.ti.com/lit/pdf/slau144中TLV结构章节中提到的顺序 清除DCOCTL,加载BCSCTL1,然后加载DCOCTL。

    DCOCTL = 0; //选择最低DCOx和MODx设置
    BCSCTL1 = CALC1_16MHz; //设置范围
    DCOCTL = CALDCO_16MHz; //设置DCO步进+调制 

    2.使用一个完全未使用的引脚(您必须考虑在main中写入P1OUT并进行相应调整) 将引脚切换添加到ADC10_ISR中。 这样,您就可以判断您是否曾进入ISR,以及 在失败的情况下,进入ISR的频率。 当您遇到问题时,这可以提供有关代码流的线索。

    3. MSP430 DVcc引脚是否实际可以看到3.5V电压? 或者电压是否通过MSP DVcc可能较低的其他电路? 我问是因为16MHz的最小允许电压是3.3V。

    这些问题应该有助于更好地了解正在发生的事情。

    此致,

    Katie

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

    上述建议是否有帮助,或者您是否仍遇到问题?

    此致,
    Katie
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Katie:
    非常感谢您的建议。 我的问题现在已经解决了。
    所以不,我在电源和微控制器之间没有电路。 当我向PCB提供3.5V电压时,ADC不工作,但我发现如果提供3.4V和3.2V电压,ADC就可以工作。 如果微控制器提供3.1V和3.3V电压,则ADC也不工作。 因此我假设问题在于电源,但我不知道为什么它仅在某些特定电压下工作。
    关于CPU以16MHz运行时无法生成任何信号的问题,问题仍然存在。 当PCB连接到JTAG时,所有信号在16MHz时看起来都很好,但当PCB随电源提供时,信号不起作用。 我尝试以100mV的步进从2.5V升至4V,以查看是否会产生影响,但这没有帮助。
    我按照您的建议尝试了用户手册中的建议,但未能实现。
    目前,我正在为PCB提供3.4V的电压,并以12MHz的频率运行CPU,一切都正常。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Sahar:

       RST线路上是否有47k上拉电阻至Vcc? 这是必需的连接(请参阅用户指南 www.ti.com/lit/pdf/slau144的“未使用引脚的连接”部分2.5 ),我可以看到通过JTAG连接,该线路将由JTAG驱动,因此它可以屏蔽问题, 但如果您没有上拉,则当您向外部主板提供Vcc时,该线可能不高。

    此外,我建议您检查用户指南 www.ti.com/lit/pdf/slau144 部分22.2 9 ADC10接地和噪音注意事项中是否有DVcc和AVcc的建议盖,以及DVcc和AVcc是否连接在一起。 ADC来自AVcc,因此如果您的电路板上未连接,那么ADC不工作但其他功能工作的原因可能是合理的...

    此致,

    Katie

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

    这是否有帮助? 您是否能够解决您的问题?

    此致,
    Katie