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

📄 mtc_hr.h

📁 该程序是ST7MC驱动BLDC120
💻 H
📖 第 1 页 / 共 2 页
字号:
/**************** (c) 2004 STMicroelectronics **********************

PROJECT  : ST7MC demokit
COMPILER : ST7 METROWERKS C (HIWARE) / COSMIC

MODULE  :  Mtc_hr.h
LIBRARY VERSION  :  1.0.2

CREATION DATE :    08.2003
AUTHOR :      Florent COSTE	/  Microcontroller Application Lab  / ST Hong Kong

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

DESCRIPTION :  MTC hardware register prototypes

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

 ******************************************************************************
 THE SOFTWARE INCLUDED IN THIS FILE IS FOR GUIDANCE ONLY. ST MICROELECTRONICS
 SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES
 WITH RESPECT TO ANY CLAIMS ARISING FROM USE OF THIS SOFTWARE.
 ******************************************************************************
              
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

******************************************************************************/

#ifndef MTC_HR_H
#define MTC_HR_H


/* ----------------- Motor Control peripheral dedicated macros ------------- */
#define SET_MTC_PAGE(x) AffBit(MCFR,7,x)	/* Set active page of MTC peripheral */
#define ToCMPxH(CMP,Value)         ( CMP = (u8)(Value >> 5 ) )
#define ToCMPxL(CMP,Value)         ( CMP = (u8)(Value << 3 ) )


/*---REGISTERS---*/ 
                                           
#ifdef __HIWARE__						/* For METROWERKS / HIWARE Compiler*/
/* Registers in page 0 */
extern volatile u8 MTIM;	/* MTC Timer Counter High Register */
extern volatile u8 MTIML;	/* MTC Timer Counter Low Register */
extern volatile u8 MZPRV;	/* MTC Zn-1 Capture Register */ 
extern volatile u8 MZREG;	/* MTC Zn Capture Register */
extern volatile u8 MCOMP;	/* MTC Cn-1 Compare Register */
extern volatile u8 MDREG;	/* MTC D Capture/Compare Register */
extern volatile u8 MWGHT;	/* MTC Weight Register */
extern volatile u8 MPRSR;	/* MTC Prescaler and Ratio Register */ 
extern volatile u8 MIMR;	/* MTC Interrupt Mask Register */
extern volatile u8 MISR;	/* MTC Interrupt Status Register */
extern volatile u8 MCRA;	/* MTC Control Register A */
extern volatile u8 MCRB;	/* MTC Control Register B */
extern volatile u8 MCRC;	/* MTC Control Register C */
extern volatile u8 MPHST;	/* MTC Phase State Register */
extern volatile u8 MDFR;	/* MTC D event Filter Register */
extern volatile u8 MCFR;	/* MTC Current feedback Filter register */
extern volatile u8 MREF;	/* MTC Reference Register */
extern volatile u8 MPCR;	/* MTC PWM Control Register */
extern volatile u8 MREP;	/* MTC Repetition Counter Register */
extern volatile u8 MCPWH;	/* MTC Compare Phase W Preload register High */
extern volatile u8 MCPWL;	/* MTC Compare Phase W Preload register Low */
extern volatile u8 MCPVH;	/* MTC Compare Phase V Preload register High */
extern volatile u8 MCPVL;	/* MTC Compare Phase V Preload register Low */
extern volatile u8 MCPUH;	/* MTC Compare Phase U Preload register High */
extern volatile u8 MCPUL;	/* MTC Compare Phase U Preload register Low */
extern volatile u8 MCP0H;	/* MTC Compare Phase 0 Preload register High */
extern volatile u8 MCP0L;	/* MTC Compare Phase 0 Preload register Low */

/* Registers in page 1 */
extern volatile u8 MDTG;	/* MTC Dead Time generator register */
extern volatile u8 MPOL;	/* MTC Output Polarity Register */ 
extern volatile u8 MPWME;	/* MTC PWM Register */
extern volatile u8 MCONF;	/* MTC Configuration Register */
extern volatile u8 MPAR;	/* MTC Output Parity Register */
extern volatile u8 MZFR;	/* MTC Z event Filter Register */
extern volatile u8 MSCR;	/* MTC Sampling Clock Register */


