]> oss.titaniummirror.com Git - tinyos-2.x.git/commitdiff
mulle platfor modification, flsh storage, more lowpower, softi2c improvements
authorr-studio <r-studio>
Thu, 5 Nov 2009 12:25:51 +0000 (12:25 +0000)
committerr-studio <r-studio>
Thu, 5 Nov 2009 12:25:51 +0000 (12:25 +0000)
15 files changed:
tos/lib/printf/printf.h
tos/platforms/mulle/.platform
tos/platforms/mulle/PlatformC.nc
tos/platforms/mulle/PlatformP.nc
tos/platforms/mulle/button/HplUserButtonC.nc
tos/platforms/mulle/button/UserButton.h
tos/platforms/mulle/button/UserButtonC.nc
tos/platforms/mulle/button/UserButtonP.nc
tos/platforms/mulle/chips/at45db/HplAt45dbP.nc
tos/platforms/mulle/chips/ds2782/DS2782InternalC.nc [new file with mode: 0644]
tos/platforms/mulle/chips/rv8564/RV8564P.nc
tos/platforms/mulle/hardware.h
tos/platforms/mulle/softwarei2c/SoftI2CBusP.nc
tos/platforms/mulle/softwarespi/SoftSpiBusP.nc
tos/platforms/mulle/timers/BusyWaitMicroC.nc

index 605162c91dc62ebd26a29a8fa1b78a5ae4a407e3..c70a791f7d7f1a91a64a80dd665d2f52c89f30cd 100644 (file)
@@ -48,6 +48,9 @@
 #ifdef _H_atmega128hardware_H
   #include "avr_stdio.h"
 #endif
+#ifdef __M16C62PHARDWARE_H__ 
+#include "m16c62p_printf.h"
+#endif
 #include "message.h"
 int printfflush();
 
