ADC10中断:
和定时器一样,ADC10也有中断请求的能力,如果不使用DCT(ADC10DCT1=0),当转换结果装载到ADC10MEM时,ADC10中断标志位即ADC10IFG置1。如果使用DCT,当DCT设定的所有转换完成之后,中断标志为置1。
大概过程是这样的:
//对于中断来说,当每次两个整个数据块都传递完成时,中断标志置1,此时产生中断,让CPU跳出低功耗状态,继续执行进入低功耗后续没有执行的代码
//又继续使能AD转换,CPU又进入低功耗状态,由于AD转换独立于CPU,当转换完成时再次进入中断,跳出低功耗,这样不断进入跳出,实现低功耗。
//所以低功耗跳出之后,以下应该写串口传输的代码,将转换完的数字量给USART
int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
ADC10CTL1 = INCH_1 + CONSEQ_1; // A1/A0, single sequence
ADC10CTL0 = ADC10SHT_1 + MSC + ADC10ON + ADC10IE + REFON + REF2_5V; //时钟源分频+连续
ADC10DTC1 = 0x02; // 2 conversions
ADC10AE |= 0x03; // P2.1,0 ADC10 option select
for (;;)
{
ADC10CTL0 &= ~ENC;
while (ADC10CTL1 & BUSY); // Wait if ADC10 core is active
ADC10SA = 0x200; // Data buffer start
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
__bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit
//AD把两路转换完成,给了ADC10SA,控制将长度为2的数据块放到某个地址中,那么可以从地址中取出转换完成的数据
//一个块放着两个转换完的数据,每个转换完的数据长度是2个字节,因为MEM长度是16位,一个地址是一个字节,现在的地址是在0x200的基础上加4
//但是这个地址是个什么意思不太明白
//对于中断来说,当每次两个整个数据块都传递完成时,中断标志置1,此时产生中断,让CPU跳出低功耗状态,继续执行上面的for循环
//继续开始转换,由于AD转换独立于CPU,所以CPU又进入低功耗状态,当转换完成时再次跳出低功耗,这样不断进入跳出,实现低功耗。
//所以低功耗跳出之后,以下应该写串口传输的代码,将转换完的数字量给USART
//....
}
}
// ADC10 interrupt service routine
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR (void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(ADC10_VECTOR))) ADC10_ISR (void)
#else
#error Compiler not supported!
#endif
{
__bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR)
}
上一篇:MSP430学习笔记11-八路ADC采集诺基亚5110液晶显示
下一篇:msp430 EEPROM调试记录
推荐阅读最新更新时间:2024-11-13 03:09
设计资源 培训 开发板 精华推荐
- 使用 ROHM Semiconductor 的 BD48K44G-TL 的参考设计
- LT6654AMPS6-1.25 具有升压输出电流和电流限制的电压基准的典型应用
- ADR512W 1.2V 精密低噪声分流基准电压源的典型工作电路
- stc89c52rc电机控制
- MAXREFDES1094:效率为91.9%的小尺寸,12V / 500mA,同步无光耦反激式DC-DC转换器
- 使用 Analog Devices 的 LT1021DIN8-10 的参考设计
- 标准DIL24插座的LSM6DSL适配器板
- LTC2376-18、18 位、250ksps、低功率 SAR ADC 的典型应用电路
- AD8532ARUZ 高输出电流基准/稳压器的典型应用
- S3-FPC43-V04