您好!
我已经参考了用于配置 msp430g2553 ADC10的示例程序、并为我的应用推断了以下代码:
我的目标是对最大采样频率为100Hz 的压力传感器进行采样。
1) 1)但是、我无法理解如何在 MSP430中配置采样率。
2) 2)此外、我已启用中断、但在调试时、不会请求中断功能、因此 P2.1上的 LED 不会亮起。
我测量了配置为 ADC 通道的 P1.0处的电压、测量值为0.5伏。 将其转换为数字值,我应该读取256。
请指导我配置 ADC10以及我应该进行哪些更正。
谢谢、
int 值= 0;
//
// uint16_t avg_adc = 0;
//函数原型
void ADC_Setup();
void adc_sam ();
#pragma vector=ADC10_vector
void main()
{
WDTCTL = WDTPW + WDTHOLD;//停止 WDT
BCSCTL1 = CALBC1_1MHz;//将 DCO 设置为1MHz
DCOCTL = CALDCO_1MHz;
BCSCTL2|=(DIVS_3);//smclk=dc0=1MHz,SMCLK/8
P2DIR |= BIT1;
P2OUT &=~BIT1;//将 P2.1配置为输出
// adc_setup 的 fucntion 调用
while (1)
{
ADC_Setup();
_DELAY_CYCLES (1000);
ADC_SAM();//针对 ADC_SAMP 的函数调用
//添加所有采样数据并除以10以得出平均值
// avg_adc =((adc[0]+adc[1]+adc[2]+adc[3]+adc[4]+adc[5]+adc[6]+adc[7]+adc[8]+adc[9])/10);
}
}
// ADC10中断服务例程
_interrupt void ADC10_ISR (void)
{
_BIC_SR_REGISTER_ON_EXIT (CPUOFF);//从0 (SR)清除 CPUOFF 位
值=ADC10MEM;
如果(值< 200)// ADC10MEM = A1 > 0.2V?
P2OUT &=~BIT1;//清除 P2.0 LED 关闭
其他
P1OUT |= BIT1;//将 P2.0 LED 设置为打开
}
// ADC 设置功能
void ADC_Setup()
{
ADC10CTL1 = CONSEQ_0 + INCH_0 + SHS0 + ADC10DIV_7 + ADC10SSEL_3;;//重复单通道 A0、+ ADC10SC + CLK/5 + SMCLK
ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE + REFON + ADC10SR +~Ω(REF2_5V)+SREF_0;//采样保持时间+ ADC10打开+中断使能
ADC10DTC1 = 0x00;// 0转换
ADC10AE0 |= 0x01;// P1.0 ADC 选项选择
_enable_interrupt ();
_bis_SR_register (GIE);//低功耗模式0、ADC10_ISR
}
// ADC 采样转换函数
void adc_sam ()
{
ADC10CTL0 &=~ENC;//禁用转换
while (ADC10CTL1 & ADC10BUSY);//如果 ADC10忙则等待
//将数据传输到下一个数组(DTC 自动递增地址)
ADC10CTL0 |= ENC + ADC10SC;//启用转换和转换启动
_bis_SR_register (GIE+CPUOFF);//低功耗模式0、ADC10_ISR
}