示例#1
0
void LSM303DLHCAccel_task(void)
{
	// Init I2C
	initI2C0();

	float fAccel[3];
	tI2CMInstance sI2CInst;
	tLSM303DLHCAccel sLSM303DLHCAccel;

	//
	// Initialize the LSM303DLHCAccel. This code assumes that the I2C master
	// instance has already been initialized.
	//
	g_bLSM303DLHCAccelDone = false;
	LSM303DLHCAccelInit(&sLSM303DLHCAccel, &sI2CInst, 0x19, LSM303DLHCAccelCallback, 0);
	while(!g_bLSM303DLHCAccelDone){}

	//	Configure for 400Hz operation
	g_bLSM303DLHCAccelDone = false;
	LSM303DLHCAccelReadModifyWrite(&sLSM303DLHCAccel, LSM303DLHC_O_CTRL1, LSM303DLHC_CTRL1_ODR_M, LSM303DLHC_CTRL1_ODR_400HZ, LSM303DLHCAccelCallback, 0);

	//
	 // Configure on board HP filter. ft = fsamp / (6 * HPc) where HPc is the value
	 // For Fsamp = 100Hz, 00 = 2Hz, 01 = 1Hz, 10 = 1/2Hz, 11 = 0.25Hz
	//
	g_bLSM303DLHCAccelDone = false;
	LSM303DLHCAccelReadModifyWrite(&sLSM303DLHCAccel, LSM303DLHC_O_CTRL2, LSM303DLHC_CTRL2_HPCUTOFF_M, 0x3, LSM303DLHCAccelCallback, 0);

	// HPF mode selection - Normal Mode
	g_bLSM303DLHCAccelDone = false;
	LSM303DLHCAccelReadModifyWrite(&sLSM303DLHCAccel, LSM303DLHC_O_CTRL2, LSM303DLHC_CTRL2_HPMODE_M, LSM303DLHC_CTRL2_HPMODE_NORMAL, LSM303DLHCAccelCallback, 0);

	// Filtered Data Selection - Filter enabled
	g_bLSM303DLHCAccelDone = false;
	LSM303DLHCAccelReadModifyWrite(&sLSM303DLHCAccel, LSM303DLHC_O_CTRL2, LSM303DLHC_CTRL2_FDS_M, LSM303DLHC_CTRL2_FDS_FILTERED, LSM303DLHCAccelCallback, 0);

	// Configure the LSM303DLHCAccel for +/- 4 g accelerometer range.
	g_bLSM303DLHCAccelDone = false;
	LSM303DLHCAccelReadModifyWrite(&sLSM303DLHCAccel, LSM303DLHC_O_CTRL4, ~LSM303DLHC_CTRL4_FS_M, LSM303DLHC_CTRL4_FS_4G, LSM303DLHCAccelCallback, 0);

	while(!g_bLSM303DLHCAccelDone){}
	// Enter the task
	while(1)
	{
	// Request another reading from the LSM303DLHCAccel.
		g_bLSM303DLHCAccelDone = false;
		LSM303DLHCAccelDataRead(&sLSM303DLHCAccel, LSM303DLHCAccelCallback, 0);
		while(!g_bLSM303DLHCAccelDone){}
		// Get the new accelerometer readings.
		LSM303DLHCAccelDataAccelGetFloat(&sLSM303DLHCAccel, &fAccel[0], &fAccel[1], &fAccel[2]);
		// Do something with the new accelerometer readings.
	}
}
示例#2
0
void init_RTC()
{
#ifdef USE_I2C_RTC
	initI2C0();
#else
	ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE);
	HibernateEnableExpClk(ROM_SysCtlClockGet());
	HibernateClockConfig(HIBERNATE_OSC_LOWDRIVE);
	HibernateRTCEnable();
	updateTime();

	init_limits_rtc();

#endif
}
void init_ADXL345_Accelerometer(){
	initI2C0();
}