From 2b9a0a0e26d0b6b63808413e2835bdadf7faeac2 Mon Sep 17 00:00:00 2001 From: ayer1 Date: Wed, 17 Mar 2010 17:24:33 +0000 Subject: [PATCH] .platform add for gyro module hardware.h was missing input pins mnemonics for adc_3-5 hplcc2420 just whitespace gyro support for new board, parts, interface, button, led. --- tos/platforms/shimmer2/.platform | 1 + .../shimmer2/chips/gyro/GyroBoard.nc | 55 +++++++ .../shimmer2/chips/gyro/GyroBoardC.nc | 55 +++++++ .../shimmer2/chips/gyro/GyroBoardP.nc | 152 ++++++++++++++++++ .../shimmer2/chips/gyro/GyroButtonC.nc | 65 ++++++++ .../shimmer2/chips/gyro/HplGyroButtonC.nc | 57 +++++++ tos/platforms/shimmer2/hardware.h | 3 + 7 files changed, 388 insertions(+) create mode 100644 tos/platforms/shimmer2/chips/gyro/GyroBoard.nc create mode 100644 tos/platforms/shimmer2/chips/gyro/GyroBoardC.nc create mode 100644 tos/platforms/shimmer2/chips/gyro/GyroBoardP.nc create mode 100644 tos/platforms/shimmer2/chips/gyro/GyroButtonC.nc create mode 100644 tos/platforms/shimmer2/chips/gyro/HplGyroButtonC.nc diff --git a/tos/platforms/shimmer2/.platform b/tos/platforms/shimmer2/.platform index 2dc2d5a4..e2cac165 100644 --- a/tos/platforms/shimmer2/.platform +++ b/tos/platforms/shimmer2/.platform @@ -16,6 +16,7 @@ push( @includes, qw( %T/platforms/shimmer2/chips/sd %T/platforms/shimmer2/chips/bluetooth %T/platforms/shimmer2/chips/tilt + %T/platforms/shimmer2/chips/gyro %T/platforms/shimmer %T/platforms/shimmer/chips/msp430 %T/platforms/shimmer/chips/mma7260 diff --git a/tos/platforms/shimmer2/chips/gyro/GyroBoard.nc b/tos/platforms/shimmer2/chips/gyro/GyroBoard.nc new file mode 100644 index 00000000..665ef89f --- /dev/null +++ b/tos/platforms/shimmer2/chips/gyro/GyroBoard.nc @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2009, Shimmer Research, Ltd. + * All rights reserved + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of Shimmer Research, Ltd. 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 COPYRIGHT HOLDERS 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 COPYRIGHT + * OWNER 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 Steve Ayer + * @date August 2009 + * + * tinyos-2.x port + * @date March, 2010 + * + */ + +interface GyroBoard { + // no explicit enable/disable, use stdcontrol. + + // it has its own + command void ledOn(); + command void ledOff(); + command void ledToggle(); + + command void autoZero(); + + // it has its own, just a reflection of UserButton.fired(), which is debounced + async event void buttonPressed(); +} + + + + diff --git a/tos/platforms/shimmer2/chips/gyro/GyroBoardC.nc b/tos/platforms/shimmer2/chips/gyro/GyroBoardC.nc new file mode 100644 index 00000000..902508ae --- /dev/null +++ b/tos/platforms/shimmer2/chips/gyro/GyroBoardC.nc @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2009, Shimmer Research, Ltd. + * All rights reserved + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of Shimmer Research, Ltd. 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 COPYRIGHT HOLDERS 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 COPYRIGHT + * OWNER 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 Steve Ayer + * @date August 2009 + * + * tinyos-2.x port + * @date March, 2010 + */ + +configuration GyroBoardC { + provides{ + interface Init; + interface StdControl; + interface GyroBoard; + } +} + +implementation { + components GyroBoardP; + Init = GyroBoardP; + StdControl = GyroBoardP; + GyroBoard = GyroBoardP; + + components GyroButtonC; + GyroBoardP.buttonNotify -> GyroButtonC; +} + diff --git a/tos/platforms/shimmer2/chips/gyro/GyroBoardP.nc b/tos/platforms/shimmer2/chips/gyro/GyroBoardP.nc new file mode 100644 index 00000000..54cdeb70 --- /dev/null +++ b/tos/platforms/shimmer2/chips/gyro/GyroBoardP.nc @@ -0,0 +1,152 @@ +/* + * Copyright (c) 2009, Shimmer Research, Ltd. + * All rights reserved + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of Shimmer Research, Ltd. 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 COPYRIGHT HOLDERS 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 COPYRIGHT + * OWNER 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 Steve Ayer + * @date August, 2009 + * + * tinyos-2.x port + * @date March, 2010 + * + */ + +#include + +module GyroBoardP { + provides { + interface Init; + interface StdControl; + interface GyroBoard; + } + uses{ + interface Notify as buttonNotify; + } +} + +implementation { + command error_t Init.init(){ + register uint16_t i; + + // power, active low + TOSH_MAKE_PROG_OUT_OUTPUT(); + TOSH_SEL_PROG_OUT_IOFUNC(); + TOSH_SET_PROG_OUT_PIN(); // off + + // analog signal enable, active low + TOSH_MAKE_SER0_CTS_OUTPUT(); + TOSH_SEL_SER0_CTS_IOFUNC(); + TOSH_SET_SER0_CTS_PIN(); // signal disabled + + // signal goes to gyro-zero pins + TOSH_MAKE_UTXD0_OUTPUT(); + TOSH_SEL_UTXD0_IOFUNC(); + TOSH_CLR_UTXD0_PIN(); + + // this one tied to the led + TOSH_MAKE_URXD0_OUTPUT(); + TOSH_SEL_URXD0_IOFUNC(); + call GyroBoard.ledOff(); + + // x + TOSH_MAKE_ADC_1_INPUT(); + TOSH_SEL_ADC_1_MODFUNC(); + + // y + TOSH_MAKE_ADC_6_INPUT(); + TOSH_SEL_ADC_6_MODFUNC(); + + // z + TOSH_MAKE_ADC_2_INPUT(); + TOSH_SEL_ADC_2_MODFUNC(); + + /* + * gyro power-down after start-up transients, which are particularly rough during programming + * we're waiting for caps to discharge... + */ + for(i = 0; i < 6000; i++) + TOSH_uwait(1000); + + // now power it up, max ready-time 200ms + TOSH_CLR_PROG_OUT_PIN(); + + for(i = 0; i < 200; i++) + TOSH_uwait(1000); + + call buttonNotify.enable(); + + return SUCCESS; + } + + command error_t StdControl.start(){ + TOSH_CLR_SER0_CTS_PIN(); // enable analog signals + + return SUCCESS; + } + + command error_t StdControl.stop(){ + // disable analog signals, then power down + TOSH_SET_SER0_CTS_PIN(); + TOSH_SET_PROG_OUT_PIN(); + + // kill the led + call GyroBoard.ledOff(); + + return SUCCESS; + } + + command void GyroBoard.autoZero() { + TOSH_SET_UTXD0_PIN(); + + TOSH_uwait(100); // pulse between 2 (!) and 1500 usec + + TOSH_CLR_UTXD0_PIN(); + + TOSH_uwait(6900); // takes 7ms to settle + } + + command void GyroBoard.ledOn() { + TOSH_CLR_URXD0_PIN(); + } + + command void GyroBoard.ledOff() { + TOSH_SET_URXD0_PIN(); + } + + command void GyroBoard.ledToggle() { + TOSH_TOGGLE_URXD0_PIN(); + } + + event void buttonNotify.notify( button_state_t val){ + signal GyroBoard.buttonPressed(); + } +} + + + + diff --git a/tos/platforms/shimmer2/chips/gyro/GyroButtonC.nc b/tos/platforms/shimmer2/chips/gyro/GyroButtonC.nc new file mode 100644 index 00000000..0a3fef83 --- /dev/null +++ b/tos/platforms/shimmer2/chips/gyro/GyroButtonC.nc @@ -0,0 +1,65 @@ +/** + * Copyright (c) 2007 Arch Rock Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * - 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. + * - Neither the name of the Arch Rock Corporation 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 COPYRIGHT HOLDERS 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * Implementation of the user button for the telosb platform. Get + * returns the current state of the button by reading the pin, + * regardless of whether enable() or disable() has been called on the + * Interface. Notify.enable() and Notify.disable() modify the + * underlying interrupt state of the pin, and have the effect of + * enabling or disabling notifications that the button has changed + * state. + * + * @author Gilman Tolle + * @version $Revision$ + * port to shimmer-style + * @author Steve Ayer + * @date February, 2010 + */ + +#include + +configuration GyroButtonC { + provides interface Notify; +} +implementation { + components HplGyroButtonC; + components new SwitchToggleC(); + SwitchToggleC.GpioInterrupt -> HplGyroButtonC.GpioInterrupt; + SwitchToggleC.GeneralIO -> HplGyroButtonC.GeneralIO; + + components UserButtonP; + Notify = UserButtonP; + + components new TimerMilliC() as debounceTimer; + UserButtonP.NotifyLower -> SwitchToggleC.Notify; + UserButtonP.debounceTimer -> debounceTimer; +} diff --git a/tos/platforms/shimmer2/chips/gyro/HplGyroButtonC.nc b/tos/platforms/shimmer2/chips/gyro/HplGyroButtonC.nc new file mode 100644 index 00000000..2b074dc3 --- /dev/null +++ b/tos/platforms/shimmer2/chips/gyro/HplGyroButtonC.nc @@ -0,0 +1,57 @@ +/** + * Copyright (c) 2007 Arch Rock Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * - 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. + * - Neither the name of the Arch Rock Corporation 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 COPYRIGHT HOLDERS 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * Implementation of the user button for the telos platform + * + * @author Gilman Tolle + * @version $Revision$ + * (not much to) port to shimmer2 gyro + * @author Steve Ayer + * @date March, 2010 + */ + +configuration HplUserButtonC { + provides interface GeneralIO; + provides interface GpioInterrupt; +} +implementation { + components HplMsp430GeneralIOC as GeneralIOC; + components HplMsp430InterruptC as InterruptC; + + components new Msp430GpioC() as UserButtonC; + UserButtonC -> GeneralIOC.Port13; + GeneralIO = UserButtonC; + + components new Msp430InterruptC() as InterruptUserButtonC; + InterruptUserButtonC.HplInterrupt -> InterruptC.Port13; + GpioInterrupt = InterruptUserButtonC.Interrupt; +} diff --git a/tos/platforms/shimmer2/hardware.h b/tos/platforms/shimmer2/hardware.h index 90d857e7..35a85ba4 100644 --- a/tos/platforms/shimmer2/hardware.h +++ b/tos/platforms/shimmer2/hardware.h @@ -93,6 +93,9 @@ TOSH_ASSIGN_PIN(TILT, 2, 4); TOSH_ASSIGN_PIN(ADC_0, 6, 0); TOSH_ASSIGN_PIN(ADC_1, 6, 1); TOSH_ASSIGN_PIN(ADC_2, 6, 2); +TOSH_ASSIGN_PIN(ADC_3, 6, 3); +TOSH_ASSIGN_PIN(ADC_4, 6, 4); +TOSH_ASSIGN_PIN(ADC_5, 6, 5); TOSH_ASSIGN_PIN(ADC_6, 6, 6); TOSH_ASSIGN_PIN(ADC_7, 6, 7); -- 2.39.2