index 0ecae8e16276c7f1b06efa3ba0bcd87ab09266bc..f8aba77e23af1f58e854e6b89e5fdb90f4145632 100755 (executable)
@@ -12,7 +12,7 @@ push( @includes, qw(
   %T/platforms/mulle/chips/at45db
   %T/platforms/mulle/chips/m16c62p
   %T/platforms/mulle/chips/mma7261qt
-  %T/platforms/mulle/chips/ds2745
+  %T/platforms/mulle/chips/ds2782
   %T/platforms/mulle/system
   %T/platforms/mulle/timers
   %T/platforms/mulle/timers/stop
@@ -26,7 +26,7 @@ push( @includes, qw(
   %T/chips/m16c62p/uart
   %T/chips/m16c62p/printf
   %T/chips/mma7261qt
-  %T/chips/ds2745
+  %T/chips/ds2782
   %T/lib/power
   %T/lib/timer
   %T/lib/serial
index 7811316f0cb242dbc13a2441e7629954e7cb95d3..c236b9ad3ae579bd0f550bc66ff9b4f1680bce67 100755 (executable)
@@ -62,9 +62,13 @@ implementation
   PlatformP.M16c62pControl -> M16c62pControlC;
 
   PlatformP.StopModeControl -> StopModeControlC;
+
 #ifdef ENABLE_STOP_MODE
-  components RV8564C;
+  components RV8564C, DS2782InternalC, MainC;
+  PlatformP.Boot -> MainC;
   PlatformP.RTC -> RV8564C;
+  PlatformP.HplDS2782 -> DS2782InternalC;
+  PlatformP.DS2782Control -> DS2782InternalC;
 #endif
 }
 
index 733d112f452dfd66688a9972f2f37b5e11e00f08..47221400d718c071a052a58f702eb5ea2fb69163 100755 (executable)
@@ -51,6 +51,9 @@ module PlatformP
   uses interface StopModeControl;
 #ifdef ENABLE_STOP_MODE
   uses interface RV8564 as RTC;
+  uses interface HplDS2782;
+  uses interface StdControl as DS2782Control;
+  uses interface Boot;
 #endif
 }
 
@@ -59,17 +62,11 @@ implementation
   command error_t Init.init()
   {
     error_t ok = SUCCESS;
-    
+
     ok = call M16c62pControl.init();
-#ifdef ENABLE_STOP_MODE
-    call StopModeControl.allowStopMode(true);
-    // Activate the RTC and set it to output 1024 tics on the CLKOUT pin.
-    call RTC.on();
-    call RTC.enableCLKOUT();
-    call RTC.writeRegister(RV8564_CLKF, 0x81);
-#else
+
     call StopModeControl.allowStopMode(false);
-#endif
+
     // Init the M16c/62p to run at 10MHz.
     ok = ecombine (ok, call M16c62pControl.defaultSystemClock(MCU_SPEED_10MHz));
 
@@ -78,9 +75,37 @@ implementation
 
     return SUCCESS;
   }
+
+
 #ifdef ENABLE_STOP_MODE
+  task void stopDS2782()
+  {
+    call DS2782Control.stop();
+  }
+  // The Boot event is needed so we can be sure that all underlying components 
+  // have been initialized, for example the I2C resource.
+  event void Boot.booted()
+  {
+    call StopModeControl.allowStopMode(true);
+    // Activate the RTC and set it to output 1024 tics on the CLKOUT pin
+    call DS2782Control.start();
+    call HplDS2782.allowSleep(true);
+    call RTC.on();
+    call RTC.enableCLKOUT();
+    call RTC.writeRegister(RV8564_CLKF, 0x81);
+  }
+
   async event void RTC.fired() {}
   async event void RTC.readRegisterDone(uint8_t val, uint8_t reg) {}
   async event void RTC.writeRegisterDone(uint8_t reg) {}
+
+  async event void HplDS2782.setConfigDone(error_t error) {return; }
+  async event void HplDS2782.allowSleepDone( error_t error ) { post stopDS2782(); }
+  async event void HplDS2782.measureTemperatureDone( error_t error, uint16_t val ){ return; }
+  async event void HplDS2782.measureVoltageDone( error_t error, uint16_t val ){ return; }
+  async event void HplDS2782.measureCurrentDone( error_t error, uint16_t val ){ return; }
+  async event void HplDS2782.measureAccCurrentDone( error_t error, uint16_t val ){ return; }
+  async event void HplDS2782.setOffsetBiasDone( error_t error ){ return; }
+  async event void HplDS2782.setAccOffsetBiasDone(error_t error){ return; }
 #endif
 }
index af9d84ef0c6c492abe1f1aa4958c19e16eb107fc..568cd636166ffdea28eba72040028877f5fb559f 100644 (file)
@@ -1,3 +1,39 @@
+/*
+ * Copyright (c) 2009 Communication Group and Eislab at
+ * Lulea University of Technology
+ *
+ * Contact: Laurynas Riliskis, LTU
+ * Mail: laurynas.riliskis@ltu.se
+ * 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 Communication Group at Lulea University of Technology
+ *   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 STANFORD
+ * UNIVERSITY 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.
+ */
+
 /**
  * Copyright (c) 2007 Arch Rock Corporation
  * All rights reserved.
index 636e25ee0767fe12b622bf63e47403cf34a82c64..aef5eccb0cb0c2df71f131ac21b9e4cda5f4286f 100644 (file)
@@ -1,3 +1,39 @@
+/*
+ * Copyright (c) 2009 Communication Group and Eislab at
+ * Lulea University of Technology
+ *
+ * Contact: Laurynas Riliskis, LTU
+ * Mail: laurynas.riliskis@ltu.se
+ * 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 Communication Group at Lulea University of Technology
+ *   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 STANFORD
+ * UNIVERSITY 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.
+ */
+
 /**
  * Copyright (c) 2007 Arch Rock Corporation
  * All rights reserved.
  * 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 Gilman Tolle <gtolle@archrock.com>
  */
 
 /**
- * Implementation of the user button for the telosb platform
+ * Implementation of the user button for the Mulle platform
  *
- * @author Gilman Tolle <gtolle@archrock.com>
- * @version $Revision$
+ * @author Henrik Makitaavola <henrik.makitaavola@gmail.com>
  */
 
-// TODO(henrik) Test and fix this code!
-
-#ifndef USERBUTTON_H
-#define USERBUTTON_H
+#ifndef __USERBUTTON_H__
+#define __USERBUTTON_H__
 
 typedef enum { BUTTON_RELEASED = 0, BUTTON_PRESSED = 1 } button_state_t;
 
index 961d4aa8f7a3ff6b0d9c677130c1ae380c2a695a..8a06909a5cf7452735eed0e0365c4cbac3f4f7c0 100644 (file)
@@ -1,3 +1,39 @@
+/*
+ * Copyright (c) 2009 Communication Group and Eislab at
+ * Lulea University of Technology
+ *
+ * Contact: Laurynas Riliskis, LTU
+ * Mail: laurynas.riliskis@ltu.se
+ * 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 Communication Group at Lulea University of Technology
+ *   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 STANFORD
+ * UNIVERSITY 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.
+ */
+
 /**
  * Copyright (c) 2007 Arch Rock Corporation
  * All rights reserved.
  * 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 Gilman Tolle <gtolle@archrock.com>
  */
 
 /**
- * Implementation of the user button for the telosb platform. Get
+ * Implementation of the user button for the Mulle 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
@@ -38,8 +76,7 @@
  * enabling or disabling notifications that the button has changed
  * state.
  *
- * @author Gilman Tolle <gtolle@archrock.com>
- * @version $Revision$
+ * @author Henrik Makitaavola <henrik.makitaavola@gmail.com>
  */
 
 #include <UserButton.h>
index 4c3c5e133378fc13be049ad04d941469533b9f2b..042f3becfdf1751452de72622cfd4cde2b7ffa52 100644 (file)
@@ -1,3 +1,72 @@
+/*
+ * Copyright (c) 2009 Communication Group and Eislab at
+ * Lulea University of Technology
+ *
+ * Contact: Laurynas Riliskis, LTU
+ * Mail: laurynas.riliskis@ltu.se
+ * 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 Communication Group at Lulea University of Technology
+ *   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 STANFORD
+ * UNIVERSITY 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.
+ */
+
+/**
+ * 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
+ *
+ * @author Gilman Tolle <gtolle@archrock.com>
+ */
+
 /**
  * Implementation of the user button for the Mulle platform extension board.
  *
 module UserButtonP {
   provides interface Get<button_state_t>;
   provides interface Notify<button_state_t>;
-  provides interface Init;
   
   uses interface GeneralIO;
   uses interface GpioInterrupt;
 }
 implementation {
-  
-  command error_t Init.init()
+
+  task void notify()
   {
-    call GeneralIO.makeInput();
-    call GeneralIO.clr();
+    signal Notify.notify(BUTTON_PRESSED);
   }
-  
+       
   command button_state_t Get.get()
   { 
     if ( call GeneralIO.get() )
@@ -36,16 +103,21 @@ implementation {
 
   command error_t Notify.enable()
   {
+    call GeneralIO.clr();
+    call GeneralIO.makeInput();
     return call GpioInterrupt.enableRisingEdge();
   }
 
   command error_t Notify.disable()
   {
-    return call GpioInterrupt.disable();
+    call GpioInterrupt.disable();
+    call GeneralIO.makeOutput();
+    call GeneralIO.clr();
+    return SUCCESS;
   }
 
-  async event void GIRQ.fired()
+  async event void GpioInterrupt.fired()
   {
-      signal Notify.notify( BUTTON_PRESSED );
+    post notify();
   }
 }
index 021e16674eecdc8d57bc63cdcc017b97c10e0f9f..fa206370cec243aa4b18eb16876e9474195c9b7c 100644 (file)
@@ -69,7 +69,6 @@
  *
  * @author Henrik Makitaavola <henrik.makitaavola@gmail.com>
  */
-
 module HplAt45dbP
 {
   provides
@@ -89,11 +88,15 @@ module HplAt45dbP
 }
 implementation
 {
+  // TODO(Henrik) Move init code to a SplitControl interface and
+  //              change the busy wait into a TimerMilli.startOneShot.
   command error_t Init.init() {
     call Select.makeOutput();
     call Select.set();
     call VCC.makeOutput();
     call VCC.clr();
+       // The device needs 20ms before is accepts a write.
+       call BusyWait.wait(20000);
     return SUCCESS;
   }
 
diff --git a/tos/platforms/mulle/chips/ds2782/DS2782InternalC.nc b/tos/platforms/mulle/chips/ds2782/DS2782InternalC.nc
new file mode 100644 (file)
index 0000000..d957cf8
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2009 Communication Group and Eislab at
+ * Lulea University of Technology
+ *
+ * Contact: Laurynas Riliskis, LTU
+ * Mail: laurynas.riliskis@ltu.se
+ * 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 Communication Group at Lulea University of Technology
+ *   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 STANFORD
+ * UNIVERSITY 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.
+ */
+
+/**
+ * The DS2782 wiring on the Mulle.
+ * 
+ * @author Henrik Makitaavola <henrik.makitaavola@gmail.com>
+ */
+configuration DS2782InternalC {
+  provides interface StdControl;
+  provides interface HplDS2782;
+}
+
+implementation {
+  components new SoftI2CBatteryMonitorRTCC() as I2C;
+  components new HplDS2782LogicP(0x68) as Logic;
+  
+  Logic.I2CPacket -> I2C;
+  Logic.I2CResource -> I2C;
+  HplDS2782 = Logic;
+
+  StdControl = Logic;
+
+}
index 9dcf0c2bbc47ccbb8f1778d06eab442815af9fd8..84dab98e7e5fd17e884e67ee868ba73756ce4ecd 100755 (executable)
@@ -136,8 +136,8 @@ implementation
       return FAIL;
     }
     state = WRITING;
-    write_buffer[0] = reg;
-    write_buffer[1] = value;
+    atomic write_buffer[0] = reg;
+    atomic write_buffer[1] = value;
     call I2CResource.request();
     return SUCCESS;
   }
