赞
踩
- //****************************************************************/
- //函 数 名: Ai_Init
- //函数功能: Ai端口初始化
- //输入参数: void
- //输出参数: void
- //返 回 值: void
- //参考文档: void
- //创 件 人: 程强刚
- //创建日期: 2016/02/09
- //修改历史:
- //****************************************************************/
- void Ai_Init(void)
- {
- // 外部引脚
- DDRC = 0X00;
- PORTC = 0X00;
-
- //基准设置(外部AVCC)
- ADMUX &= ~(1 << REFS1);
- ADMUX |= 1 << REFS0;
-
- DIDR0 = 0X3F;
-
- //转换数据对齐(右对齐)
- ADMUX &= ~(1 << ADLAR);
- ADMUX |= 0X01;
- //转换设置
- ADCSRA |= 1 << ADEN; //开启ADC功能
- ADCSRA |= (1 << ADSC); //转换开始
- ADCSRA |= 1 << ADATE; //自动触发使能
- ADCSRA |= 1 << ADIF; //清零完成标记
- ADCSRA &= ~(1 << ADPS2); //ADC时钟分频系数 2
- ADCSRA &= ~(1 << ADPS1);
- ADCSRA |= 1 << ADPS0;
-
- //连续触发模式
- ADCSRB &= ~(1 << ADTS2);
- ADCSRB &= ~(1 << ADTS1);
- ADCSRB &= ~(1 << ADTS0);
-
- ADCSRA |= 1 << ADSC; //转换开始
- }
-
- //****************************************************************/
- //函 数 名: Read_Ad
- //函数功能: 读AD转换值
- //输入参数: ucEn (bit0-bit7:通道0-通道7)
- //输出参数: void
- //返 回 值: AD结果
- //参考文档: void
- //创 件 人: 程强刚
- //创建日期: 2016/02/09
- //修改历史:
- //****************************************************************/
- UINT16 Read_Ad(UCHAR ucEn)
- {
- UCHAR ucCh;
-
- ucCh = ucEn & 0x07;
-
- //转换通道
- ADMUX &= ~0x07;
- ADMUX |= ucCh;
-
- ADCSRA |= 1 << ADSC; //转换开始
- while (!(ADCSRA & (1 << ADIF)))
- {//等待转换完成
- vTaskDelay(1);
- }
- ADCSRA |= 1 << ADIF; //清零完成标记
-
- return (ADC & 0x3ff);
- }
-
- //****************************************************************/
- //函 数 名: Get_Vol
- //函数功能: 取电压值
- //输入参数: ucEn
- //输出参数: void
- //返 回 值: AD结果
- //参考文档: void
- //创 件 人: 程强刚
- //创建日期: 2016/02/09
- //修改历史:
- //****************************************************************/
- float Get_Vol(UCHAR ucEn)
- {
- UCHAR ucCh;
- UINT16 ui16Val;
- float fVal;
-
- ucCh = ucEn & 0x07;
-
- ui16Val = Read_Ad(ucCh);
-
- fVal = ui16Val * AI_REF / AI_FULL;
-
- return (fVal);
- }
- /*************************************************************
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。