各位好:
我想用到5172的序列通道,我配置了三通道(A5,A4和A3)是好的,采集数据是正确的,但是修改参数改为四通道想用到A6就不行了,不知道什么原因,请各位帮忙看看,具体是什么错误。我把我的代码配置贴出来给大家看看,其中AD_Deel()函数8ms执行一次
void AD_configure() { P1SEL|=BIT5; // BIT3+BIT4+ // P3SEL |=BIT7; //添加通道6 // Configure ADC10; pulse sample mode, s/w trigger, rpt seq of channels ADC10CTL0 = ADC10SHT_6 + ADC10MSC + ADC10ON; // ADCclks, ADC on ADC10CTL1 = ADC10SHP + ADC10CONSEQ_3; // Sampling timer, rpt seq of ch ADC10CTL2 = ADC10RES; // 10-bit resolution // ADC10MCTL0 = ADC10INCH_5; // 原先从通道5开始递减 ADC10MCTL0 = ADC10INCH_6; // 从通道6开始递减 DMACTL0 = DMA0TSEL_24; // ADC10IFG trigger __data16_write_addr((unsigned short) &DMA0SA,(unsigned long) &ADC10MEM0); // Source single address DMA0SZ = 0x08; //原来设置成6,现在改为8 DMA0CTL = DMADT_4 + DMADSTINCR_3 + DMAEN + DMAIE; } void ADC_Deel() { unsigned int i; for(i=0;i<4;i++) //原来的i<3改成i<4 { __data16_write_addr((unsigned short) &DMA0DA,(unsigned long) &ADC_Result[i]); ADC_Result[i] = (ADC_Result[i] <<6)&0xffC0; ADC_Result[i+1] = (ADC_Result[i+1] <<6)&0xffC0; ADC_Result[i+2] = (ADC_Result[i+2] <<6)&0xffC0;// ADC_Result[i+3] = (ADC_Result[i+3] <<6)&0xffC0; //添加通道6后添加的 while (ADC10CTL1 & BUSY); // Wait if ADC10 core is active ADC10CTL0 |= ADC10ENC + ADC10SC; // Sampling and conversion ready __bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit } __delay_cycles(50); // Delay between sequence convs __no_operation(); // BREAKPOINT; check ADC_Result }