From 3ec4143252f4d82623678366f600a86a180243f1 Mon Sep 17 00:00:00 2001 From: "Enric M. Calvo" Date: Tue, 22 Feb 2011 12:57:41 +0100 Subject: [PATCH] Added Potentiometer sensor in Z1 Platform --- examples/z1/Makefile | 4 +- examples/z1/test-potent.c | 32 ++++++++++++ platform/z1/dev/potentiometer-sensor.c | 67 ++++++++++++++++++++++++++ platform/z1/dev/potentiometer-sensor.h | 46 ++++++++++++++++++ 4 files changed, 147 insertions(+), 2 deletions(-) create mode 100644 examples/z1/test-potent.c create mode 100644 platform/z1/dev/potentiometer-sensor.c create mode 100644 platform/z1/dev/potentiometer-sensor.h diff --git a/examples/z1/Makefile b/examples/z1/Makefile index e0d77c7d9..4f6397bad 100644 --- a/examples/z1/Makefile +++ b/examples/z1/Makefile @@ -2,9 +2,9 @@ ifndef TARGET TARGET=z1 endif -CONTIKI_PROJECT = test-phidgets blink test-adxl345 tmp102-test test-battery +CONTIKI_PROJECT = test-phidgets blink test-adxl345 tmp102-test test-battery test-potent CONTIKI_SOURCEFILES += cc2420-arch.c -PROJECT_SOURCEFILES = i2cmaster.c tmp102.c adxl345.c battery-sensor.c sky-sensors.c +PROJECT_SOURCEFILES = i2cmaster.c tmp102.c adxl345.c battery-sensor.c sky-sensors.c potentiometer-sensor.c APPS=serial-shell diff --git a/examples/z1/test-potent.c b/examples/z1/test-potent.c new file mode 100644 index 000000000..5bf58abbe --- /dev/null +++ b/examples/z1/test-potent.c @@ -0,0 +1,32 @@ +#include "contiki.h" + +#include "dev/potentiometer-sensor.h" +#include /* For printf() */ + + +/*---------------------------------------------------------------------------*/ +PROCESS(aplicacio, "Aplicacio de prova"); +AUTOSTART_PROCESSES(&aplicacio); +/*---------------------------------------------------------------------------*/ +PROCESS_THREAD(aplicacio, ev, data) +{ + + PROCESS_BEGIN(); + + SENSORS_ACTIVATE(potentiometer_sensor); + + while (1) + { + + uint16_t v = potentiometer_sensor.value(0); + + printf("Potentiometer Value: %i\n", v); + } + + SENSORS_DEACTIVATE(potentiometer_sensor); + + + PROCESS_END(); +} +/*---------------------------------------------------------------------------*/ + diff --git a/platform/z1/dev/potentiometer-sensor.c b/platform/z1/dev/potentiometer-sensor.c new file mode 100644 index 000000000..107b400ba --- /dev/null +++ b/platform/z1/dev/potentiometer-sensor.c @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2011 Zolertia(TM) is a trademark by Advancare,SL + * 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. + * + * + * ----------------------------------------------------------------- + * + * Author : Enric M. Calvo (based on work by A. Dunkels, J. Eriksson, N. Finne) + * Created : 2011-02-22 + * $Revision: 1.0 $ + */ + +#include "dev/potentiometer-sensor.h" +#include "dev/sky-sensors.h" +#include + +/* Configure ADC12_2 to sample channel 11 (voltage) and use */ +/* the Vref+ as reference (SREF_1) since it is a stable reference */ +#define INPUT_CHANNEL (1 << INCH_4) +#define INPUT_REFERENCE SREF_0 +#define POTENTIOMETER_MEM ADC12MEM4 + +const struct sensors_sensor battery_sensor; +/*---------------------------------------------------------------------------*/ +static int +value(int type) +{ + return POTENTIOMETER_MEM; +} +/*---------------------------------------------------------------------------*/ +static int +configure(int type, int c) +{ + return sky_sensors_configure(INPUT_CHANNEL, INPUT_REFERENCE, type, c); +} +/*---------------------------------------------------------------------------*/ +static int +status(int type) +{ + return sky_sensors_status(INPUT_CHANNEL, type); +} +/*---------------------------------------------------------------------------*/ +SENSORS_SENSOR(potentiometer_sensor, POTENTIOMETER_SENSOR, value, configure, status); diff --git a/platform/z1/dev/potentiometer-sensor.h b/platform/z1/dev/potentiometer-sensor.h new file mode 100644 index 000000000..93e5a968a --- /dev/null +++ b/platform/z1/dev/potentiometer-sensor.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2011 Zolertia(TM) is a trademark by Advancare,SL + * 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. + * + * + * ----------------------------------------------------------------- + * + * Author : Enric M. Calvo (based on work by A. Dunkels, J. Eriksson, N. Finne) + * Created : 2011-02-22 + * $Revision: 1.0 $ + */ + +#ifndef __POTENTIOMETER_SENSOR_H__ +#define __POTENTIOMETER_SENSOR_H__ + +#include "lib/sensors.h" + +extern const struct sensors_sensor potentiometer_sensor; + +#define POTENTIOMETER_SENSOR "Potentiometer" + +#endif /* __POTENTIOMETER_SENSOR_H__ */