コード例 #1
0
/**
  * @brief  Initialize the accelerometer.
  * @param  None
  * @retval None
  */
void Accelerometer_Init(void)
{
	LIS3DSH_InitTypeDef accel_init;
	LIS3DSH_DRYInterruptConfigTypeDef it_config;
	
	accel_init.Power_Mode_Output_DataRate = LIS3DSH_DATARATE_25;				/* Output data 25 times per second (25 Hz) as by requirements */
	accel_init.Axes_Enable = LIS3DSH_XYZ_ENABLE;												/* Enable x, y and z axes */
	accel_init.Continous_Update = LIS3DSH_ContinousUpdate_Disabled;			/* Disable continuous update to be able to read the MSB of each reading */
	accel_init.AA_Filter_BW = LIS3DSH_AA_BW_50;													/* Anti-aliasing filter bandwidth set to 50Hz to remove frequencies above 2 * 25Hz */
	accel_init.Full_Scale = LIS3DSH_FULLSCALE_2;												/* Use full scale of +/- 2g */
	accel_init.Self_Test = LIS3DSH_SELFTEST_NORMAL;											/* Self test normal */
	
	/* Initialize LIS3DSH */
	LIS3DSH_Init(&accel_init);
	
	it_config.Dataready_Interrupt = LIS3DSH_DATA_READY_INTERRUPT_ENABLED;	/* Enable DRY interrupt */
	it_config.Interrupt_signal = LIS3DSH_ACTIVE_HIGH_INTERRUPT_SIGNAL;		/* Set interrupt to be active high as by requirements */
	it_config.Interrupt_type = LIS3DSH_INTERRUPT_REQUEST_PULSED;					/* Set interrupt type to be pulsed as by requirements */
	
	/* Set LIS3DSH interrupt configuration */
	LIS3DSH_DataReadyInterruptConfig(&it_config);
	
	/* Set priority for EXTI0 IRQ */
	HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);
	
	/* Enable IRQ for the EXTI Line 0 (LSI3DSH generates INT1 interrupt on GPIO_PIN_0 PE0) */
	HAL_NVIC_EnableIRQ(EXTI0_IRQn);
}
コード例 #2
0
/**
   * @brief A function used to configure and init the accelerometer
	 * @param none
	 * @retval none
   */