index d478bdac3bb232e8796f04731fe1c80fa9d28712..ff2ed9ef32db21b4b49b2e65937241698f68bf2e 100755 (executable)
 #define MAIN_CRYSTAL_SPEED 10 /*MHz*/
 #define PLL_MULTIPLIER M16C62P_PLL_2
 
+#ifndef PLL_ON
+#define RF230_SLOW_SPI
+#endif
+
 #include "m16c62phardware.h" // Header file for the MCU
 
 #endif  // __HARDWARE_H__
index db5543b300ef81765d9b1f4395c0f23f3d8349f1..ad333bcf5d1e53316ba46417dd0788a5227d63a0 100755 (executable)
@@ -98,9 +98,9 @@ implementation
   async command void I2C.off()
   {
     // TODO(henrik): Exactly what should be set if I2C bus should be turned off?
-    call I2CData.makeInput();
-    call I2CClk.makeInput();
-    call I2CCtrl.makeInput();
+    call I2CData.makeOutput();
+    call I2CClk.makeOutput();
+    call I2CCtrl.makeOutput();
     call I2CCtrl.clr();
     call I2CClk.clr();
     call I2CData.clr();
index 0c61ed845abca39262549dfb471f237344746738..016fb978d01d0e2b09fa7f7e75a5da2831f3304d 100755 (executable)
@@ -59,9 +59,9 @@ implementation
 
     async command void Spi.off()
     {
-        call SCLK.makeInput();
-        call MISO.makeInput();
-        call MOSI.makeInput();
+        call SCLK.makeOutput();
+        call MISO.makeOutput();
+        call MOSI.makeOutput();
         call SCLK.clr();
         call MISO.clr();
         call MOSI.clr();
index 8dedf6c2b0092106b919eda109c7d9d9e4e38f5d..82aae0a8dec61fc759cab58d664c54ee0f917ed7 100755 (executable)
  *
  * @author Henrik Makitaavola <henrik.makitaavola@gmail.com>
  */
-configuration BusyWaitMicroC
+module BusyWaitMicroC
 {
   provides interface BusyWait<TMicro, uint16_t>;
 }
 implementation
 {
-  components CounterMicro16C,
-      new BusyWaitCounterC(TMicro, uint16_t);
-
-  BusyWait = BusyWaitCounterC;
-  BusyWaitCounterC.Counter -> CounterMicro16C;
+  // TODO(henrik) This will now only work on 10Mhz speed, easy to
+  //              add a signal from the control module of the mcu
+  //              to signal the change of speed and the wait function
+  //              can adjust to it.
+  inline async command void BusyWait.wait(uint16_t dt)
+  {
+    atomic {
+      asm volatile (
+          // The call and return of the Busywait takes about 1us
+          "sub.w #1,%[t]\n\t"
+          "1:\n\t"
+          "nop\n\t"
+          "add.w #1,%[t]\n\t"
+          "sub.w #1,%[t]\n\t"
+          "sub.w #1,%[t]\n\t"
+          "jgtu 1b"
+          :
+          : [t] "r" (dt)
+          );
+    }
+  }
 }