Microchip® Advanced Software Framework

s_accelerometer.h File Reference
#include "compiler.h"

Data Structures

struct  Avr32_acc_t
 
struct  xyz_t
 All 3-axis values from ADC conversion. More...
 

Macros

#define ACC_1G   (205 >> ACC_SHIFT)
 
#define ACC_CALIB_X   0
 
#define ACC_CALIB_Y   0
 
#define ACC_CALIB_Z   0
 
#define ACC_MAX   ( ACC_ZERO + ACC_1G )
 
#define ACC_MIN   ( ACC_ZERO - ACC_1G )
 
#define ACC_QUIET_HI   (int) ( 1.4 * ACC_1G * ACC_1G )
 
#define ACC_QUIET_LO   (int) ( 0.6 * ACC_1G * ACC_1G )
 
#define ACC_SHIFT   2
 
#define ACC_TRIG_X0   (int) ( ACC_ZERO_X - SIN15 * ACC_1G )
 
#define ACC_TRIG_X1   (int) ( ACC_ZERO_X + SIN15 * ACC_1G )
 
#define ACC_TRIG_Y0   (int) ( ACC_ZERO_Y - SIN15 * ACC_1G )
 
#define ACC_TRIG_Y1   (int) ( ACC_ZERO_Y + SIN15 * ACC_1G )
 
#define ACC_TRIG_Z_BOT   (int) ( ACC_ZERO_Z + SIN60 * ACC_1G )
 
#define ACC_TRIG_Z_TOP   (int) ( ACC_ZERO_Z - SIN75 * ACC_1G )
 
#define ACC_ZERO   (512 >> ACC_SHIFT)
 
#define ACC_ZERO_X   ( ACC_ZERO + ACC_CALIB_X )
 
#define ACC_ZERO_Y   ( ACC_ZERO + ACC_CALIB_Y )
 
#define ACC_ZERO_Z   ( ACC_ZERO + ACC_CALIB_Z )
 
#define SIN0   0
 
#define SIN10   0.174
 
#define SIN15   0.259
 
#define SIN20   0.342
 
#define SIN25   0.423
 
#define SIN30   0.5
 
#define SIN35   0.574
 
#define SIN40   0.643
 
#define SIN45   0.707
 
#define SIN5   0.087
 
#define SIN50   0.766
 
#define SIN55   0.819
 
#define SIN60   0.866
 
#define SIN65   0.906
 
#define SIN70   0.94
 
#define SIN75   0.966
 
#define SIN80   0.985
 
#define SIN85   0.996
 
#define SIN90   1
 

Functions

void accelerometer_init ()
 Init the accelerometer driver. More...
 
void accelerometer_measure (U32 angle, char *buf)
 Measures the accelerometer values and converts them to X and Y angles. More...
 

#define ACC_1G   (205 >> ACC_SHIFT)
#define ACC_CALIB_X   0
#define ACC_CALIB_Y   0
#define ACC_CALIB_Z   0
#define ACC_MAX   ( ACC_ZERO + ACC_1G )
#define ACC_MIN   ( ACC_ZERO - ACC_1G )
#define ACC_QUIET_HI   (int) ( 1.4 * ACC_1G * ACC_1G )

Referenced by acc_slow(), and is_acc_slow().

#define ACC_QUIET_LO   (int) ( 0.6 * ACC_1G * ACC_1G )

Referenced by acc_slow(), and is_acc_slow().

#define ACC_SHIFT   2

Referenced by acc_get_value().

#define ACC_TRIG_X0   (int) ( ACC_ZERO_X - SIN15 * ACC_1G )

Referenced by is_acc_right().

#define ACC_TRIG_X1   (int) ( ACC_ZERO_X + SIN15 * ACC_1G )

Referenced by is_acc_left().

#define ACC_TRIG_Y0   (int) ( ACC_ZERO_Y - SIN15 * ACC_1G )

Referenced by is_acc_up().

#define ACC_TRIG_Y1   (int) ( ACC_ZERO_Y + SIN15 * ACC_1G )

Referenced by is_acc_down().

#define ACC_TRIG_Z_BOT   (int) ( ACC_ZERO_Z + SIN60 * ACC_1G )

Referenced by is_acc_meuh(), and is_acc_topdown().

#define ACC_TRIG_Z_TOP   (int) ( ACC_ZERO_Z - SIN75 * ACC_1G )

Referenced by is_acc_meuh().

#define ACC_ZERO   (512 >> ACC_SHIFT)
#define ACC_ZERO_X   ( ACC_ZERO + ACC_CALIB_X )

Referenced by print_mouse().

#define ACC_ZERO_Y   ( ACC_ZERO + ACC_CALIB_Y )

Referenced by print_mouse().

#define ACC_ZERO_Z   ( ACC_ZERO + ACC_CALIB_Z )
#define SIN0   0
#define SIN10   0.174
#define SIN15   0.259
#define SIN20   0.342
#define SIN25   0.423
#define SIN30   0.5
#define SIN35   0.574
#define SIN40   0.643
#define SIN45   0.707
#define SIN5   0.087
#define SIN50   0.766
#define SIN55   0.819
#define SIN60   0.866
#define SIN65   0.906
#define SIN70   0.94
#define SIN75   0.966
#define SIN80   0.985
#define SIN85   0.996
#define SIN90   1

void accelerometer_init ( )

Init the accelerometer driver.

References adc, adc_configure(), and gpio_enable_module_pin().

Referenced by device_full_custom_task_init().

void accelerometer_measure ( U32  angle,
char *  buf 
)

Measures the accelerometer values and converts them to X and Y angles.

Parameters
angleBoolean (0 for X-angle, 1 for Y-angle)
bufchar buffer in which the light sensor value is stored.

References acc_get_value(), accelerometer_action_x(), accelerometer_action_y(), adc, adc_channel_x, adc_channel_y, adc_channel_z, Avr32_acc_t::ak, Avr32_acc_t::ak2, Avr32_acc_t::g, Avr32_acc_t::k, Avr32_acc_t::m, sprintf(), xyz_t::x, xyz_diff(), xyz_sumsq(), xyz_t::y, and xyz_t::z.

Referenced by device_full_custom_task().