void configure_init_accelerometer(void)
{
	//Configure the accelerometer initialization struct
	LIS3DSH_InitStruct.Power_Mode_Output_DataRate = LIS3DSH_DATARATE_25;        /* Ppower down or /active mode with output data rate 3.125 / 6.25 / 12.5 / 25 / 50 / 100 / 400 / 800 / 1600 HZ */
  LIS3DSH_InitStruct.Axes_Enable = LIS3DSH_XYZ_ENABLE;                        /* Axes enable */
  LIS3DSH_InitStruct.Continous_Update = LIS3DSH_ContinousUpdate_Disabled;			/* Block or update Low/High registers of data until all data is read */
	LIS3DSH_InitStruct.AA_Filter_BW = LIS3DSH_AA_BW_50;													/* Choose anti-aliasing filter BW 800 / 400 / 200 / 50 Hz*/
  LIS3DSH_InitStruct.Full_Scale = LIS3DSH_FULLSCALE_2;                        /* Full scale 2 / 4 / 6 / 8 / 16 g */
  LIS3DSH_InitStruct.Self_Test = LIS3DSH_SELFTEST_NORMAL;                     /* Self test */
	
	//Configure the accelerometer interrupt struct
	LIS3DSH_IntConfigStruct.Dataready_Interrupt = LIS3DSH_DATA_READY_INTERRUPT_ENABLED;     /* Enable/Disable data ready interrupt */
  LIS3DSH_IntConfigStruct.Interrupt_signal = LIS3DSH_ACTIVE_HIGH_INTERRUPT_SIGNAL;         /* Interrupt Signal Active Low / Active High */
  LIS3DSH_IntConfigStruct.Interrupt_type = LIS3DSH_INTERRUPT_REQUEST_PULSED;							/* Interrupt type as latched or pulsed */
	
	//Enable the interrupt line
	HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_0);
	HAL_NVIC_EnableIRQ(EXTI0_IRQn);
	HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 1);
	
	//Initialize the accelerometer
	LIS3DSH_Init(&LIS3DSH_InitStruct);
	
	//Setting the interrupt configuration of the accelerometer
	LIS3DSH_DataReadyInterruptConfig(&LIS3DSH_IntConfigStruct);		
}
コード例 #3
0
ファイル: Accel_Inits.c プロジェクト: bbrown1867/MicroP
//Initialize interrupts on the accelerometer
void initAccelInts()
{
	LIS3DSH_DRYInterruptConfigTypeDef accel_int_init;
	
	accel_int_init.Dataready_Interrupt = LIS3DSH_DATA_READY_INTERRUPT_ENABLED; //Data ready signal connected to INT1
	accel_int_init.Interrupt_signal = LIS3DSH_ACTIVE_HIGH_INTERRUPT_SIGNAL; //Specified in section 3 of lab handout
	accel_int_init.Interrupt_type = LIS3DSH_INTERRUPT_REQUEST_PULSED; //Specified in section 3 of lab handout
	
	LIS3DSH_DataReadyInterruptConfig(&accel_int_init);
}
void accelerometer_init(void) {
	LIS3DSH_InitTypeDef  LIS3DSH_InitStruct;

	/* Set configuration of LIS302DL*/
	LIS3DSH_InitStruct.Power_Mode_Output_DataRate = LIS3DSH_DATARATE_100;
	LIS3DSH_InitStruct.Axes_Enable = LIS3DSH_X_ENABLE | LIS3DSH_Y_ENABLE | LIS3DSH_Z_ENABLE;
	LIS3DSH_InitStruct.Full_Scale = LIS3DSH_FULLSCALE_4;
	LIS3DSH_InitStruct.AA_Filter_BW = LIS3DSH_AA_BW_200;
	LIS3DSH_InitStruct.Continous_Update = LIS3DSH_ContinousUpdate_Enabled;
	LIS3DSH_InitStruct.Self_Test = LIS3DSH_SELFTEST_NORMAL;
	LIS3DSH_Init(&LIS3DSH_InitStruct);

	/* Enable interrupt when data is ready */	
	LIS3DSH_DRYInterruptConfigTypeDef DRYInterruptConfig;
	DRYInterruptConfig.Dataready_Interrupt = LIS3DSH_DATA_READY_INTERRUPT_ENABLED;
	DRYInterruptConfig.Interrupt_signal = LIS3DSH_ACTIVE_HIGH_INTERRUPT_SIGNAL;
	DRYInterruptConfig.Interrupt_type = LIS3DSH_INTERRUPT_REQUEST_PULSED;
	LIS3DSH_DataReadyInterruptConfig(&DRYInterruptConfig);
	
	/* Set pin as input */
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_StructInit(&GPIO_InitStruct);
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
	GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
	GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;
	GPIO_Init(GPIOE, &GPIO_InitStruct);
	
	/* Tell system that you will use PE0 for EXTI_Line0 */
	SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource0);
	
	/* PE0 is connected to EXTI_Line0 */
	EXTI_InitTypeDef EXTI_InitStruct;
	EXTI_InitStruct.EXTI_Line = EXTI_Line0;
	EXTI_InitStruct.EXTI_LineCmd = ENABLE;
	EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
	EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
	EXTI_Init(&EXTI_InitStruct);

	/* Add IRQ vector to NVIC */
	NVIC_InitTypeDef NVIC_InitStruct;
	NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn;
	NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0x00;
	NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0x00;
	NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
	NVIC_Init(&NVIC_InitStruct);
	
	ma_filter_initialize(&filter_x, &cb_x, x_buffer);
	ma_filter_initialize(&filter_y, &cb_y, y_buffer);
	ma_filter_initialize(&filter_z, &cb_z, z_buffer);
}
コード例 #5
0
/**
* @brief Initialise the Interrupt for the Accelerometer
* @param None
* @retval None
*/
void Accelerometer_Interrupt_Config(void) {

	/* initilalize accelerometer interupt */
	LIS3DSH_DRYInterruptConfigTypeDef Acc_Interrupt_InitDef;

	/* define field of the accelerometer interupt initialisation structure */
	Acc_Interrupt_InitDef.Dataready_Interrupt = LIS3DSH_DATA_READY_INTERRUPT_ENABLED;   							/* enable */
	Acc_Interrupt_InitDef.Interrupt_signal = LIS3DSH_ACTIVE_HIGH_INTERRUPT_SIGNAL;                  	/* active high */
	Acc_Interrupt_InitDef.Interrupt_type = LIS3DSH_INTERRUPT_REQUEST_PULSED;                     			/* pulse interupt */

	LIS3DSH_DataReadyInterruptConfig(&Acc_Interrupt_InitDef);

	HAL_NVIC_EnableIRQ(EXTI0_IRQn);
	HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 1);
}
コード例 #6
0
/*Configure the accelerometer
	*/
