Beispiel #1
0
static void setfld(naContext c, unsigned char* s, int slen,
                   int bit, int flen, unsigned int fld)
{
    int i;
    if(bit + flen > 8*slen) naRuntimeError(c, "bitfield out of bounds");
    for(i=0; i<flen; i++)
        if(fld & (1<<i)) SETB(s, slen, i+bit);
        else CLRB(s, slen, i+bit);
}
Beispiel #2
0
void G_sensor_init(void)
{
	SETB(GSEN_DETECT_PORT_DIR, GSEN_DETECT_PORT_BIT);
	SETB(GSEN_DETECT_PORT_IE, GSEN_DETECT_PORT_BIT);
	CLRB(GSEN_DETECT_PORT_PU, GSEN_DETECT_PORT_BIT);
	CLRB(GSEN_DETECT_PORT_PD, GSEN_DETECT_PORT_BIT);
	if(bSFBusy_Flag == 0)
	{
		i2c_Init(G_SEN_BAUD, G_SEN_WRITE_ADDR,G_SEN_READ_ADDR);
		Gsensor_ID = u8sensor_Read_Gsen_ID();
		if(Gsensor_ID != G_SEN_ID)
		{
			sensor_I2C_port_release();
			return;
		}
		Gsen_Write_Reg(0x44,0x28);		//setting normal not int
		Gsen_Write_Reg(0x45,(G_SEN_XG_CONF | 0x20));
		sen_hold_last_xdata = Gsen_Read_Reg(0x41);
		sen_hold_last_ydata = Gsen_Read_Reg(0x42);
		sen_hold_last_zdata = Gsen_Read_Reg(0x43);
		sensor_I2C_port_release();
	}
}
Beispiel #3
0
/*******************************************************************************
* Function Name  : sensor_Init
* Description    : initialize the sensor
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
u8 sensor_Init(void)
{
     u32 i;
     u8 j;
     u8 u8Buf[2];  
	 u8 SensorId;
     
	 #if(SYS_CLK == 120000000)
		sensor_ClockInit(24000000);
	 #elif(SYS_CLK == 48000000)
		sensor_ClockInit(12000000);
	 #endif
     u8SensorwriteID = OV7725_I2C_WRITE_ADDR;
     u8SensorreadID = OV7725_I2C_READ_ADDR;
     u8Addrbytnum = 1;
     u8Databytnum = 1;

	//=======close sensor power ========
	#if (I2C_MAP == I2C_MAP_SW2)			//select software simulate I2C signal
	bI2CBusy_Flag=1;					//set dc check unuse
	bSFBusy_Flag=1;						//set tf card check unuse
	REG32(PMAP_CFG0)  &= ~(1<<14);		//SPI0_MAP0 not mapping to io
	REG32(PMAP_CFG0)  &= ~(1<<7);		// uart not map to io 
	I2C_SCL_SDA_OUT();
	I2C_SCL_LOW();
	I2C_SDA_LOW();
	#endif

	REG32(SYS_CON) = 0x932B;			//SPEC request value
	REG32(LDO_ACON) &= ~(0xf << 4);		//close senosr ldo power

	#if	(USER_CONFIG==CONFIG_AX3251_K6000)		
	Delay_MS(250);		//rc reset need delay, IO reset not do it
	#endif

	#if (I2C_MAP == I2C_MAP_SW2)	//select software simulate I2C signal
	bI2CBusy_Flag=0;
	bSFBusy_Flag=0;
	#endif
	//======end close sensor power=======

	//====sensor ldo open======
	REG32(LDO_ACON) |= (4<<4);   //sensor 3bit 111:3.3v,110:3.2v .... 000:2.6v
	REG32(LDO_ACON) |= (1<<7);   //sensor ldo enable
	Delay_MS(50);
	//===end sensor ldo open====

     i2c_Init(OV7725_I2C_BAUD, OV7725_I2C_WRITE_ADDR,OV7725_I2C_READ_ADDR);
     CLRB(REG32(PCON0), 23);							//csi Clock Enable Bit
   
     //SENSOR_PIN_CONF();
     //SENSOR_POWERDN();
     SENSOR_NRESET();
     Delay_MS(10);
     SENSOR_RESET();
     Delay_MS(10);
     SENSOR_NRESET();
     //SENSOR_NORMAL();
     Delay_MS(10);

 	i2c_SendStop();
     SensorId = u8sensor_ReadID();
     for(i=0; i<sizeof(OV7725InitTable)/2; i++)
     {
         for(j=0; j<(u8Addrbytnum+u8Databytnum); j++) 
         {
             u8Buf[j] = OV7725InitTable[i][j];    
         }   
         Sensor_WriteRegister(u8Buf,u8Addrbytnum,u8Databytnum);
         Delay_MS(1);
     } 
	sensor_I2C_port_release();
	deg_Printf("SensorId=%x\n",SensorId);
       return 0;
}