我就想写一个最简单的adc采集程序 单通道的SC触发的
#include <msp430.h>#include <msp430f5529.h>
/*
* main.c
*/
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
P1DIR |= BIT0;
P6SEL |= BIT0;
ADC12CTL0 = ADC12SHT0_2 + ADC12ON;
ADC12CTL1 = ADC12SHP;
ADC12IE = 0x01;//ADC12MEM0
ADC12MCTL0 = 0x0000;
ADC12CTL0 |= ADC12ENC;//enable ADC
_enable_interrupt();
while(1)
{
ADC12CTL0 |= ADC12SC;
}
}
#pragma vector = ADC12_VECTOR
__interrupt void ADC12()
{
if(ADC12MEM0>0x7ff)
P1OUT = BIT1;
else
P1OUT = 0x00;
}
调试后 ADC12MEM0 一直在 0xFFe和0xFF3之间跳动,无论把P6^0和P3^0相连还是P6^0和GND相连。
Ling Zhu2:
最简单的ADC采集程序TI已经有相关例程了,
www.ti.com/…/slac300
灰小子:
建议先运行一下官网的例程。如果运行例程还有问题,就是硬件的问题,如过运行例程没问题就是写的代码的问题了。
user4041075:
uint16_t GetDAC7311Uout_A0Value(void)
{
P6SEL |= BIT0; //ADC-P6.0-A0
ADC12CTL0 = ADC12ON + ADC12SHT0_2; // 接通 ADC12电源,设置采样
ADC12CTL1 = ADC12SHP+ADC12CSTARTADD_1;//用采样定时器,选用ADC12MEM1
ADC12MCTL1 = ADC12INCH_0; // ref+=AVcc, 选通道 A0,
ADC12CTL0 |= ADC12ENC;
ADC12CTL0 |= ADC12SC; //启动转换
while (!(ADC12IFG & BIT1)); //等待转换
return ADC12MEM1; //DAC7512输出值
}