void Configure_Accel(void)
{
	LIS3DSH_InitStruct.Power_Mode_Output_DataRate = LIS3DSH_DATARATE_25;
	LIS3DSH_InitStruct.Axes_Enable = LIS3DSH_X_ENABLE | LIS3DSH_Y_ENABLE | LIS3DSH_Z_ENABLE;
	LIS3DSH_InitStruct.Full_Scale = LIS3DSH_FULLSCALE_4;
	LIS3DSH_InitStruct.AA_Filter_BW = LIS3DSH_AA_BW_200;
	LIS3DSH_InitStruct.Continous_Update = LIS3DSH_ContinousUpdate_Disabled;
	LIS3DSH_InitStruct.Self_Test = LIS3DSH_SELFTEST_NORMAL;
	
	
	DRYInterruptConfig.Dataready_Interrupt = LIS3DSH_DATA_READY_INTERRUPT_ENABLED;
	DRYInterruptConfig.Interrupt_signal = LIS3DSH_ACTIVE_HIGH_INTERRUPT_SIGNAL;
	DRYInterruptConfig.Interrupt_type = LIS3DSH_INTERRUPT_REQUEST_PULSED;
	
	
	LIS3DSH_DataReadyInterruptConfig(&DRYInterruptConfig);
	LIS3DSH_Init(&LIS3DSH_InitStruct);	
	
	HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);
	HAL_NVIC_EnableIRQ(EXTI0_IRQn);
	
}
コード例 #7
0
ファイル: main.c プロジェクト: ECSE426-GR6/lab3
void memsinit(void){

  LIS3DSH_InitTypeDef meminit;
  LIS3DSH_DRYInterruptConfigTypeDef intinit;

  meminit.Continous_Update = LIS3DSH_ContinousUpdate_Disabled;
  meminit.Power_Mode_Output_DataRate = LIS3DSH_DATARATE_25;
  meminit.AA_Filter_BW = LIS3DSH_AA_BW_800;
  meminit.Axes_Enable = LIS3DSH_XYZ_ENABLE;
  meminit.Full_Scale = LIS3DSH_FULLSCALE_2;
  meminit.Self_Test = LIS3DSH_SELFTEST_NORMAL;
  
  LIS3DSH_Init(&meminit);

  intinit.Dataready_Interrupt = LIS3DSH_DATA_READY_INTERRUPT_ENABLED;
  intinit.Interrupt_signal = LIS3DSH_ACTIVE_HIGH_INTERRUPT_SIGNAL;
  intinit.Interrupt_type = LIS3DSH_INTERRUPT_REQUEST_PULSED;
  
  LIS3DSH_DataReadyInterruptConfig(&intinit);

  
}