#else
#ifdef __CSMC__							/* only for Cosmic Compiler*/
/* Registers in page 0 */
@tiny extern volatile u8 MTIM @0x50;	/* MTC Timer Counter High Register */
@tiny extern volatile u8 MTIML @0x51;	/* MTC Timer Counter Low Register */
@tiny extern volatile u8 MZPRV @0x52;	/* MTC Zn-1 Capture Register */ 
@tiny extern volatile u8 MZREG @0x53;	/* MTC Zn Capture Register */
@tiny extern volatile u8 MCOMP @0x54;	/* MTC Cn-1 Compare Register */
@tiny extern volatile u8 MDREG @0x55;	/* MTC D Capture/Compare Register */
@tiny extern volatile u8 MWGHT @0x56;	/* MTC Weight Register */
@tiny extern volatile u8 MPRSR @0x57;	/* MTC Prescaler and Ratio Register */ 
@tiny extern volatile u8 MIMR @0x58;	/* MTC Interrupt Mask Register */
@tiny extern volatile u8 MISR @0x59;	/* MTC Interrupt Status Register */
@tiny extern volatile u8 MCRA @0x5A;	/* MTC Control Register A */
@tiny extern volatile u8 MCRB @0x5B;	/* MTC Control Register B */
@tiny extern volatile u8 MCRC @0x5C;	/* MTC Control Register C */
@tiny extern volatile u8 MPHST @0x5D;	/* MTC Phase State Register */
@tiny extern volatile u8 MDFR @0x5E;	/* MTC D event Filter Register */
@tiny extern volatile u8 MCFR @0x5F;	/* MTC Current feedback Filter register */
@tiny extern volatile u8 MREF @0x60;	/* MTC Reference Register */
@tiny extern volatile u8 MPCR @0x61;	/* MTC PWM Control Register */
@tiny extern volatile u8 MREP @0x62;	/* MTC Repetition Counter Register */
@tiny extern volatile u8 MCPWH @0x63;	/* MTC Compare Phase W Preload register High */
@tiny extern volatile u8 MCPWL @0x64;	/* MTC Compare Phase W Preload register Low */
@tiny extern volatile u8 MCPVH @0x65;	/* MTC Compare Phase V Preload register High */
@tiny extern volatile u8 MCPVL @0x66;	/* MTC Compare Phase V Preload register Low */
@tiny extern volatile u8 MCPUH @0x67;	/* MTC Compare Phase U Preload register High */
@tiny extern volatile u8 MCPUL @0x68;	/* MTC Compare Phase U Preload register Low */
@tiny extern volatile u8 MCP0H @0x69;	/* MTC Compare Phase 0 Preload register High */
@tiny extern volatile u8 MCP0L @0x6A;	/* MTC Compare Phase 0 Preload register Low */

/* Registers in Page 1 */
@tiny extern volatile u8 MDTG @0x50;	/* MTC Dead Time generator register */
@tiny extern volatile u8 MPOL @0x51;	/* MTC Output Polarity Register */ 
@tiny extern volatile u8 MPWME @0x52;	/* MTC PWM Register */
@tiny extern volatile u8 MCONF @0x53;	/* MTC Configuration Register */
@tiny extern volatile u8 MPAR @0x54;	/* MTC Output Parity Register */
@tiny extern volatile u8 MZFR @0x55;	/* MTC Z event Filter Register */
@tiny extern volatile u8 MSCR @0x56;	/* MTC Sampling Clock Register */

#else
  #error"Unsupported Compiler!"	// Compiler Defines not found! 
#endif
#endif

/*---CONSTANTS---*/

/* MCRA: MTC Control Register A bit definition */

#define MOE		((u8)0x07)     	/* Output Enable */
#define CKE	    ((u8)0x06)		/* Clock enable	*/
#define SR		((u8)0x05)     	/* Sensor ON/OFF */
#define DAC		((u8)0x04)     	/* Direct Access */
#define VOC1	((u8)0x03)		/* Voltage/Current mode */
#define SWA		((u8)0x02)     	/* Switched/autoswitched mode */
#define PZ		((u8)0x01)		/* Z protection	*/
#define DCB		((u8)0x00)     	/* Data Capture bit */

#define MOE_MSK		((u8)0x80)     	/* Output Enable mask */
#define CKE_MSK	    ((u8)0x40)		/* Clock enable mask */
#define SR_MSK		((u8)0x20)     	/* Sensor ON/OFF mask */
#define DAC_MSK		((u8)0x10)     	/* Direct Access mask */
#define VOC1_MSK	((u8)0x08)		/* Voltage/Current mode mask */
#define CUR_MODE ((u8)0x08)		/* Idem previous line, but more explicit */
#define SWA_MSK		((u8)0x04)     	/* Switched/autoswitched mode mask */
#define PZ_MSK		((u8)0x02)		/* Z protection mask */
#define DCB_MSK		((u8)0x01)     	/* Data Capture bit mask */
   
   
/* MCRB: MTC Control Register B bit definition */

#define CPB		((u8)0x06)		/* Z compare bit preload */
#define HDM		((u8)0x05)     	/* Hardware D event preload */  
#define SDM		((u8)0x04)     	/* Software D event preload */
#define OCV		((u8)0x03)     	/* over current protection  */


#define CPB_MSK	((u8)0x40)		/* Z compare bit preload mask */
#define ZC_RISE	((u8)0x40)		/* Z compare bit preload mask */
#define ZC_FALL	((u8)0x00)		/* Z compare bit preload mask */
#define HDM_MSK	((u8)0x20)     	/* Hardware D event preload mask */  
#define SDM_MSK	((u8)0x10)     	/* Software D event preload mask */
#define OCV_MSK	((u8)0x08)     	/* Over current protection mask */
#define OS2_MSK	((u8)0x04)	/* operating mode selection */

