From: r-studio Date: Fri, 9 Oct 2009 06:04:57 +0000 (+0000) Subject: uart, changes + button implementation X-Git-Tag: rc_6_tinyos_2_1_1~204 X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=commitdiff_plain;h=c1b80c969da4a2a77e66e1b1b92b091e774aea5f;p=tinyos-2.x.git uart, changes + button implementation --- diff --git a/tos/chips/m16c62p/uart/M16c62pUart.h b/tos/chips/m16c62p/uart/M16c62pUart.h new file mode 100644 index 00000000..7edb9413 --- /dev/null +++ b/tos/chips/m16c62p/uart/M16c62pUart.h @@ -0,0 +1,71 @@ +/* + * 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. + */ + +/** + * M16c62p UART typedefs. + * + * @author Henrik Makitaavola + */ + +#ifndef __M16C62P_UART_H__ +#define __M16C62P_UART_H__ + + +typedef enum { + TOS_UART_1200 = 0, + TOS_UART_57600 = 7, +} uart_speed_t; + +typedef enum { + TOS_UART_OFF, + TOS_UART_RONLY, + TOS_UART_TONLY, + TOS_UART_DUPLEX +} uart_duplex_t; + +typedef enum { + TOS_UART_PARITY_NONE, + TOS_UART_PARITY_EVEN, + TOS_UART_PARITY_ODD +}uart_parity_t; + +typedef enum { + TOS_UART_STOP_BITS_1, + TOS_UART_STOP_BITS_2 +} uart_stop_bits_t; + + +#endif // __M16C62P_UART_H__ \ No newline at end of file diff --git a/tos/platforms/mulle/button/HplUserButtonC.nc b/tos/platforms/mulle/button/HplUserButtonC.nc new file mode 100644 index 00000000..af9d84ef --- /dev/null +++ b/tos/platforms/mulle/button/HplUserButtonC.nc @@ -0,0 +1,50 @@ +/** + * 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 Mulle platform extension board. + * + * @author Henrik Makitaavola + */ + +configuration HplUserButtonC { + provides interface GeneralIO; + provides interface GpioInterrupt; +} +implementation { + components HplM16c62pInterruptC as Irqs, + HplM16c62pGeneralIOC as IOs, + new M16c62pInterruptC() as Irq; + + Irq -> Irqs.Int4; + GpioInterrupt = Irq; + GeneralIO = IOs.PortP16; +} diff --git a/tos/platforms/mulle/button/UserButton.h b/tos/platforms/mulle/button/UserButton.h new file mode 100644 index 00000000..636e25ee --- /dev/null +++ b/tos/platforms/mulle/button/UserButton.h @@ -0,0 +1,46 @@ +/** + * 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 + * + * @author Gilman Tolle + * @version $Revision$ + */ + +// TODO(henrik) Test and fix this code! + +#ifndef USERBUTTON_H +#define USERBUTTON_H + +typedef enum { BUTTON_RELEASED = 0, BUTTON_PRESSED = 1 } button_state_t; + +#endif diff --git a/tos/platforms/mulle/button/UserButtonC.nc b/tos/platforms/mulle/button/UserButtonC.nc new file mode 100644 index 00000000..961d4aa8 --- /dev/null +++ b/tos/platforms/mulle/button/UserButtonC.nc @@ -0,0 +1,60 @@ +/** + * 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$ + */ + +#include + +configuration UserButtonC { + provides interface Get; + provides interface Notify; +} +implementation { + components HplUserButtonC; + + components UserButtonP; + Get = UserButtonP; + Notify = UserButtonP; + + UserButtonP.GeneralIO -> HplUserButtonC.GeneralIO; + UserButtonP.GpioInterrupt -> HplUserButtonC.GpioInterrupt; +} diff --git a/tos/platforms/mulle/button/UserButtonP.nc b/tos/platforms/mulle/button/UserButtonP.nc new file mode 100644 index 00000000..4c3c5e13 --- /dev/null +++ b/tos/platforms/mulle/button/UserButtonP.nc @@ -0,0 +1,51 @@ +/** + * Implementation of the user button for the Mulle platform extension board. + * + * @author Henrik Makitaavola + */ + +#include + +module UserButtonP { + provides interface Get; + provides interface Notify; + provides interface Init; + + uses interface GeneralIO; + uses interface GpioInterrupt; +} +implementation { + + command error_t Init.init() + { + call GeneralIO.makeInput(); + call GeneralIO.clr(); + } + + command button_state_t Get.get() + { + if ( call GeneralIO.get() ) + { + return BUTTON_PRESSED; + } + else + { + return BUTTON_RELEASED; + } + } + + command error_t Notify.enable() + { + return call GpioInterrupt.enableRisingEdge(); + } + + command error_t Notify.disable() + { + return call GpioInterrupt.disable(); + } + + async event void GIRQ.fired() + { + signal Notify.notify( BUTTON_PRESSED ); + } +} diff --git a/tos/platforms/mulle/chips/m16c62p/M16c62pAdcPlatformC.nc b/tos/platforms/mulle/chips/m16c62p/M16c62pAdcPlatformC.nc new file mode 100644 index 00000000..a22f4859 --- /dev/null +++ b/tos/platforms/mulle/chips/m16c62p/M16c62pAdcPlatformC.nc @@ -0,0 +1,28 @@ +module M16c62pAdcPlatformC +{ + provides interface M16c62pAdcPlatform; +} +implementation +{ + async command void M16c62pAdcPlatform.adcOn() + { + // turn on AVcc + PD7.BIT.PD7_6 = 1; + P7.BIT.P7_6 = 1; + + // turn on AVref + PD3.BIT.PD3_1 = 1; + P3.BIT.P3_1 = 1; + } + + async command void M16c62pAdcPlatform.adcOff() + { +// // turn off AVcc +// PD7.BIT.PD7_6 = 0; +// P7.BIT.P7_6 = 0; +// +// // turn off AVref +// PD3.BIT.PD3_1 = 0; +// P3.BIT.P3_1 = 0; + } +} \ No newline at end of file