2019-03-24 10:18发布
dcexpert 发表于 2015-4-21 10:50 一般可以这样做,将ADC的基准参考设置为VDD,然后去读取内部的基准电压。因为内部基准相对是一个恒定值,这样就可以反推出VDD的电压了,这样是不需要改动电路的。 但是如果是锂电池,电压超过了3.6V,就不能直接连到VDD上,可以串联二极管降压。如果不需要精确电压,只需要一个告警门限,通常用比较器就行。
最多设置5个标签!
新技能get
其中ADC_Interrupt为宏定义,用于判断唤醒MCU的中断源确系ADC中断,说明ADC转换完成。
需要在ADC中断服务里将MCU从低功耗工作状态中唤醒。
- //测电压
- ADC10CTL1 = INCH_11;
- ADC10CTL0 = SREF_1 + ADC10SHT_2 + REFON + ADC10ON+ ADC10IE;
- ADC10CTL0 |= ENC + ADC10SC;
- LPM3;
- if(ADC_Interrupt)
- {
- ADC_value = ADC10MEM;
- ADC10CTL0 &= ~ENC;
- if(ADC_value==0x3ff)
- {
- ADC10CTL0 &= ~ENC;
- ADC10CTL1 = INCH_11;
- ADC10CTL0 = SREF_1 + ADC10SHT_2 + REFON + ADC10ON + REF2_5V + ADC10IE;
- ADC10CTL0 |= ENC + ADC10SC;
- LPM3;
- if(ADC_Interrupt)
- {
- ADC_value = ADC10MEM;
- ADC10CTL0 &= ~ENC;
- Vcc=(ADC_value>>1)+(ADC_value<<1);
- }
- }
- else
- {
- ADC_value+=ADC_value>>1;
- Vcc=ADC_value;
- }
- }
复制代码一周热门 更多>