#define Preload_mask	((u8) CPB_MSK | HDM_MSK | SDM_MSK | OS2_MSK)	/*Mask of Preload bit */



/* MCRC: MTC Control Register C bit definition */

#define SEI		((u8)0x07)		/* Speed error interrupt flag */
#define OI		((u8)0x07)		/* MTIM overflow flag */
#define EDIR	((u8)0x06)     	/* Encoder direction */
#define HZ		((u8)0x06)		/* Hardware Z event */
#define SZ		((u8)0x05)		/* Software Z event */
#define SC		((u8)0x04)		/* Software C event */
#define SPLG	((u8)0x03)		/* Sampling 1MHz */

#define SEI_MSK	((u8)0x80)		/* Speed error interrupt flag mask */
#define OI_MSK	((u8)0x80)		/* MTIM overflow flag mask */
#define EDIR_MSK ((u8)0x40)     /* Encoder direction mask */
#define HZ_MSK	((u8)0x40)		/* Hardware Z event mask */
#define SZ_MSK	((u8)0x20)		/* Software Z event mask */
#define SC_MSK	((u8)0x10)		/* Software C event mask */
#define SPLG_MSK ((u8)0x08)		/* Sampling 1MHz mask */


#define VREF_EXT	((u8)7)		/* Threshold voltage set by external MCVREF pin */
#define VREF_3V5	((u8)6)		/* 3.5V internal threshold voltage */
#define VREF_2V5	((u8)5)		/* 2.5V internal threshold voltage */
#define VREF_2V		((u8)4)		/* 2V internal threshold voltage */
#define VREF_1V5	((u8)3)		/* 1.5V internal threshold voltage */
#define VREF_1V		((u8)2)		/* 1V internal threshold voltage */
#define VREF_0V6	((u8)1)		/* 0.6V internal threshold voltage */
#define VREF_0V2	((u8)0)		/* 0.2V internal threshold voltage */


/* MPHST: MTC Phase State register bit definition */

#define MCO0		((u8)0x01)     	/* MCO0 Channel ON */
#define MCO1		((u8)0x02)     	/* MCO1 Channel ON */
#define MCO2		((u8)0x04)     	/* MCO2 Channel ON */
#define MCO3		((u8)0x08)     	/* MCO3 Channel ON */
#define MCO4		((u8)0x10)     	/* MCO4 Channel ON */
#define MCO5		((u8)0x20)     	/* MCO5 Channel ON */

#define MCIA		((u8)0x00)     	/* MCIA Input selected */
#define MCIB		((u8)0x40)     	/* MCIB Input selected */
#define MCIC		((u8)0x80)     	/* MCIC Input selected */
#define ENCODER		((u8)0xC0)     	/* Encoder mode selection mask */


/* MISR: MTC Interrupt status Register bit definition */

#define PUI		((u8)0x07)     	/* PWM Update Interrupt flag */
#define RPI	    ((u8)0x06)		/* Ratio Increment interrupt flag */
#define RMI		((u8)0x05)     	/* Ratio Decrement interrupt flag */
#define CLI		((u8)0x04)     	/* Current Limitation interrupt flag */
#define EI		((u8)0x03)		/* Emergency stop Interrupt flag */
#define ZI		((u8)0x02)     	/* BEMF Zero-crossing interrupt flag */
#define DI		((u8)0x01)		/* End of Demagnetization interrupt flag */
#define CI		((u8)0x00)     	/* Commutation / Capture interrupt flag */

#define PUI_MSK		((u8)0x80) 	/* PWM Update Interrupt flag */
#define RPI_MSK	    ((u8)0x40)	/* Ratio Increment interrupt flag */
#define RMI_MSK		((u8)0x20) 	/* Ratio Decrement interrupt flag */
#define CLI_MSK		((u8)0x10) 	/* Current Limitation interrupt flag */
#define EI_MSK		((u8)0x08)	/* Emergency stop Interrupt flag */
#define ZI_MSK		((u8)0x04)  /* BEMF Zero-crossing interrupt flag */
#define DI_MSK		((u8)0x02)	/* End of Demagnetization interrupt flag */
#define CI_MSK		((u8)0x01)  /* Commutation / Capture interrupt flag */


/* MPRSR: MTC Prescaler and Sampling Register Masks definition */
//#define SAMPLING_RATE	SMPL_18K1	

#define SMPL_50K		((u8)0x00) 	/* Sampling frequency in current Mode */
#define SMPL_40K		((u8)0x10) 	/* Sampling frequency in current Mode */
#define SMPL_33K3		((u8)0x20) 	/* Sampling frequency in current Mode */
#define SMPL_25K		((u8)0x30) 	/* Sampling frequency in current Mode */
#define SMPL_20K		((u8)0x40) 	/* Sampling frequency in current Mode */
#define SMPL_18K1		((u8)0x50) 	/* Sampling frequency in current Mode */

⌨️ 快捷键说明

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