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); }
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(); } }