]> oss.titaniummirror.com Git - tinyos-2.x.git/commitdiff
.platform add for gyro module
authorayer1 <ayer1>
Wed, 17 Mar 2010 17:24:33 +0000 (17:24 +0000)
committerayer1 <ayer1>
Wed, 17 Mar 2010 17:24:33 +0000 (17:24 +0000)
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
tos/platforms/shimmer2/chips/gyro/GyroBoard.nc [new file with mode: 0644]
tos/platforms/shimmer2/chips/gyro/GyroBoardC.nc [new file with mode: 0644]
tos/platforms/shimmer2/chips/gyro/GyroBoardP.nc [new file with mode: 0644]
tos/platforms/shimmer2/chips/gyro/GyroButtonC.nc [new file with mode: 0644]
tos/platforms/shimmer2/chips/gyro/HplGyroButtonC.nc [new file with mode: 0644]
tos/platforms/shimmer2/hardware.h

index 2dc2d5a426ea6e3b028a9b50735fb7c952b532ea..e2cac165a0271f51a211aa9ec4c437d9d878926d 100644 (file)
@@ -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 (file)
index 0000000..665ef89
--- /dev/null
@@ -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 (file)
index 0000000..902508a
--- /dev/null
@@ -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 (file)
index 0000000..54cdeb7
--- /dev/null
@@ -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 <UserButton.h>
+
+module GyroBoardP {
+  provides {
+    interface Init;
+    interface StdControl;
+    interface GyroBoard;
+  }
+  uses{
+    interface Notify<button_state_t> 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 (file)
index 0000000..0a3fef8
--- /dev/null
@@ -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 <gtolle@archrock.com>
+ * @version $Revision$
+ * port to shimmer-style
+ * @author Steve Ayer
+ * @date   February, 2010
+ */
+
+#include <UserButton.h>
+
+configuration GyroButtonC {
+  provides interface Notify<button_state_t>;
+}
+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 (file)
index 0000000..2b074dc
--- /dev/null
@@ -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 <gtolle@archrock.com>
+ * @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;
+}
index 90d857e7b78ec4f8afd7836fa668a58563bd32b5..35a85ba4ab883a4ad676e39f7babcb46ff3ef4b2 100644 (file)
@@ -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);