問下有關ADC程序的問題(已解決),采樣時間問題
本帖最后由 gsq19920418 于 2017-4-27 17:57 编辑float ADC12_inquire_get(uint8_t channel)
{
/* 開啓管脚的特殊功能 */
if(channel < 8)
{
P6SEL |= 0x01 << channel;
}
/* 清除寄存器值 */
ADC12CTL0 = 0x00;
/* 内部參考2.5V,開啓ADC12,關閉中斷 */
ADC12CTL0 = REF2_5V + REFON + ADC12ON;
/* SMCLK時鐘,單次單通道轉換 */
ADC12CTL1 = ADC12SSEL0 + ADC12SSEL1;
/* 設置ADC12MEM0中存儲結果,參考電壓是Vref+和Vref-,,設置通道 */
ADC12MCTL0 = SREF0 + SREF2 + channel;
ADC12MEM0 = 0;
/* 開啓ADC12轉換 */
ADC12CTL0 |= ENC + ADC12SC;
ADC12CTL0 &= ~ADC12SC;
/* 等待ADC轉換完成 */
while((ADC12IFG & 0x0001) == 0);
return (float)ADC12MEM0 / 4095.0f * 2.5f;
}
1、如果使用ADC12CTL0 &= ~ADC12SC;比設置SHP讀取到的值更準確,沒明白爲什麽?
2、另外不設置SHP,爲什麽ADC12SC不自動清零呢?在單通道單次轉換中SHP是沒有使用的吧 这个得看手册吧{:sweat:}
页:
[1]