コード例 #1
0
void print_debug()
{
		// check if that is really in the mode we set
		
		_printf(0, LCD_SEG_L1_3_0, "%03x", as_read_register(ADDR_CTRL));
		_printf(0, LCD_SEG_L2_5_0, "%05x", as_read_register(ADDR_MDFFTMR));

}
コード例 #2
0
// *************************************************************************************************
// @fn          as_get_data
// @brief       Service routine to read acceleration values.
// @param       none
// @return      none
// *************************************************************************************************
void as_get_data(unsigned * data)
{
	// Exit if sensor is not powered up
	if ((AS_PWR_OUT & AS_PWR_PIN) != AS_PWR_PIN) return;
  
  	// Store X/Y/Z acceleration data in buffer
	*(data+0) = as_read_register(0x06);
	*(data+1) = as_read_register(0x07);
	*(data+2) = as_read_register(0x08);
}
コード例 #3
0
ファイル: vti_as.c プロジェクト: KarolTx/openchronos-ng
void as_get_data(uint8_t *data)
{
	/* Exit if sensor is not powered up */
	if ((AS_PWR_OUT & AS_PWR_PIN) != AS_PWR_PIN)
		return;

	/* Store X/Y/Z acceleration data in buffer */
	*(data + 0) = as_read_register(0x06);
	*(data + 1) = as_read_register(0x07);
	*(data + 2) = as_read_register(0x08);
}
コード例 #4
0
ファイル: cma_as.c プロジェクト: caesarhao/zhchronos_nl
// *************************************************************************************************
// @fn          cma_as_read_register
// @brief       Read a byte from the acceleration sensor
// @param       u8 bAddress             Register address
// @return      u8 0 or bResult         Register content
//                                      If the returned value is 0 there was an error.
// *************************************************************************************************
u8 cma_as_read_register(u8 bAddress)
{
    bAddress <<= 2;                              // Address to be shifted left by 2 and
                                                 // RW bit to be reset

    return as_read_register(bAddress);
}
コード例 #5
0
static void up_btn()
{

	// Depending on the state what do we do?
	switch (submenu_state) {
		case VIEW_SET_MODE:
			as_config.mode++;
			as_config.mode %= 3;
			change_mode(as_config.mode);
			update_menu();

			break;

		case VIEW_SET_PARAMS:
			_printf(0,LCD_SEG_L1_3_0 , "%04x", as_read_register(ADDR_CTRL));
			break;

		case VIEW_STATUS:
			_printf(0,LCD_SEG_L1_3_0, "%1u", as_status.all_flags);
	
			break;

		case VIEW_AXIS:

			display_chars(0,LCD_SEG_L1_3_0 , "TODO", SEG_SET);
			break;

		default:
			break;
	}
	/* update menu screen */
	lcd_screen_activate(0);
}
コード例 #6
0
ファイル: vti_as.c プロジェクト: KarolTx/openchronos-ng
uint8_t as_get_z(void)
{
	if ((AS_PWR_OUT & AS_PWR_PIN) != AS_PWR_PIN)
		return 0;

	return as_read_register(0x08);
}
コード例 #7
0
uint8_t as_get_status() {
	volatile uint8_t status;
	if ((AS_PWR_OUT & AS_PWR_PIN) != AS_PWR_PIN)
		return 0;
	status= as_read_register(ADDR_INT_STATUS);
	return status;

}
コード例 #8
0
static void as_event(enum sys_message msg)
{


	if ( (msg & SYS_MSG_RTC_MINUTE) == SYS_MSG_RTC_MINUTE)
	{
		if(sAccel.mode == ACCEL_MODE_ON) sAccel.timeout--;
		//if timeout is over disable the accelerometer
		if(sAccel.timeout<1)
		{
			//disable accelerometer to save power			
			as_stop();
			//update the mode to remember
			sAccel.mode = ACCEL_MODE_OFF;
		}

	}
	if ( (msg & SYS_MSG_AS_INT) == SYS_MSG_AS_INT)
	{
		//Check the vti register for status information
		as_status.all_flags=as_get_status();
		//TODO For debugging only
		_printf(0, LCD_SEG_L1_1_0, "%1u", as_status.all_flags);	
		buzzer_play(smb);
		//if we were in free fall or motion detection mode check for the event
		if(as_status.int_status.falldet || as_status.int_status.motiondet){

			//if such an event is detected enable the symbol
			//display_symbol(0, LCD_ICON_ALARM , SEG_SET | BLINK_ON);
			
			//read the data
			as_get_data(sAccel.xyz);
			//display_data(0);
			/* update menu screen */
			lcd_screen_activate(0);

		}//if we were in measurment mode do a measurement and put it in the virtual screen
		else
		{

			//display_symbol(0, LCD_ICON_ALARM , SEG_SET | BLINK_OFF);
			display_data(1);
			/* refresh to accelerometer screen only if in that modality */
			if (submenu_state== VIEW_AXIS )lcd_screen_activate(1);

		}
	}
	/* The 1 Hz timer is used to refresh the menu screen */
	if ( (msg & SYS_MSG_RTC_SECOND) == SYS_MSG_RTC_SECOND)
	{
	/*check the status register for debugging purposes */
	_printf(0, LCD_SEG_L1_1_0, "%1u", as_read_register(ADDR_INT_STATUS));	
	/* update menu screen */
	lcd_screen_activate(0);
	}

}
コード例 #9
0
ファイル: vti_as.c プロジェクト: flamewow/chronus
// *************************************************************************************************
// @fn          as_get_data
// @brief       Service routine to read acceleration values.
// @param       none
// @return      none
// *************************************************************************************************
void as_get_data(u8 * data)
{
	// Exit if sensor is not powered up
	if ((AS_PWR_OUT & AS_PWR_PIN) != AS_PWR_PIN) return;
  
  	// Dummy read LSB from LSB acceleration data to update MSB (BMA250 datasheet 4.4.1)
  	*(data+1) = as_read_register(BMP_ACC_X_LSB);
	*(data+0) = as_read_register(BMP_ACC_Y_LSB);
	*(data+2) = as_read_register(BMP_ACC_Z_LSB);
  	// Store X/Y/Z MSB acceleration data in buffer
	*(data+1) = as_read_register(BMP_ACC_X_MSB);
	*(data+0) = as_read_register(BMP_ACC_Y_MSB);
	*(data+2) = as_read_register(BMP_ACC_Z_MSB);
}
コード例 #10
0
ファイル: vti_as.c プロジェクト: 1thumper/OpenChronos
u8 as_get_y(void)
{
	if ((AS_PWR_OUT & AS_PWR_PIN) != AS_PWR_PIN) return 0;
	return as_read_register(0x07);
}
コード例 #11
0
ファイル: bmp_as.c プロジェクト: kausdev/MyChronos
// *************************************************************************************************
// @fn          bmp_as_read_register
// @brief       Read a byte from the acceleration sensor
// @param       u8 bAddress		        Register address
// @return      u8					    Register content
// *************************************************************************************************
u8 bmp_as_read_register(u8 bAddress)
{
    bAddress |= BIT7;                   // set R/W bit for reading

    return as_read_register(bAddress);
}