From 5510f99b9985de5f926a53341a7b03f7d0639b37 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sat, 10 Nov 2012 08:16:29 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@4806 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- boards/NONSTANDARD_MSP430_F5437/board.c | 93 ++++++++++++++++++++++++++ boards/NONSTANDARD_MSP430_F5437/board.h | 108 +++++++++++++++++++++++++++++++ boards/NONSTANDARD_MSP430_F5437/board.mk | 5 ++ 3 files changed, 206 insertions(+) create mode 100644 boards/NONSTANDARD_MSP430_F5437/board.c create mode 100644 boards/NONSTANDARD_MSP430_F5437/board.h create mode 100644 boards/NONSTANDARD_MSP430_F5437/board.mk diff --git a/boards/NONSTANDARD_MSP430_F5437/board.c b/boards/NONSTANDARD_MSP430_F5437/board.c new file mode 100644 index 000000000..534739e04 --- /dev/null +++ b/boards/NONSTANDARD_MSP430_F5437/board.c @@ -0,0 +1,93 @@ +/* + ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010, + 2011,2012 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "ch.h" +#include "hal.h" + +/** + * @brief PAL setup. + * @details Digital I/O ports static configuration as defined in @p board.h. + * This variable is used by the HAL when initializing the PAL driver. + */ +#if HAL_USE_PAL || defined(__DOXYGEN__) +const PALConfig pal_default_config = +{ +#if defined(__MSP430_HAS_PORTA_R__) || defined(__MSP430_HAS_PORT1_R__) + {VAL_P1OUT, VAL_P1DIR}, +#endif +#if defined(__MSP430_HAS_PORTA_R__) || defined(__MSP430_HAS_PORT2_R__) + {VAL_P2OUT, VAL_P2DIR}, +#endif +#if defined(__MSP430_HAS_PORTB_R__) || defined(__MSP430_HAS_PORT3_R__) + {VAL_P3OUT, VAL_P3DIR}, +#endif +#if defined(__MSP430_HAS_PORTB_R__) || defined(__MSP430_HAS_PORT4_R__) + {VAL_P4OUT, VAL_P4DIR}, +#endif +#if defined(__MSP430_HAS_PORTC_R__) || defined(__MSP430_HAS_PORT5_R__) + {VAL_P5OUT, VAL_P5DIR}, +#endif +#if defined(__MSP430_HAS_PORTC_R__) || defined(__MSP430_HAS_PORT6_R__) + {VAL_P6OUT, VAL_P6DIR}, +#endif +#if defined(__MSP430_HAS_PORTD_R__) || defined(__MSP430_HAS_PORT7_R__) + {VAL_P7OUT, VAL_P7DIR}, +#endif +#if defined(__MSP430_HAS_PORTD_R__) || defined(__MSP430_HAS_PORT8_R__) + {VAL_P8OUT, VAL_P8DIR}, +#endif +#if defined(__MSP430_HAS_PORTE_R__) || defined(__MSP430_HAS_PORT9_R__) + {VAL_P9OUT, VAL_P9DIR}, +#endif +#if defined(__MSP430_HAS_PORTE_R__) || defined(__MSP430_HAS_PORT10_R__) + {VAL_P10OUT, VAL_P10DIR}, +#endif +#if defined(__MSP430_HAS_PORTF_R__) || defined(__MSP430_HAS_PORT11_R__) + {VAL_P11OUT, VAL_P11DIR}, +#endif +#if defined(__MSP430_HAS_PORTJ_R__) + {VAL_P12OUT, VAL_P12DIR}, +#endif +}; +#endif + +CH_IRQ_HANDLER(TIMER0_A0) { + + CH_IRQ_PROLOGUE(); + + chSysLockFromIsr(); + chSysTimerHandlerI(); + chSysUnlockFromIsr(); + + CH_IRQ_EPILOGUE(); +} + +/* + * Board-specific initialization code. + */ +void boardInit(void) { + /* + * Timer 0 setup, uses SMCLK as source. + */ + TA0CCTL0 = CCIE; /* Interrupt on compare enabled. */ + TA0CTL = TACLR; /* Clean start. */ + TA0CCR0 = DCOCLK / 4 / CH_FREQUENCY - 1; /* Counter upper limit. */ + TA0CTL = TASSEL_2 | ID_2 | MC_1; /* SMCLK, clock divider 4, contionous mode. */ +} diff --git a/boards/NONSTANDARD_MSP430_F5437/board.h b/boards/NONSTANDARD_MSP430_F5437/board.h new file mode 100644 index 000000000..003a90678 --- /dev/null +++ b/boards/NONSTANDARD_MSP430_F5437/board.h @@ -0,0 +1,108 @@ +/* + ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010, + 2011,2012 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef _BOARD_H_ +#define _BOARD_H_ + +/* + * Setup for the NONSTANDARD MSP430-F5437 proto board. + */ + +/* + * Board identifier. + */ +#define BOARD_NONSTANDARD_MSP430_F5437 +#define BOARD_NAME "NONSTANDARD MSP430-F5437" + +/* + * Clock constants. + */ +#define LFXT1CLK (32768) // Hz +#define DCOCLK (20000000ul) // Hz + +/* + * Pin definitions for the NONSTANDARD MSP430-F5437 board. + */ +#define P3_O_TXD0 (4) +#define P3_O_TXD0_MASK (1 << P3_O_TXD0) +#define P3_I_RXD0 (5) +#define P3_I_RXD0_MASK (1 << P3_I_RXD0) + +#define P5_O_TXD1 (6) +#define P5_O_TXD1_MASK (1 << P5_O_TXD1) +#define P5_I_RXD1 (7) +#define P5_I_RXD1_MASK (1 << P5_I_RXD1) + +#define P6_O_GREEN_LED (1) +#define P6_O_GREEN_LED_MASK (1 << P6_O_GREEN_LED) + +#define P6_O_RED_LED (2) +#define P6_O_RED_LED_MASK (1 << P6_O_RED_LED) + +/* + * Initial I/O ports settings. + */ +#define VAL_P1OUT 0x00 +#define VAL_P1DIR 0xFF + +#define VAL_P2OUT 0x00 +#define VAL_P2DIR 0xFF + +#define VAL_P3OUT P3_O_TXD0_MASK +#define VAL_P3DIR ~P3_I_RXD0_MASK + +#define VAL_P4OUT 0x00 +#define VAL_P4DIR 0xFF + +#define VAL_P5OUT P5_O_TXD1_MASK +#define VAL_P5DIR ~P5_I_RXD1_MASK + +#define VAL_P6OUT ~P6_O_GREEN_LED_MASK +#define VAL_P6DIR (P6_O_GREEN_LED_MASK | P6_O_RED_LED_MASK) + +#define VAL_P7OUT 0x00 +#define VAL_P7DIR 0xFF + +#define VAL_P8OUT 0x00 +#define VAL_P8DIR 0xFF + +#define VAL_P9OUT 0x00 +#define VAL_P9DIR 0xFF + +#define VAL_P10OUT 0x00 +#define VAL_P10DIR 0xFF + +#define VAL_P11OUT 0x00 +#define VAL_P11DIR 0xFF + +#define VAL_P12OUT 0x00 +#define VAL_P12DIR 0xFF + +#if !defined(_FROM_ASM_) +#ifdef __cplusplus +extern "C" { +#endif + void boardInit(void); +#ifdef __cplusplus +} +#endif +#endif /* _FROM_ASM_ */ + +#endif /* _BOARD_H_ */ diff --git a/boards/NONSTANDARD_MSP430_F5437/board.mk b/boards/NONSTANDARD_MSP430_F5437/board.mk new file mode 100644 index 000000000..864073f4d --- /dev/null +++ b/boards/NONSTANDARD_MSP430_F5437/board.mk @@ -0,0 +1,5 @@ +# List of all the board related files. +BOARDSRC = ${CHIBIOS}/boards/NONSTANDARD_MSP430_F5437/board.c + +# Required include directories +BOARDINC = ${CHIBIOS}/boards/NONSTANDARD_MSP430_F5437 -- cgit v1.2.3