--- /dev/null
+interface M16c62pAdcPlatform
+{
+ async command void adcOn();
+
+ async command void adcOff();
+}
\ No newline at end of file
--- /dev/null
+/*
+ * 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.
+ */
+
+/**
+ * MMA7261QT gSelect defines.
+ *
+ * @author Henrik Makitaavola
+ */
+
+#ifndef __HPLMMA7261QT_H__
+#define __HPLMMA7261QT_H__
+
+typedef enum mm7261qt_gselect {
+ MMA7261QT_GSELECT_2_5G=0, //most sensitive
+ MMA7261QT_GSELECT_3_3G=1,
+ MMA7261QT_GSELECT_6_7G=2,
+ MMA7261QT_GSELECT_10_0G=3, //least sensitive
+} mm7261qt_gselect_t;
+
+#endif
+
+/*
+ * 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.
+ */
+
+/**
+ * MMA7261QT control interface.
+ *
+ * @author Henrik Makitaavola
+ */
+#include "HplMMA7261QT.h"
+
interface HplMMA7261QTControl
{
async command void on();
async command void off();
- async command void gSelect(uint8_t val);
-}
\ No newline at end of file
+ async command void gSelect( mm7261qt_gselect_t val);
+}
+/*
+ * 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.
+ */
+
+/**
+ * MMA7261QT control component.
+ *
+ * @author Henrik Makitaavola
+ */
+
configuration HplMMA7261QTControlC
{
provides interface HplMMA7261QTControl;
HplMMA7261QTControlP.GSelect2 -> HplMMA7261QTC.GSelect2;
HplMMA7261QTControl = HplMMA7261QTControlP;
-}
\ No newline at end of file
+}
+/*
+ * 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.
+ */
+
+/**
+ * MMA7261QT control.
+ *
+ * @author Henrik Makitaavola
+ */
+#include "HplMMA7261QT.h"
+
module HplMMA7261QTControlP
{
provides interface HplMMA7261QTControl;
async command void HplMMA7261QTControl.on()
{
call Sleep.set();
+ call GSelect1.clr();
+ call GSelect2.clr();
+
}
async command void HplMMA7261QTControl.off()
call Sleep.clr();
}
- async command void HplMMA7261QTControl.gSelect(uint8_t val)
+ async command void HplMMA7261QTControl.gSelect( mm7261qt_gselect_t val)
{
- // TODO(henrik) implement.
+ if(val & 1)
+ call GSelect1.set();
+ else
+ call GSelect1.clr();
+
+ if(val & 2)
+ call GSelect2.set();
+ else
+ call GSelect2.clr();
}
-}
\ No newline at end of file
+}
+/*
+ * 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.
+ */
+
+/**
+ * MMA7261QT reader.
+ *
+ * @author Henrik Makitaavola
+ */
+
configuration HplMMA7261QTReaderC
{
provides interface Read<uint16_t> as AccelX;
AccelX = HplMMA7261QTC.AccelX;
AccelY = HplMMA7261QTC.AccelY;
AccelZ = HplMMA7261QTC.AccelZ;
-}
\ No newline at end of file
+}
%T/platforms/mulle/chips/rv8564
%T/platforms/mulle/chips/at45db
%T/platforms/mulle/chips/m16c62p
+ %T/platforms/mulle/chips/mma7261qt
%T/platforms/mulle/debug
%T/platforms/mulle/system
%T/platforms/mulle/timers
%T/chips/m16c62p/pins
%T/chips/m16c62p/timer
%T/chips/m16c62p/uart
+ %T/chips/mma7261qt
%T/chips/ds2745
%T/lib/power
%T/lib/timer
--- /dev/null
+/*
+ * 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.
+ */
+
+/**
+ * MMA7261QT configuration.
+ *
+ * @author Henrik Makitaavola
+ */
+
+configuration HplMMA7261QTC
+{
+ provides interface Read<uint16_t> as AccelX;
+ provides interface Read<uint16_t> as AccelY;
+ provides interface Read<uint16_t> as AccelZ;
+
+ provides interface GeneralIO as Sleep;
+ provides interface GeneralIO as GSelect1;
+ provides interface GeneralIO as GSelect2;
+}
+implementation
+{
+ components new AdcReadClientC() as _AccelX,
+ new AdcReadClientC() as _AccelY,
+ new AdcReadClientC() as _AccelZ,
+ HplM16c62pGeneralIOC as IOs,
+ HplMMA7261QTP;
+
+ HplMMA7261QTP.VCC -> IOs.PortP76;
+ HplMMA7261QTP.Sleep -> IOs.PortP12;
+ HplMMA7261QTP.GSelect1 -> IOs.PortP30;
+ HplMMA7261QTP.GSelect2 -> IOs.PortP31;
+ HplMMA7261QTP.AccelXPort -> IOs.PortP105;
+ HplMMA7261QTP.AccelYPort -> IOs.PortP104;
+ HplMMA7261QTP.AccelZPort -> IOs.PortP103;
+
+ Sleep = IOs.PortP12;
+ GSelect1 = IOs.PortP30;
+ GSelect2 = IOs.PortP31;
+
+ _AccelX.M16c62pAdcConfig -> HplMMA7261QTP.AccelXConf;
+ _AccelY.M16c62pAdcConfig -> HplMMA7261QTP.AccelYConf;
+ _AccelZ.M16c62pAdcConfig -> HplMMA7261QTP.AccelZConf;
+
+ AccelX = _AccelX;
+ AccelY = _AccelY;
+ AccelZ = _AccelZ;
+
+ components RealMainP;
+ RealMainP.PlatformInit -> HplMMA7261QTP.Init;
+
+}
--- /dev/null
+/*
+ * 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.
+ */
+
+/**
+ * MMA7261QT implementation.
+ *
+ * @author Henrik Makitaavola
+ */
+
+module HplMMA7261QTP
+{
+ provides
+ {
+ interface Init;
+ interface M16c62pAdcConfig as AccelXConf;
+ interface M16c62pAdcConfig as AccelYConf;
+ interface M16c62pAdcConfig as AccelZConf;
+ }
+
+ uses
+ {
+ interface GeneralIO as VCC;
+ interface GeneralIO as Sleep;
+ interface GeneralIO as GSelect1;
+ interface GeneralIO as GSelect2;
+ interface GeneralIO as AccelXPort;
+ interface GeneralIO as AccelYPort;
+ interface GeneralIO as AccelZPort;
+ }
+}
+implementation
+{
+ command error_t Init.init()
+ {
+ call VCC.makeOutput();
+ call VCC.set();
+ call Sleep.makeOutput();
+ call Sleep.clr();
+ call GSelect1.makeOutput();
+ call GSelect1.clr();
+ call GSelect2.makeOutput();
+ call GSelect2.clr();
+ call AccelXPort.makeInput();
+ call AccelXPort.clr();
+ call AccelYPort.makeInput();
+ call AccelYPort.clr();
+ call AccelZPort.makeInput();
+ call AccelZPort.clr();
+ }
+
+ inline uint8_t prescaler() { return M16c62p_ADC_PRESCALE_4; }
+ inline uint8_t precision() { return M16c62p_ADC_PRECISION_8BIT; }
+
+ async command uint8_t AccelXConf.getChannel()
+ {
+ return M16c62p_ADC_CHL_AN5;
+ }
+
+ async command uint8_t AccelXConf.getPrecision()
+ {
+ return precision();
+ }
+
+ async command uint8_t AccelXConf.getPrescaler()
+ {
+ return prescaler();
+ }
+
+ async command uint8_t AccelYConf.getChannel()
+ {
+ return M16c62p_ADC_CHL_AN4;
+ }
+
+ async command uint8_t AccelYConf.getPrecision()
+ {
+ return precision();
+ }
+
+ async command uint8_t AccelYConf.getPrescaler()
+ {
+ return prescaler();
+ }
+
+ async command uint8_t AccelZConf.getChannel()
+ {
+ return M16c62p_ADC_CHL_AN3;
+ }
+
+ async command uint8_t AccelZConf.getPrecision()
+ {
+ return precision();
+ }
+
+ async command uint8_t AccelZConf.getPrescaler()
+ {
+ return prescaler();
+ }
+}