From 9f0006fde03298acf91d3b47d85e66c28346958e Mon Sep 17 00:00:00 2001 From: adamdunkels Date: Thu, 15 Jan 2009 21:06:02 +0000 Subject: [PATCH] Driver for the acceleromenter sensors on the JCreate board --- platform/sky/dev/acc-sensor.c | 130 ++++++++++++++++++++++++++++++++++ platform/sky/dev/acc-sensor.h | 48 +++++++++++++ 2 files changed, 178 insertions(+) create mode 100644 platform/sky/dev/acc-sensor.c create mode 100644 platform/sky/dev/acc-sensor.h diff --git a/platform/sky/dev/acc-sensor.c b/platform/sky/dev/acc-sensor.c new file mode 100644 index 000000000..2a53d7566 --- /dev/null +++ b/platform/sky/dev/acc-sensor.c @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id: acc-sensor.c,v 1.1 2009/01/15 21:06:02 adamdunkels Exp $ + * + * ----------------------------------------------------------------- + * + * Author : Adam Dunkels, Joakim Eriksson, Niclas Finne + * Created : 2005-11-01 + * Updated : $Date: 2009/01/15 21:06:02 $ + * $Revision: 1.1 $ + */ + +#include "dev/acc-sensor.h" +#include +#include "dev/irq.h" + +#include + +const struct sensors_sensor acc_sensor; + +/*---------------------------------------------------------------------------*/ +static void +init(void) +{ + +} +/*---------------------------------------------------------------------------*/ +static int +irq(void) +{ + return 0; +} +/*---------------------------------------------------------------------------*/ +static void +activate(void) +{ + /* This assumes that some other sensor system already did setup the ADC */ + /* (in the case of the sky platform it is sensors_light_init that does it) */ + + P6SEL |= 0x70; + P6DIR = 0x00; + P6OUT = 0x00; + + P2DIR |= 0x48; + P2OUT |= 0x48; + + + /* stop converting immediately */ + ADC12CTL0 &= ~ENC; + ADC12CTL1 &= ~CONSEQ_3; + + /* Configure ADC12_2 to sample channel 11 (voltage) and use */ + /* the Vref+ as reference (SREF_1) since it is a stable reference */ + ADC12MCTL2 = (INCH_4 + SREF_1); + ADC12MCTL3 = (INCH_5 + SREF_1); + ADC12MCTL4 = (INCH_6 + SREF_1); + + ADC12CTL1 |= CONSEQ_3; + ADC12CTL0 |= ENC | ADC12SC; + + /* Irq_adc12_activate(&acc_sensor, 6, (INCH_11 + SREF_1)); */ +} +/*---------------------------------------------------------------------------*/ +static void +deactivate(void) +{ + /* irq_adc12_deactivate(&acc_sensor, 6); + acc_value = 0;*/ +} +/*---------------------------------------------------------------------------*/ +static int +active(void) +{ + return 0; /* irq_adc12_active(6);*/ +} +/*---------------------------------------------------------------------------*/ +static unsigned int +value(int type) +{ + switch(type) { + case 0: + return ADC12MEM2; + case 1: + return ADC12MEM3; + case 2: + return ADC12MEM4; + } +} +/*---------------------------------------------------------------------------*/ +static int +configure(int type, void *c) +{ + return 0; +} +/*---------------------------------------------------------------------------*/ +static void * +status(int type) +{ + return NULL; +} +/*---------------------------------------------------------------------------*/ +SENSORS_SENSOR(acc_sensor, ACC_SENSOR, + init, irq, activate, deactivate, active, + value, configure, status); diff --git a/platform/sky/dev/acc-sensor.h b/platform/sky/dev/acc-sensor.h new file mode 100644 index 000000000..b10ae214a --- /dev/null +++ b/platform/sky/dev/acc-sensor.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id: acc-sensor.h,v 1.1 2009/01/15 21:06:02 adamdunkels Exp $ + * + * ----------------------------------------------------------------- + * + * Author : Adam Dunkels, Joakim Eriksson, Niclas Finne + * Created : 2005-11-01 + * Updated : $Date: 2009/01/15 21:06:02 $ + * $Revision: 1.1 $ + */ + +#ifndef __ACC_SENSOR_H__ +#define __ACC_SENSOR_H__ + +#include "lib/sensors.h" + +extern const struct sensors_sensor acc_sensor; + +#define ACC_SENSOR "Acc" + +#endif /* __ACC_SENSOR_H__ */