智能车制作

标题: AVR ADC问题 [打印本页]

作者: Code叁拾肆    时间: 2015-1-16 20:34
标题: AVR ADC问题
#include<avr/io.h>
#include<avr/interrupt.h>
#define uchar unsigned char
#define uint unsigned int

void PWM(void)//PWM输出初始化
{
    DDRD|=0X30;
       
        TCCR1A=0X63;
        TCCR1B=0X13;
       
        OCR1A=1249;
        OCR1B=1249;
}


void ADC_cj()//adc采集函数,控制data值可改变PWM值(已测试有效)
{
    float data;                  
    while(!(ADCSRA & 0x10))//判断转换是否完成
    ADCSRA=0xe0;
        data=(ADCL+ADCH*256)/1024;
        OCR1B=1249*data;
}   

void ADC_int()//ADC初始化设置
  {
   DDRA=0x00;
   PORTA=0x00;

   ADMUX=0xc0;//AREF参考电压 右对齐 ADC0通道 0000 0000
   ADCSRA=0xe0;//ADC使能,ADC开始工作,允许自动转换触发,不使用中断,2分频   1110 0000
   SFIOR=0x00;//自动模式      0000 0000
  }

void main(void)
{
   PWM();
   ADC_int();
   while(1)
   {
      ADC_cj();
   }
}
目的是通过ADC采集ADC0的电压,来控制PWM占空比。。。。可是不知道为什么没法实现,有没有大神指教下。。。
作者: Code叁拾肆    时间: 2015-1-16 20:39
。。。上面注释有错。。是内置电压作参考电压的。。。




欢迎光临 智能车制作 (http://www.znczz.com/) Powered by Discuz! X3.2