123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334 |
- /**************************************************************************************************
- Filename: OnBoard.h
- Revised: $Date: 2012-03-29 12:09:02 -0700 (Thu, 29 Mar 2012) $
- Revision: $Revision: 29943 $
- Description: Defines stuff for EVALuation boards
- Notes: This file targets the Chipcon CC2530/31
- Copyright 2005-2010 Texas Instruments Incorporated. All rights reserved.
- IMPORTANT: Your use of this Software is limited to those specific rights
- granted under the terms of a software license agreement between the user
- who downloaded the software, his/her employer (which must be your employer)
- and Texas Instruments Incorporated (the "License"). You may not use this
- Software unless you agree to abide by the terms of the License. The License
- limits your use, and you acknowledge, that the Software may not be modified,
- copied or distributed unless embedded on a Texas Instruments microcontroller
- or used solely and exclusively in conjunction with a Texas Instruments radio
- frequency transceiver, which is integrated into your product. Other than for
- the foregoing purpose, you may not use, reproduce, copy, prepare derivative
- works of, modify, distribute, perform, display or sell this Software and/or
- its documentation for any purpose.
- YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
- PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
- NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
- TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
- NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
- LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
- INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
- OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
- OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
- (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
- Should you have any questions regarding your right to use this Software,
- contact Texas Instruments Incorporated at www.TI.com.
- **************************************************************************************************/
- #ifndef ONBOARD_H
- #define ONBOARD_H
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- /*********************************************************************
- * INCLUDES
- */
- #include "hal_mcu.h"
- #include "hal_uart.h"
- #include "hal_sleep.h"
- #include "osal.h"
- /*********************************************************************
- * GLOBAL VARIABLES
- */
- // 64-bit Extended Address of this device
- extern uint8 aExtendedAddress[8];
- /*********************************************************************
- * CONSTANTS
- */
- // Timer clock and power-saving definitions
- #define TIMER_DECR_TIME 1 // 1ms - has to be matched with TC_OCC
- /* OSAL timer defines */
- #define TICK_TIME 1000 // Timer per tick - in micro-sec
- /*
- Timer4 interrupts @ 1.0 msecs using 1/128 pre-scaler
- TICK_COUNT = (CPUMHZ / 128) / 1000
- */
- #define TICK_COUNT 1 // 32 Mhz Output Compare Count
- /* CC2430 DEFINITIONS */
- // MEMCTR bit definitions
- #define ALWAYS1 0x01 // Reserved: always=1
- #define CACHDIS 0x02 // Flash cache: disable=1
- #define FMAP0 0x10 // Flash bank map, bit0
- #define FMAP1 0x20 // Flash bank map, bit1
- #define FMAP 0x30 // Flash bank map, mask
- #define MUNIF 0x40 // Memory mapping: unified=1
- // PCON bit definitions
- #define PMODESET 0x01 // Power mode control: 1=set PMx
- // Reset bit definitions
- #define LRESET 0x18 // Last reset bit mask
- #define RESETPO 0x00 // Power-On reset
- #define RESETEX 0x08 // External reset
- #define RESETWD 0x10 // WatchDog reset
- /* GPIO PORT DEFINITIONS */
- // GPIO bit definitions
- #define GPIO_0 0x01 // Px_0: GPIO=0, PIO=1
- #define GPIO_1 0x02 // Px_1: GPIO=0, PIO=1
- #define GPIO_2 0x04 // Px_2: GPIO=0, PIO=1
- #define GPIO_3 0x08 // Px_3: GPIO=0, PIO=1
- #define GPIO_4 0x10 // Px_4: GPIO=0, PIO=1
- #define GPIO_5 0x20 // Px_5: GPIO=0, PIO=1
- #define GPIO_6 0x40 // Px_6: GPIO=0, PIO=1
- #define GPIO_7 0x80 // Px_7: GPIO=0, PIO=1
- /* WATCHDOG TIMER DEFINITIONS */
- // WDCTL bit definitions
- #define WDINT0 0x01 // Interval, bit0
- #define WDINT1 0x02 // Interval, bit1
- #define WDINT 0x03 // Interval, mask
- #define WDMODE 0x04 // Mode: watchdog=0, timer=1
- #define WDEN 0x08 // Timer: disabled=0, enabled=1
- #define WDCLR0 0x10 // Clear timer, bit0
- #define WDCLR1 0x20 // Clear timer, bit1
- #define WDCLR2 0x40 // Clear timer, bit2
- #define WDCLR3 0x80 // Clear timer, bit3
- #define WDCLR 0xF0 // Clear timer, mask
- // WD timer intervals
- #define WDTISH 0x03 // Short: clk * 64
- #define WDTIMD 0x02 // Medium: clk * 512
- #define WDTILG 0x01 // Long: clk * 8192
- #define WDTIMX 0x00 // Maximum: clk * 32768
- // WD clear timer patterns
- #define WDCLP1 0xA0 // Clear pattern 1
- #define WDCLP2 0x50 // Clear pattern 2
- /*********************************************************************
- * MACROS
- */
- // These Key definitions are unique to this development system.
- // They are used to bypass functions when starting up the device.
- #define SW_BYPASS_NV HAL_KEY_SW_5 // Bypass Network layer NV restore
- #define SW_BYPASS_START HAL_KEY_SW_1 // Bypass Network initialization
- // LCD Support Defintions
- #ifdef LCD_SUPPORTED
- #if !defined DEBUG
- #define DEBUG 0
- #endif
- #if LCD_SUPPORTED==DEBUG
- #define SERIAL_DEBUG_SUPPORTED // Serial-debug
- #endif
- #else // No LCD support
- #undef SERIAL_DEBUG_SUPPORTED // No serial-debug
- #endif
- /* Serial Port Definitions */
- #if defined (ZAPP_P1)
- #define ZAPP_PORT HAL_UART_PORT_0
- #elif defined (ZAPP_P2)
- #define ZAPP_PORT HAL_UART_PORT_1
- #else
- #undef ZAPP_PORT
- #endif
- #if defined (ZTOOL_P1)
- #define ZTOOL_PORT HAL_UART_PORT_0
- #elif defined (ZTOOL_P2)
- #define ZTOOL_PORT HAL_UART_PORT_1
- #else
- #undef ZTOOL_PORT
- #endif
- #define MT_UART_TX_BUFF_MAX 128
- #define MT_UART_RX_BUFF_MAX 128
- #define MT_UART_THRESHOLD (MT_UART_RX_BUFF_MAX / 2)
- #define MT_UART_IDLE_TIMEOUT 6
- // Restart system from absolute beginning
- // Disables interrupts, forces WatchDog reset
- #define SystemReset() \
- { \
- HAL_DISABLE_INTERRUPTS(); \
- HAL_SYSTEM_RESET(); \
- }
- #define SystemResetSoft() Onboard_soft_reset()
- /* Reset reason for reset indication */
- #define ResetReason() ((SLEEPSTA >> 3) & 0x03)
- /* WATCHDOG TIMER DEFINITIONS */
- #define WatchDogEnable(wdti) \
- { \
- WDCTL = WDCLP1 | WDEN | (wdti & WDINT); \
- WDCTL = WDCLP2 | WDEN | (wdti & WDINT); \
- }
- // Wait for specified microseconds
- #define MicroWait(t) Onboard_wait(t)
- #define OSAL_SET_CPU_INTO_SLEEP(timeout) halSleep(timeout); /* Called from OSAL_PwrMgr */
- #ifdef __IAR_SYSTEMS_ICC__
- // Internal (MCU) Stack addresses
- #define CSTACK_BEG ((uint8 const *)(_Pragma("segment=\"XSTACK\"") __segment_begin("XSTACK")))
- #define CSTACK_END ((uint8 const *)(_Pragma("segment=\"XSTACK\"") __segment_end("XSTACK"))-1)
- // Stack Initialization Value
- #define STACK_INIT_VALUE 0xCD
- #else
- #error Check compiler compatibility.
- #endif
- /* The following Heap sizes are setup for typical TI sample applications,
- * and should be adjusted to your systems requirements.
- */
- #if !defined INT_HEAP_LEN
- #if defined RTR_NWK
- #define INT_HEAP_LEN 3072
- #else
- #define INT_HEAP_LEN 2048
- #endif
- #endif
- #define MAXMEMHEAP INT_HEAP_LEN
- #define KEY_CHANGE_SHIFT_IDX 1
- #define KEY_CHANGE_KEYS_IDX 2
- // Initialization levels
- #define OB_COLD 0
- #define OB_WARM 1
- #define OB_READY 2
- #ifdef LCD_SUPPORTED
- #define BUZZER_OFF 0
- #define BUZZER_ON 1
- #define BUZZER_BLIP 2
- #endif
- typedef struct
- {
- osal_event_hdr_t hdr;
- uint8 state; // shift
- uint8 keys; // keys
- } keyChange_t;
- /*********************************************************************
- * FUNCTIONS
- */
- /*
- * Initialize the Peripherals
- * level: 0=cold, 1=warm, 2=ready
- */
- extern void InitBoard( uint8 level );
- /*
- * Get elapsed timer clock counts
- */
- extern uint32 TimerElapsed( void );
- /*
- * Register for all key events
- */
- extern uint8 RegisterForKeys( uint8 task_id );
- /* Keypad Control Functions */
- /*
- * Send "Key Pressed" message to application
- */
- extern uint8 OnBoard_SendKeys( uint8 keys, uint8 shift );
- /* LCD Emulation/Control Functions */
- /*
- * Convert an interger to an ascii string
- */
- extern void _itoa( uint16 num, uint8 *buf, uint8 radix );
- extern void Dimmer( uint8 lvl );
- /* External I/O Processing Functions */
- /*
- * Turn on an external lamp
- */
- extern void BigLight_On( void );
- /*
- * Turn off an external lamp
- */
- extern void BigLight_Off( void );
- /*
- * Turn on/off an external buzzer
- * on: BUZZER_ON or BUZZER_OFF
- */
- extern void BuzzerControl( uint8 on );
- /*
- * Get setting of external dip switch
- */
- extern uint8 GetUserDipSw( void );
- /*
- * Calculate the size of used stack
- */
- extern uint16 OnBoard_stack_used( void );
- /*
- * Callback routine to handle keys
- */
- extern void OnBoard_KeyCallback ( uint8 keys, uint8 state );
- /*
- * Board specific random number generator
- */
- extern uint16 Onboard_rand( void );
- /*
- * Board specific micro-second wait
- */
- extern void Onboard_wait( uint16 timeout );
- /*
- * Board specific soft reset.
- */
- extern __near_func void Onboard_soft_reset( void );
- /*********************************************************************
- *********************************************************************/
- #ifdef __cplusplus
- }
- #endif
- #endif // ONBOARD_H
|