Dependencies:   ChaNFSSD mbed BMP085 SHT2x

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers libT_getAcc.c Source File

libT_getAcc.c

00001 /*
00002  * Copyright (c) 2011 Toshihisa T
00003  * Released under the MIT License: http://mbed.org/license/mit
00004  */
00005 
00006 extern "C" {
00007 static int libT_getAccTOmV(unsigned long Val,long *mV);
00008 int libT_getAcc1dot5G(unsigned long ADval,long *g);
00009 int libT_getAcc6G(unsigned long ADval,long *g);
00010 }
00011 
00012 
00013 static int libT_getAccTOmV(unsigned long Val,long *mV)
00014 {
00015     *mV = 0;
00016 
00017     /* AnalogIn = 1mV = 19.85939393939394 */
00018     if(Val >= 32767UL){
00019         *mV = ((Val - 32767UL) * 100UL) / 1985UL;
00020         *mV = 0 - *mV;
00021     } else {
00022         *mV = ((32767UL - Val) * 100UL) / 1985UL;
00023     }
00024     return 0;
00025 }
00026 
00027 int libT_getAcc1dot5G(unsigned long ADval,long *g)
00028 {
00029     long mV = 0;
00030     libT_getAccTOmV(ADval,&mV);    /* A/D value to mV */
00031     *g = (long)(mV / 8);    /* 0.01g units */
00032     return 0;
00033 }
00034 
00035 int libT_getAcc6G(unsigned long ADval,long *g)
00036 {
00037     long mV = 0;
00038     libT_getAccTOmV(ADval,&mV);    /* A/D value to mV */
00039     *g = (long)(mV / 2);    /* 0.01g units */
00040     return 0;
00041 }
00042 
00043 #if 0
00044 int main(void)
00045 {
00046     long g;
00047 
00048     libT_getAcc1dot5G(22767UL,&g);
00049     if(g >= 0){
00050         printf("1.5g g(DOWN)=%ld.%02ld\n",g/100,g%100);
00051     } else {
00052         g = g * -1;
00053         printf("1.5g g(UP)=%ld.%02ld\n",g/100,g%100);
00054     }
00055     libT_getAcc6G(22767UL,&g);
00056     if(g >= 0){
00057         printf("6g g(DOWN)=%ld.%02ld\n",g/100,g%100);
00058     } else {
00059         g = g * -1;
00060         printf("6g g(UP)=%ld.%02ld\n",g/100,g%100);
00061     }
00062     return 0;
00063 }
00064 #endif