📄 adc.c
字号:
#include <avr/io.h>
#include <util/delay.h>
/*
#define AD_SE_VBG 0x0E //VBG 内部能隙1.1V电压基准,校准用
#define AD_SE_GND 0x0F //接地 校准用
#define ADC_VREF_TYPE 0xc0 //内部基准1.1V
*/#define ADC_VREF_VCC 0x40
unsigned char adc_ch;
unsigned int adc_read() //读取A/D转换结果,输入AD通道参数
{
unsigned int ad_data;
ADCSRA|=0x40; //启动A/D转换
while ((ADCSRA&0x10)==0); //等待A/D转换完成
ADCSRA|=0x10; //清楚标志
ad_data =(unsigned int) ADCL; //Read 8 low bits first (important)
ad_data |= (unsigned int)ADCH << 8;
return ad_data;
}
void adc_init(unsigned char adc_chan)
{
/*AD init start */
if(adc_ch==adc_chan)
return;
adc_ch=adc_chan;
ADCSRA = 0x00; //关闭ADC
// ADMUX=ADC_VREF_TYPE|0x04; //设定内部基准 1.1V,选择第4通道
ADMUX=ADC_VREF_VCC|adc_chan;
ACSR = 0x80; //关闭模拟比较器电源
ADCSRA = 0x80; //使能ADC,2分频
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -