您好,
我从资源管理器中构建了ADC程序样本fet140_ADC12_01.c,以开始验证基于新MSP430F133的主板。 列表如下所示。 从原始示例程序中,我添加了P3调试代码,因为P3可以从电路板上的测试点访问。
当我编译和运行样本时,我在示波器上看到了大约70us锯齿图案。 这种模式很奇怪,因为它从3.2v上升到3.8v。 然后, 从3.8 到3.2 的缓慢衰减(约30US)。 它在3.2 继续工作40美元,然后返回到3.8 以完成循环。 这是非常可重复的。
我认为,在 开始ADC采样之前,到3.8v的步骤是主循环中的P3OUT |= 0x01。
为了测试一些定时,我在主中添加了一个延迟回路。 它是的(... 3.6万..)循环。 我想只要花时间来延长锯齿的使用时间就可以了。 情况并非如此。 在延迟回路未注释的情况下,锯齿模式完全消失,而WFP 3.0 销保持在3.2V水平。 无升压或降压,在3.2V时始终保持高电压...
我不知道是什么原因导致了这种行为。 感谢您的任何想法。
此外,当我从其他程序切换P3 GPIO输出引脚时,它们工作正常。 我从其他程序中基于其他计时器的ISR生成0-3.2V的方波,因此这不是硬件异常。
- Dave
#include <MSP4S.h>
内部主(无效)
{
易失性无符号int I;
volatile unsigned int j;
WDTCTL = WDTPW + WDTHOLD;//停止WDT
ADC12CTL0 = SHT0_2 + ADC12ON;//设置采样时间,打开ADC12
ADC12CTL1 = SHP;//使用采样计时器
ADC12IE = 0x01;//启用中断
ADC12CTL0 || ENC;//已启用转换
P6SEL |= 0x01;// WFP 6.0 ADC选项选择
P1DIR |= 0x01;// WFP 1.0 输出
P3DIR |=0x03;// WFP 3.0 和WFP 3.1 输出
P3OUT &=~0x03;//两个调试引脚均为低电平
(;;)
{
//用于(i=0;i<0x3.6万;i++)//延迟设置
//{
// j = i;
//}
P3OUT |= 0x01;//调试引脚高
ADC12CTL0 || ADC12SC;//采样打开
__bis_sr_register (CPUOFF + GIE);// LPM0,ADC12_ISR将强制退出
}
}
// ADC12中断服务例程
#if defined(__TI_Compiler_version__)|| defined(__IAR_SYSTEMS _ICC__)
#pragma vector=ADC12_vector
__interrupt void ADC12_ISR (void)
#Elif已定义(__GMNU__)
void __attribute__((interrupt (ADC12_vector))) ADC12_ISR (void)
#否则
错误编译器不受支持!
#endif
{
P3OUT &=~0x01;// ISR中的调试引脚偏低
IF (ADC12MEM0 < 0x7FF)
P3OUT =~0x02;//清除WFP 3.1 LED熄灭
否则
P3OUT |= 0x02;//将WFP 3.1 LED设置为打开
__BIC_SR_REGISTER_ON_EXIT (CPUOFF);//从0 (SR)清除CPUOFF位
}