您的位置:首页单片机其他单片机
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

ADC转换实验-ADC噪声抑制模式

[日期:2008-01-14 ] [来源:强联单片机 作者:] [字体: (投递新闻)

新手快速入门《ADC范例》中列举了两种ADC转换方式:查询和中断方式。 
我再补充一种:ADC噪声抑制模式: 
/* ******************************************************** 
* 文件: adc.c 
* 功能: ADC转换实验-ADC噪声抑制模式 
* 工具: WinAVR20050214(AVR-GCC) 
* mcu : Atmega8 
* 时钟: 外部晶体8MHz 
* 日期: 2005年10月25日 
******************************************************** */ 
/**********************************************************/ 
#include <avr/io.h> 
#include <avr/interrupt.h> 
#include <avr/signal.h> 

//单端通道,不放大 
#define AD_SE_ADC0 0x00 //ADC0 
#define AD_SE_ADC1 0x01 //ADC1 
#define AD_SE_ADC2 0x02 //ADC2 
#define AD_SE_ADC3 0x03 //ADC3 
#define AD_SE_ADC4 0x04 //ADC4 
#define AD_SE_ADC5 0x05 //ADC5 
#define AD_SE_ADC6 0x06 //ADC6 
#define AD_SE_VBG 0x1E //VBG 内部能隙1.23V电压基准,校准用 
#define AD_SE_GND 0x1F //接地 校准用 

//常量定义 
#define Vref 2655 //mV 实测的Vref引脚电压4.93V供电 

/*-------函数声明----------------------------------------------------------------------------------*/ 
uint16_t read_adc(unsigned char adc_input); 
uint16_t Measured_Vol_INT(void); 
/*----------------------------------------------------------------------------------------------------*/ 
SIGNAL(SIG_ADC) //ADC中断服务程序 


uint16_t Measured_Vol_INT(void) 

uint16_t M_Volt=0; //变换后的电压mV 
uint32_t temp32; 
uint8_t i; 
for(i=0;i<24;i++) 

sei(); 
MCUCR|=0x90; //休眠使能、ADC噪声抑制模式 
ADMUX=0xC0|AD_SE_ADC0; //单端输入ADC0 
ADCSRA|=(1<<ADIE); //使能ADC中断 
ADCSRA|=(1<<ADEN)|0x06; //ADC 使能的时候, 
asm("sleep"); //进入ADC噪声抑制模式将自动启动一次AD转换 
temp32=(uint32_t)ADC*Vref; 
M_Volt+=(uint16_t)(temp32/1023); 

ADCSRA&=~(1<<ADIE); //禁止ADC中断 
cli(); 
return(M_Volt/24); 
}

阅读:
录入:tina1981

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
站长推荐