各位好! 我用MC9S12DG128B在做AD转换时,使用外部中断IRQ控制AD采集信号,AD也用中断方式进行。外部中断优先级最高,大约50us执行一次,AD大约3us进行一次。当不读取AD结果时,AD转换可以连续进行,而读取AD结果时,AD转换就不能继续进行了,我不知道这是什么原因,向各位请教!
void ADCInit(){ ATD0CTL2 = (ATD0CTL2_ADPU_MASK|ATD0CTL2_AFFC_MASK|ATD0CTL2_ASCIE_MASK); ATD0CTL3 = (ATD0CTL3_S1C_MASK); ATD0CTL4 = 0x81; ATD0CTL5 = (ATD0CTL5_DJM_MASK|ATD0CTL5_SCAN_MASK); ATD0DIEN=0x00;
}
void IRQInit() { HPRIO = (unsigned char)(Virq & 0xff); INTCR_IRQE = 1; INTCR_IRQEN = 1; }
#pragma CODE_SEG NON_BANKED __interrupt void ADC_ISR(void){ unsigned char ab; PORTB_BIT0 = !PORTB_BIT0; //用于检测,执行PB0就取反 ab = ATD0DR0;
} #pragma CODE_SEG DEFAULT
#pragma CODE_SEG NON_BANKED __interrupt void IRQ_ISR(void) {
PORTB_BIT1 = !PORTB_BIT1; //用于检测,执行PB1就取反
} #pragma CODE_SEG DEFAULT
[此贴子已经被作者于2007-1-17 11:52:47编辑过] |