Ejemplo n.º 1
0
/**
  * @brief: 得到保存在EEPROM里面的校准值
  * @retval: 1,成功获取数据
  *          0,获取失败,要重新校准
  */
u8 TP_Get_Adjdata(void)
{					  
	s32 tempfac;
	tempfac=AT24CXX_ReadOneByte(SAVE_ADDR_BASE+13);						//读取标记字,看是否校准过! 		 
	if(tempfac==0X0A)																					//触摸屏已经校准过了			   
	{    												 
		tempfac=AT24CXX_ReadLenByte(SAVE_ADDR_BASE,4);					//得到x校准参数
		tp_dev.xfac=(float)tempfac/100000000;										
		tempfac=AT24CXX_ReadLenByte(SAVE_ADDR_BASE+4,4);				//得到y校准参数		          
		tp_dev.yfac=(float)tempfac/100000000;										
		tp_dev.xoff=AT24CXX_ReadLenByte(SAVE_ADDR_BASE+8,2);		//得到x偏移量		   	  
		tp_dev.yoff=AT24CXX_ReadLenByte(SAVE_ADDR_BASE+10,2);		//得到y偏移量
 		tp_dev.touchtype=AT24CXX_ReadOneByte(SAVE_ADDR_BASE+12);//读取触屏类型标记
		if(tp_dev.touchtype)																		//X,Y方向与屏幕相反
		{
			CMD_RDX=0X90;
			CMD_RDY=0XD0;	 
		}
		else																										//X,Y方向与屏幕相同
		{
			CMD_RDX=0XD0;
			CMD_RDY=0X90;	 
		}		 
		return 1;	 
	}
	return 0;
}
Ejemplo n.º 2
0
Archivo: 24cxx.c Proyecto: 2cats/STM32
//检查AT24CXX是否正常
//这里用了24XX的最后一个地址(255)来存储标志字.
//如果用其他24C系列,这个地址要修改
//返回1:检测失败
//返回0:检测成功
u8 AT24CXX_Check(void)
{
	u8 temp;
	temp=AT24CXX_ReadOneByte(255);//避免每次开机都写AT24CXX			   
	if(temp==0X55)return 0;		   
	else//排除第一次初始化的情况
	{
		AT24CXX_WriteOneByte(255,0X55);
	    temp=AT24CXX_ReadOneByte(255);	  
		if(temp==0X55)return 0;
	}
	return 1;											  
}
Ejemplo n.º 3
0
uint8_t AT24CXX_Check(void)
{
	uint8_t temp;
	AT24CXX_ReadOneByte(255, &temp, 1);
	if(temp==0X55)return 0;		   
	else
	{
		AT24CXX_WriteOneByte(255,0X55);
	  AT24CXX_ReadOneByte(255, &temp, 1);	  
		if(temp==0X55)return 0;
	}
	return 1;											  
}
Ejemplo n.º 4
0
Archivo: 24cxx.c Proyecto: 2cats/STM32
//在AT24CXX里面的指定地址开始读出指定个数的数据
//ReadAddr :开始读出的地址 对24c02为0~255
//pBuffer  :数据数组首地址
//NumToRead:要读出数据的个数
void AT24CXX_Read(u16 ReadAddr,u8 *pBuffer,u16 NumToRead)
{
	while(NumToRead)
	{
		*pBuffer++=AT24CXX_ReadOneByte(ReadAddr++);	
		NumToRead--;
	}
}  
Ejemplo n.º 5
0
Archivo: 24cxx.c Proyecto: 2cats/STM32
//在AT24CXX里面的指定地址开始读出长度为Len的数据
//该函数用于读出16bit或者32bit的数据.
//ReadAddr   :开始读出的地址 
//返回值     :数据
//Len        :要读出数据的长度2,4
u32 AT24CXX_ReadLenByte(u16 ReadAddr,u8 Len)
{  	
	u8 t;
	u32 temp=0;
	for(t=0;t<Len;t++)
	{
		temp<<=8;
		temp+=AT24CXX_ReadOneByte(ReadAddr+Len-t-1); 	 				   
	}
	return temp;												    
}
Ejemplo n.º 6
0
void initmybox()//初始化自身信息
{  	 
  
  mybox.master=0;
 mybox.start='&';
 mybox.myid=AT24CXX_ReadOneByte(0x0010);
///mybox.myid=1;
 mybox.source=0;
 mybox.destination=0;
 mybox.send=0;
 mybox.relay=0;
 mybox.message=0;
 mybox.end='*';	
						
}
Ejemplo n.º 7
0
static void Rm3100_Initial(void)
{
	u8 i,j;
	PNI_SPI_Init();
    pni_para.Record_Number_Opto_Off = 0;
    pni_para.record_over_flag = FALSE; 
    pni_para.opto_triggle_number = 0;
	pni_para.opto_status = OFF;
	pni_para.reset_input_flag = FALSE;
	for(i=0;i<2;i++)
	{
		for(j=0;j<TOTAL_AXIS;j++)
		{     
			pni[i].OffSet[j] = 0;
			pni[i].PreInput[j] = 0;
			pni[i].InPut[j]	= 0;		
		} 
	} 
	
	pni[0].Mode =  AT24CXX_ReadOneByte(EEP_PNI0_MODE); 
	pni[0].Update_Rate =  AT24CXX_ReadOneByte(EEP_PNI0_UPDATE_RATE ); 
	
	for(i=0;i<3;i++)
	{
		pni[0].Gian[i] = ((u16)AT24CXX_ReadOneByte(EEP_PNI0_GAIN_X + i*2 + 1)<<8) \
		+ AT24CXX_ReadOneByte(EEP_PNI0_GAIN_X + i*2);
	}
	for(i=0;i<3;i++)	  
	{
		pni[0].Filter[i]= AT24CXX_ReadOneByte(EEP_PNI0_FILTER_X + i);
	}

	pni[1].Mode =  AT24CXX_ReadOneByte(EEP_PNI1_MODE); 
	pni[1].Update_Rate =  AT24CXX_ReadOneByte(EEP_PNI1_UPDATE_RATE ); 
	
	for(i=0;i<3;i++)
	{
		pni[1].Gian[i] = ((u16)AT24CXX_ReadOneByte(EEP_PNI1_GAIN_X + i*2 + 1)<<8) \
		+ AT24CXX_ReadOneByte(EEP_PNI1_GAIN_X + i*2);
	}
	for(i=0;i<3;i++)	  
	{
		pni[1].Filter[i]= AT24CXX_ReadOneByte(EEP_PNI1_FILTER_X + i);
	}
	
	pni_para.Record_Number_Opto_Off =  AT24CXX_ReadOneByte(EEP_RECORD_NUMBER_OPTO_OFF); 
	set_pni_config();
	pni_para.read_config_flag = TRUE;
}
Ejemplo n.º 8
0
void gonglvyinshu()
{
        u16 i;
		u32 tempa,tempb;
		u16 adc_vx,adc_vmax=0,adc_ix,adc_imax=0;
		u8 phase_zhi;
		 float temp;

		id_num=AT24CXX_ReadOneByte(0x0010);
	//	key_idset();

		 for(i=0;i<120;i++)
	  	 {
	  	 adc_vx=Get_Adc_Average(ADC_Channel_1,10);
		  // adc_vx=Get_Adc(ADC_Channel_1);
		   if(adc_vx>adc_vmax)
		   adc_vmax=adc_vx;
	  	 }
	   for(i=0;i<120;i++)
	  {
		 adc_ix=Get_Adc_Average(ADC_CH4,10);
		 if(adc_ix>adc_imax)
		 adc_imax=adc_ix;
	  }
	  temp=(float)adc_vmax*(3.3/4096);
	 dianya_zhi=(u16)(518*temp-679);
	  temp=(float)adc_imax*(3.3/4096);
	  dianliuzhi=(u32)(60*temp-80);
	  adc_vmax=0;
	  adc_imax=0;
	  	  	  if(dianliuzhi<7){dianliuzhi=0;gonglvshishu=100;}//滤除杂波,小于7时,说明已经无负载
            else{
	  if(TIM3CH1_CAPTURE_STA&0X80)//完成一次采集
		{
			tempa=TIM3CH1_CAPTURE_STA&0X3F;
			tempa*=65536;					//溢出时间总和
			tempa+=TIM3CH1_CAPTURE_VAL;		//得到TI1端信号周期时间


			tempb=TIM3CH1_CAPTURE_STA&0X3F;
			tempb*=65536;					//溢出时间总和
			tempb+=TIM3CH1_CAPTURE_PHA;		//得到TI2 TI1上升沿时间差值即相位差时间

	 		 if(tempb<=5000)			   //感性负载正接
			 {
			 	phase_zhi=tempb*360/tempa;
		   	 	gonglvshishu=si[phase_zhi];
				L_C_flag=1;
			 }
			  if((10000<=tempb)&&(tempb<=15000))			 //感性负载反接
			 {
			 	phase_zhi=((tempb*360)/tempa)-180;
		   	 	gonglvshishu=si[phase_zhi];
				L_C_flag=1;
			 }
			 if((5000<tempb)&&(tempb<10000))	   //容性负载正接
			 {
				/*显示容性功率符号*/
			 	phase_zhi=180-tempb*360/tempa;
		   	 	gonglvshishu=si[phase_zhi];
				L_C_flag=0;
			 }
			 if((15000<tempb)&&(tempb<20000))	   //容性负载反接
			 {
				/*显示容性功率符号*/
			 	phase_zhi=360-tempb*360/tempa;
		   	 	gonglvshishu=si[phase_zhi];
				L_C_flag=0;
			 }
	  	}
			 wugongkvar=(uint16_t)((1.732*dianliuzhi*dianya_zhi*k*co[phase_zhi])/1000000);
			wugong_95= (uint16_t)((17.32*dianliuzhi*dianya_zhi*k*31)/1000000);//功率因素在0.95时的,无功功�
			wugong_computer=(uint16_t)((17.32*dianliuzhi*dianya_zhi*k*co[phase_zhi])/1000000);
                    wugongkvar=wugong_computer;
			TIM3CH1_CAPTURE_STA=0;			//开启下一次捕获
			
		
		}

//无功功率
}
Ejemplo n.º 9
0
u16 power_computer()
{
        u16 i;
		u32 tempa=0,tempb=0;
		u16 adc_vx=0,adc_vmax=0,adc_ix=0,adc_imax=0;
		u8 phase_zhi=0;
		 float temp=0;

		id_num=AT24CXX_ReadOneByte(0x0010);
		key_idset();

		 for(i=0;i<120;i++)
	  	 {
	  	 adc_vx=Get_Adc_Average(ADC_Channel_1,10);
		  // adc_vx=Get_Adc(ADC_Channel_1);
		   if(adc_vx>adc_vmax)
		   adc_vmax=adc_vx;
	  	 }
	   for(i=0;i<120;i++)
	  {
		 adc_ix=Get_Adc_Average(ADC_CH4,10);
		 if(adc_ix>adc_imax)
		 adc_imax=adc_ix;
	  }
	  temp=(float)adc_vmax*(3.3/4096);
	 dianya_zhi=(u16)(518*temp-660);
	  temp=(float)adc_imax*(3.3/4096);
	  dianliuzhi=(u32)(60*temp-80);
	  adc_vmax=0;
	  adc_imax=0;
	  if(TIM3CH1_CAPTURE_STA&0X80)//完成一次采集
		{
			tempa=TIM3CH1_CAPTURE_STA&0X3F;
			tempa*=65536;					//溢出时间总和
			tempa+=TIM3CH1_CAPTURE_VAL;		//得到TI1端信号周期时间


			tempb=TIM3CH1_CAPTURE_STA&0X3F;
			tempb*=65536;					//溢出时间总和
			tempb+=TIM3CH1_CAPTURE_PHA;		//得到TI2 TI1上升沿时间差值即相位差时间

	 		 if(tempb<=5000)			   //感性负载正接
			 {
			 	phase_zhi=tempb*360/tempa;
		   	 	gonglvshishu=si[phase_zhi];
			 }
			  if((10000<=tempb)&&(tempb<=15000))			 //感性负载反接
			 {
			 	phase_zhi=((tempb*360)/tempa)-180;
		   	 	gonglvshishu=si[phase_zhi];
			 }
			 if((5000<tempb)&&(tempb<10000))	   //容性负载正接
			 {
				/*显示容性功率符号*/
			 	phase_zhi=180-tempb*360/tempa;
		   	 	gonglvshishu=si[phase_zhi];
			 }
			 if((15000<tempb)&&(tempb<20000))	   //容性负载反接
			 {
				/*显示容性功率符号*/
			 	phase_zhi=360-tempb*360/tempa;
		   	 	gonglvshishu=si[phase_zhi];
			 }
//			 wugongkvar=(uint16_t)(1.732*dianliuzhi*dianya_zhi*k*co[phase_zhi]);
			
			TIM3CH1_CAPTURE_STA=0;			//开启下一次捕获
			return gonglvshishu;
		}
	  return gonglvshishu;

//无功功率
}