⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 load_meas.h

📁 CAN 网关原代码,汽车电子中的总线网关
💻 H
字号:
#define LM_INIT_SWX       1   /* XGATE SW interrupt linked to lm_init */
#define LM_NO_OF_CHANNELS 4   /* number of measurement channels (function calls with parameter 0..#-1)*/
#define LM_MEAS_PERIOD    7   /* the load is measured over (2^LM_MEAS_PERIOD)*65536 bus cycles, change lm_timebase to long unsigned int if value >15 is used */

#define LM_USE_ECT  /* use ECT for timekeeping */
//#define LM_USE_PIT  /* use PIT for timekeeping */
//#define LM_USE_MDC  /* use modulus down counter of ECT */

#define LM_USE_PIT_T  0 /* PIT channel to use */
#define LM_USE_PIT_MT 0 /* PIT microtimer to use */

#define LM_INIT() XGATE.xgswt.word = ((1<<LM_INIT_SWX)<<8)|(1<<LM_INIT_SWX);	/* generate SW trigger - lm_init */

/* user friendly definition of XGATE channel number */
#if defined(LM_USE_ECT)
  #define LM_XGATE_VECTOR 0x6F
#elif defined(LM_USE_PIT)
  #define LM_XGATE_VECTOR (0x3D-LM_USE_PIT_T)
#elif defined(LM_USE_MDC)
  #define LM_XGATE_VECTOR 0x65
#endif

/* assembly definitions of calls to LM_START and LM_STOP for more accurate measurements */
#define LM_START(n) asm LDL   R2,n;                    /* load channel number into R2 */\
                    asm LDL   R6,%XGATE_8(lm_start);   /* load lower byte of address */\
                    asm ORH   R6,%XGATE_8_H(lm_start); /* load upper byte of address */\
                    asm JAL   R6                       /* call the routine */

#define LM_STOP(n)  asm LDL   R2,n;                    /* load channel number into R2 */\
                    asm LDL   R6,%XGATE_8(lm_stop);    /* load lower byte of address */\
                    asm ORH   R6,%XGATE_8_H(lm_stop);  /* load upper byte of address */\
                    asm JAL   R6                       /* call the routine */

#pragma CODE_SEG XGATE_CODE
void lm_start(unsigned char channel); /* do not use this function, use the LM_START(n) macro instead */ 
void lm_stop(unsigned char channel);  /* do not use this function, use the LM_STOP(n) macro instead */
void interrupt lm_init(void);
void interrupt lm_timekeeping(void);
#pragma CODE_SEG DEFAULT


#pragma DATA_SEG __RPAGE_SEG XGATE_DATA
extern unsigned int lm_load[LM_NO_OF_CHANNELS];         /* 0=0%, 65536=100% */
extern unsigned int lm_peak_runtime[LM_NO_OF_CHANNELS]; /* peak execution time in bus cycles */
extern unsigned int lm_average_runtime[LM_NO_OF_CHANNELS]; /* average execution time in bus cycles */
extern unsigned int lm_execution_count_hold[LM_NO_OF_CHANNELS];
#pragma DATA_SEG DEFAULT

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -