s_accelerometer.h File Reference


Detailed Description

Accelerometer senser header file.

Author:
Atmel Corporation: http://www.atmel.com
Support and FAQ: http://support.atmel.no/

Definition in file s_accelerometer.h.

#include "compiler.h"

Go to the source code of this file.

Data Structures

struct  Avr32_acc_t
struct  xyz_t

Defines

#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.
void accelerometer_measure (U32 angle, char *buf)
 Measures the accelerometer values and converts them to X and Y angles.


Define Documentation

#define ACC_1G   (205 >> ACC_SHIFT)

Definition at line 64 of file s_accelerometer.h.

#define ACC_CALIB_X   0

Definition at line 88 of file s_accelerometer.h.

#define ACC_CALIB_Y   0

Definition at line 89 of file s_accelerometer.h.

#define ACC_CALIB_Z   0

Definition at line 90 of file s_accelerometer.h.

#define ACC_MAX   ( ACC_ZERO + ACC_1G )

Definition at line 66 of file s_accelerometer.h.

#define ACC_MIN   ( ACC_ZERO - ACC_1G )

Definition at line 65 of file s_accelerometer.h.

#define ACC_QUIET_HI   (int) ( 1.4 * ACC_1G * ACC_1G )

Definition at line 104 of file s_accelerometer.h.

Referenced by acc_slow().

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

Definition at line 103 of file s_accelerometer.h.

Referenced by acc_slow().

#define ACC_SHIFT   2

Definition at line 60 of file s_accelerometer.h.

Referenced by acc_get_value().

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

Definition at line 96 of file s_accelerometer.h.

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

Definition at line 97 of file s_accelerometer.h.

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

Definition at line 98 of file s_accelerometer.h.

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

Definition at line 99 of file s_accelerometer.h.

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

Definition at line 101 of file s_accelerometer.h.

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

Definition at line 100 of file s_accelerometer.h.

#define ACC_ZERO   (512 >> ACC_SHIFT)

Definition at line 63 of file s_accelerometer.h.

#define ACC_ZERO_X   ( ACC_ZERO + ACC_CALIB_X )

Definition at line 92 of file s_accelerometer.h.

#define ACC_ZERO_Y   ( ACC_ZERO + ACC_CALIB_Y )

Definition at line 93 of file s_accelerometer.h.

#define ACC_ZERO_Z   ( ACC_ZERO + ACC_CALIB_Z )

Definition at line 94 of file s_accelerometer.h.

#define SIN0   0

Definition at line 68 of file s_accelerometer.h.

#define SIN10   0.174

Definition at line 70 of file s_accelerometer.h.

#define SIN15   0.259

Definition at line 71 of file s_accelerometer.h.

#define SIN20   0.342

Definition at line 72 of file s_accelerometer.h.

#define SIN25   0.423

Definition at line 73 of file s_accelerometer.h.

#define SIN30   0.5

Definition at line 74 of file s_accelerometer.h.

#define SIN35   0.574

Definition at line 75 of file s_accelerometer.h.

#define SIN40   0.643

Definition at line 76 of file s_accelerometer.h.

#define SIN45   0.707

Definition at line 77 of file s_accelerometer.h.

#define SIN5   0.087

Definition at line 69 of file s_accelerometer.h.

#define SIN50   0.766

Definition at line 78 of file s_accelerometer.h.

#define SIN55   0.819

Definition at line 79 of file s_accelerometer.h.

#define SIN60   0.866

Definition at line 80 of file s_accelerometer.h.

#define SIN65   0.906

Definition at line 81 of file s_accelerometer.h.

#define SIN70   0.94

Definition at line 82 of file s_accelerometer.h.

#define SIN75   0.966

Definition at line 83 of file s_accelerometer.h.

#define SIN80   0.985

Definition at line 84 of file s_accelerometer.h.

#define SIN85   0.996

Definition at line 85 of file s_accelerometer.h.

#define SIN90   1

Definition at line 86 of file s_accelerometer.h.


Function Documentation

void accelerometer_init (  ) 

Init the accelerometer driver.

Definition at line 258 of file s_accelerometer.c.

References adc.

Referenced by device_full_custom_task_init().

00259 {
00260   // enable GPIO pins for ADC
00261   gpio_enable_module_pin(AVR32_ADC_AD_1_PIN,   AVR32_ADC_AD_1_FUNCTION);   // ADC channel 1
00262   gpio_enable_module_pin(AVR32_ADC_AD_2_PIN,   AVR32_ADC_AD_2_FUNCTION);   // ADC channel 2
00263   gpio_enable_module_pin(AVR32_ADC_AD_3_PIN,   AVR32_ADC_AD_3_FUNCTION);   // ADC channel 3
00264 
00265 
00266   // configure ADC
00267   adc_configure(adc);
00268 }

void accelerometer_measure ( U32  angle,
char *  buf 
)

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

Parameters:
angle Boolean (0 for X-angle, 1 for Y-angle)
buf char buffer in which the light sensor value is stored.

Definition at line 278 of file s_accelerometer.c.

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, xyz_t::x, xyz_diff(), xyz_sumsq(), xyz_t::y, and xyz_t::z.

Referenced by device_full_custom_task().

00279 {
00280   // start + get from adc
00281   acc_get_value(adc, adc_channel_x, adc_channel_y, adc_channel_z, &acc.m ) ;
00282 
00283   // ak  = acceleration = m - k
00284   xyz_diff( acc.m , acc.k, &acc.ak ) ;
00285   //printf("x=%d y=%d z=%d \n\r", acc.ak.x, acc.ak.y, acc.ak.z);
00286   acc.ak2 = xyz_sumsq( acc.ak ) ;
00287   
00288   if(!angle)
00289   {
00290      accelerometer_action_x( buf );
00291      sprintf( buf, "%3d\r\n", g_angle.x);
00292   } else {
00293      accelerometer_action_y( buf );
00294      sprintf( buf, "%3d\r\n", g_angle.y);
00295   }
00296   
00297   // update g for next move
00298   acc.g.x = acc.m.x ;
00299   acc.g.y = acc.m.y ;
00300   acc.g.z = acc.m.z ;
00301 }


Generated on Fri Feb 19 02:22:52 2010 for AVR32 - Control Panel demonstration. by  doxygen 1.5.5