f51bce3fed
We currently only support building with CCS and SCons is not using. bsp/rm48x50/HALCoGen/HALCoGen.{hcg,dil} is the HALCoGen project file. You may need to regenerate the source file as you like, providing that: 1, IRQ is in Dispatch Mode and the table entry is IRQ_Handler. The channel 5 in enabled and connected to IRQ. 2, RTI driver is enabled and compare3 source is selected to counter1 and the compare3 will generate tick in the period of 10ms. This value is coresponding with RT_TICK_PER_SECOND in rtconfig.h. In CCS, you need to create a new CCS project and create link folders pointing at bsp/rm48x50, libcpu/arm/rm48x50 and src/, include/. Remember to add the include path to the Build Properties.
302 lines
7.9 KiB
C
302 lines
7.9 KiB
C
/** @file rti.h
|
|
* @brief RTI Driver Header File
|
|
* @date 23.May.2013
|
|
* @version 03.05.01
|
|
*
|
|
* This file contains:
|
|
* - Definitions
|
|
* - Types
|
|
* - Interface Prototypes
|
|
* .
|
|
* which are relevant for the RTI driver.
|
|
*/
|
|
|
|
/* (c) Texas Instruments 2009-2013, All rights reserved. */
|
|
|
|
|
|
#ifndef __RTI_H__
|
|
#define __RTI_H__
|
|
|
|
#include "reg_rti.h"
|
|
|
|
/* USER CODE BEGIN (0) */
|
|
/* USER CODE END */
|
|
|
|
|
|
/* RTI General Definitions */
|
|
|
|
/** @def rtiCOUNTER_BLOCK0
|
|
* @brief Alias name for RTI counter block 0
|
|
*
|
|
* This is an alias name for the RTI counter block 0.
|
|
*
|
|
* @note This value should be used for API argument @a counter
|
|
*/
|
|
#define rtiCOUNTER_BLOCK0 0U
|
|
|
|
/** @def rtiCOUNTER_BLOCK1
|
|
* @brief Alias name for RTI counter block 1
|
|
*
|
|
* This is an alias name for the RTI counter block 1.
|
|
*
|
|
* @note This value should be used for API argument @a counter
|
|
*/
|
|
#define rtiCOUNTER_BLOCK1 1U
|
|
|
|
/** @def rtiCOMPARE0
|
|
* @brief Alias name for RTI compare 0
|
|
*
|
|
* This is an alias name for the RTI compare 0.
|
|
*
|
|
* @note This value should be used for API argument @a compare
|
|
*/
|
|
#define rtiCOMPARE0 0U
|
|
|
|
/** @def rtiCOMPARE1
|
|
* @brief Alias name for RTI compare 1
|
|
*
|
|
* This is an alias name for the RTI compare 1.
|
|
*
|
|
* @note This value should be used for API argument @a compare
|
|
*/
|
|
#define rtiCOMPARE1 1U
|
|
|
|
/** @def rtiCOMPARE2
|
|
* @brief Alias name for RTI compare 2
|
|
*
|
|
* This is an alias name for the RTI compare 2.
|
|
*
|
|
* @note This value should be used for API argument @a compare
|
|
*/
|
|
#define rtiCOMPARE2 2U
|
|
|
|
/** @def rtiCOMPARE3
|
|
* @brief Alias name for RTI compare 3
|
|
*
|
|
* This is an alias name for the RTI compare 3.
|
|
*
|
|
* @note This value should be used for API argument @a compare
|
|
*/
|
|
#define rtiCOMPARE3 3U
|
|
|
|
/** @def rtiNOTIFICATION_COMPARE0
|
|
* @brief Alias name for RTI compare 0 notification
|
|
*
|
|
* This is an alias name for the RTI compare 0 notification.
|
|
*
|
|
* @note This value should be used for API argument @a notification
|
|
*/
|
|
#define rtiNOTIFICATION_COMPARE0 1U
|
|
|
|
/** @def rtiNOTIFICATION_COMPARE1
|
|
* @brief Alias name for RTI compare 1 notification
|
|
*
|
|
* This is an alias name for the RTI compare 1 notification.
|
|
*
|
|
* @note This value should be used for API argument @a notification
|
|
*/
|
|
#define rtiNOTIFICATION_COMPARE1 2U
|
|
|
|
/** @def rtiNOTIFICATION_COMPARE2
|
|
* @brief Alias name for RTI compare 2 notification
|
|
*
|
|
* This is an alias name for the RTI compare 2 notification.
|
|
*
|
|
* @note This value should be used for API argument @a notification
|
|
*/
|
|
#define rtiNOTIFICATION_COMPARE2 4U
|
|
|
|
/** @def rtiNOTIFICATION_COMPARE3
|
|
* @brief Alias name for RTI compare 3 notification
|
|
*
|
|
* This is an alias name for the RTI compare 3 notification.
|
|
*
|
|
* @note This value should be used for API argument @a notification
|
|
*/
|
|
#define rtiNOTIFICATION_COMPARE3 8U
|
|
|
|
/** @def rtiNOTIFICATION_TIMEBASE
|
|
* @brief Alias name for RTI timebase notification
|
|
*
|
|
* This is an alias name for the RTI timebase notification.
|
|
*
|
|
* @note This value should be used for API argument @a notification
|
|
*/
|
|
#define rtiNOTIFICATION_TIMEBASE 0x10000U
|
|
|
|
/** @def rtiNOTIFICATION_COUNTER0
|
|
* @brief Alias name for RTI counter block 0 overflow notification
|
|
*
|
|
* This is an alias name for the RTI counter block 0 overflow notification.
|
|
*
|
|
* @note This value should be used for API argument @a notification
|
|
*/
|
|
#define rtiNOTIFICATION_COUNTER0 0x20000U
|
|
|
|
/** @def rtiNOTIFICATION_COUNTER1
|
|
* @brief Alias name for RTI counter block 1 overflow notification
|
|
*
|
|
* This is an alias name for the RTI counter block 1 overflow notification.
|
|
*
|
|
* @note This value should be used for API argument @a notification
|
|
*/
|
|
#define rtiNOTIFICATION_COUNTER1 0x40000U
|
|
|
|
/* USER CODE BEGIN (1) */
|
|
/* USER CODE END */
|
|
|
|
/** @enum dwdViolationTag
|
|
* @brief DWD Violations
|
|
*/
|
|
typedef enum dwdViolationTag
|
|
{
|
|
NoTime_Violation = 0U,
|
|
Time_Window_Violation = 1U,
|
|
EndTime_Window_Violation = 2U,
|
|
StartTime_Window_Violation = 3U,
|
|
Key_Seq_Violation = 4U
|
|
}dwdViolation_t;
|
|
|
|
/* USER CODE BEGIN (2) */
|
|
/* USER CODE END */
|
|
|
|
/** @enum dwdResetStatusTag
|
|
* @brief DWD Reset status
|
|
*/
|
|
typedef enum dwdResetStatusTag
|
|
{
|
|
No_Reset_Generated = 0U,
|
|
Reset_Generated = 1U
|
|
}dwdResetStatus_t;
|
|
|
|
/* USER CODE BEGIN (3) */
|
|
/* USER CODE END */
|
|
|
|
/** @enum dwwdReactionTag
|
|
* @brief DWWD Reaction on vioaltion
|
|
*/
|
|
typedef enum dwwdReactionTag
|
|
{
|
|
Generate_Reset = 0x00000005U,
|
|
Generate_NMI = 0x0000000AU
|
|
}dwwdReaction_t;
|
|
|
|
/* USER CODE BEGIN (4) */
|
|
/* USER CODE END */
|
|
|
|
/** @enum dwwdWindowSizeTag
|
|
* @brief DWWD Window size
|
|
*/
|
|
typedef enum dwwdWindowSizeTag
|
|
{
|
|
Size_100_Percent = 0x00000005U,
|
|
Size_50_Percent = 0x00000050U,
|
|
Size_25_Percent = 0x00000500U,
|
|
Size_12_5_Percent = 0x00005000U,
|
|
Size_6_25_Percent = 0x00050000U,
|
|
Size_3_125_Percent = 0x00500000U
|
|
}dwwdWindowSize_t;
|
|
|
|
/* USER CODE BEGIN (5) */
|
|
/* USER CODE END */
|
|
|
|
/* Configuration registers */
|
|
typedef struct rti_config_reg
|
|
{
|
|
uint32 CONFIG_GCTRL;
|
|
uint32 CONFIG_TBCTRL;
|
|
uint32 CONFIG_CAPCTRL;
|
|
uint32 CONFIG_COMPCTRL;
|
|
uint32 CONFIG_UDCP0;
|
|
uint32 CONFIG_UDCP1;
|
|
uint32 CONFIG_UDCP2;
|
|
uint32 CONFIG_UDCP3;
|
|
uint32 CONFIG_TBLCOMP;
|
|
uint32 CONFIG_TBHCOMP;
|
|
uint32 CONFIG_SETINT;
|
|
uint32 CONFIG_DWDCTRL;
|
|
uint32 CONFIG_DWDPRLD;
|
|
uint32 CONFIG_WWDRXNCTRL;
|
|
uint32 CONFIG_WWDSIZECTRL;
|
|
} rti_config_reg_t;
|
|
|
|
|
|
/* Configuration registers initial value */
|
|
#define RTI_GCTRL_CONFIGVALUE (1U << 16U) | 0x00000000U
|
|
#define RTI_TBCTRL_CONFIGVALUE 0x00000000U
|
|
#define RTI_CAPCTRL_CONFIGVALUE 0U | 0U
|
|
#define RTI_COMPCTRL_CONFIGVALUE 0x00001000U | 0x00000100U | 0x00000000U | 0x00000000U
|
|
#define RTI_UDCP0_CONFIGVALUE 10000U
|
|
#define RTI_UDCP1_CONFIGVALUE 50000U
|
|
#define RTI_UDCP2_CONFIGVALUE 80000U
|
|
#define RTI_UDCP3_CONFIGVALUE 100000U
|
|
#define RTI_TBLCOMP_CONFIGVALUE 0U
|
|
#define RTI_TBHCOMP_CONFIGVALUE 0U
|
|
#define RTI_SETINT_CONFIGVALUE 0U
|
|
#define RTI_DWDCTRL_CONFIGVALUE 0x5312ACEDU
|
|
#define RTI_DWDPRLD_CONFIGVALUE 0xFFFU
|
|
#define RTI_WWDRXNCTRL_CONFIGVALUE 0x5U
|
|
#define RTI_WWDSIZECTRL_CONFIGVALUE 0x5U
|
|
|
|
|
|
/**
|
|
* @defgroup RTI RTI
|
|
* @brief Real Time Interrupt Module.
|
|
*
|
|
* The real-time interrupt (RTI) module provides timer functionality for operating systems and for
|
|
* benchmarking code. The RTI module can incorporate several counters that define the timebases needed
|
|
* for scheduling in the operating system.
|
|
*
|
|
* Related Files
|
|
* - reg_rti.h
|
|
* - rti.h
|
|
* - rti.c
|
|
* @addtogroup RTI
|
|
* @{
|
|
*/
|
|
|
|
/* RTI Interface Functions */
|
|
|
|
void rtiInit(void);
|
|
void rtiStartCounter(uint32 counter);
|
|
void rtiStopCounter(uint32 counter);
|
|
uint32 rtiResetCounter(uint32 counter);
|
|
void rtiSetPeriod(uint32 compare, uint32 period);
|
|
uint32 rtiGetPeriod(uint32 compare);
|
|
uint32 rtiGetCurrentTick(uint32 compare);
|
|
void rtiEnableNotification(uint32 notification);
|
|
void rtiDisableNotification(uint32 notification);
|
|
void dwdInit(uint16 dwdPreload);
|
|
void dwwdInit(dwwdReaction_t Reaction, uint16 dwdPreload, dwwdWindowSize_t Window_Size);
|
|
uint32 dwwdGetCurrentDownCounter(void);
|
|
void dwdCounterEnable(void);
|
|
void dwdSetPreload(uint16 dwdPreload);
|
|
void dwdReset(void);
|
|
void dwdGenerateSysReset(void);
|
|
boolean IsdwdKeySequenceCorrect(void);
|
|
dwdResetStatus_t dwdGetStatus(void);
|
|
dwdViolation_t dwdGetViolationStatus(void);
|
|
void dwdClearFlag(void);
|
|
void rtiGetConfigValue(rti_config_reg_t *config_reg, config_value_type_t type);
|
|
/** @fn void rtiNotification(uint32 notification)
|
|
* @brief Notification of RTI module
|
|
* @param[in] notification Select notification of RTI module:
|
|
* - rtiNOTIFICATION_COMPARE0: RTI compare 0 notification
|
|
* - rtiNOTIFICATION_COMPARE1: RTI compare 1 notification
|
|
* - rtiNOTIFICATION_COMPARE2: RTI compare 2 notification
|
|
* - rtiNOTIFICATION_COMPARE3: RTI compare 3 notification
|
|
* - rtiNOTIFICATION_TIMEBASE: RTI Timebase notification
|
|
* - rtiNOTIFICATION_COUNTER0: RTI counter 0 overflow notification
|
|
* - rtiNOTIFICATION_COUNTER1: RTI counter 1 overflow notification
|
|
*
|
|
* @note This function has to be provide by the user.
|
|
*/
|
|
void rtiNotification(uint32 notification);
|
|
|
|
/**@}*/
|
|
/* USER CODE BEGIN (6) */
|
|
/* USER CODE END */
|
|
|
|
|
|
#endif
|