⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc_sensor.c

📁 无线传感器星型网络的节点的基站程序,采用802.15.4协议
💻 C
字号:
#include "adc_sensor.h"
//added by liulingyi 

uint8_t  adc_init(void)
{
     { 
           os_atomic_t _nesc_atomic = os_atomic_start();
		  {
           //ADC控制寄存器中ADIE位和ADSC位清零 
                  ADCSRA &=0x86;
           //设置参考电压,配置为默认情形
                  ADMUX=0;
           	}
          os_atomic_end(_nesc_atomic);
     }
    ADC_INTERRUPT_FLAG=0;
	 
}

uint8_t  sensor_init(void)
{
  { os_atomic_t _nesc_atomic = os_atomic_start();

    {
     
      
      OS_MAKE_INT1_OUTPUT();
      OS_SET_INT1_PIN();
      //whether to configure  the INT2 pin???
    }

    os_atomic_end(_nesc_atomic); }           
          
}

void read_data_task(void)
{
  uint8_t loopnum=0;
  while (loopnum<10)
  {
  
  SENSOR_DATA_VALUE[loopnum]=0;
  { os_atomic_t _nesc_atomic = os_atomic_start();

    {
     //设置ADMUX寄存器
         ADMUX |=0x01;  
     //AD使能开始AD转换
         ADCSRA |=0xe7; 
     }

    os_atomic_end(_nesc_atomic); }       

     //查询ADCSRA中断,
  
   while(ADC_INTERRUPT_FLAG==0)
   	{    
   	      ADC_INTERRUPT_FLAG=(ADCSRA&0x10);
   	}
  
    //读取ADCH和ADCL
    
    SENSOR_DATA_VALUE[loopnum]=ADCL;
    SENSOR_DATA_VALUE[loopnum]+=(ADCH<<8);
  //printf("sensor is %04x\n",SENSOR_DATA_VALUE[loopnum]);
  { os_atomic_t _nesc_atomic = os_atomic_start();

    {
     //清除ADC中断标志
          ADCSRA |=0x10;
     //关闭ADC转换使能
          //ADCSRA &=0x7f;
    	}
      os_atomic_end(_nesc_atomic); }  
	  
   //printf("sensor is %04x\n",SENSOR_DATA_VALUE);
  // SENSOR_DATA_VALUE=0;
   adc_init();
   //
   //OS_CLR_INT1_PIN();
   ADC_INTERRUPT_FLAG=0;
   //sensor_init();
loopnum++;
  } 
	 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -