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

📄 md_const.h

📁 循迹小车详细资料
💻 H
字号:
/***************************************************/
/*					MiniSum -2  项目											 */
/*        	—— 主控程序电机驱动模块								 */
/*              之常数声明   											 */
/*					    20070326                           */
/*              By DingQi                          */
/***************************************************/
// 注:以下文档的 TAB 为2个字符!

// PCA 初始化常数,
#define		STARTPCA_C 	0x40;		// or CCON 中的CR位控制 启动 PCA
#define		STOPPCA_C 	0xBF;		// and CCON 中的CR位控制 停止 PCA

#define		FOSCdiv12_C 0x00
#define		FOSCdiv2_C 	0x02	
#define		T0Over_C 	0x04		// T0 溢出
#define		ECI_C 		0x06		// 外部脉冲输入

#define		EnCF_C		0x01			// 允许PCA溢出中断

#define		EnCMP_C		0x40			// 0100 0000, CCAPMn 中控制位6, 允许比较器
#define		EnCAPP_C	0x20			// 0010 0000, CCAPMn 中控制位5, 允许上升沿捕获
#define		EnCAPN_C	0x10			// 0001 0000, CCAPMn 中控制位4, 允许下降沿捕获
#define		EnMAT_C		0x08			// 0000 1000, CCAPMn 中控制位3, 允许匹配或捕获后置位 CCFn
#define		EnTOG_C		0x04			// 0000 0100, CCAPMn 中控制位2, 允许匹配或捕获后触发输出翻转
#define		EnPWM_C		0x02			// 0000 0010, CCAPMn 中控制位1, 允许对应的端子输出PWM信号
#define		EnCCFI_C	0x01			// 0000 0001, CCAPMn 中控制位0, 允许CCF产生中断


// PCA 中断
#define		EnPCALVD_C 	0x40

// PCA 优先级
#define		PCALVD_HIGH 0x40	

// 电机控制
#define		MIN_OUT_TIME	800				// 最小PWM 输出的时间,单位 :1/(FOSC/2)

// 电机控制输出

/* 控制位对应关系:
电机1(左)
P2.0 - CtrlL1, H 桥的左、右上臂,1 电平输出导通 0 电平输出截止,只有在对应下臂截止时有效
P2.1 - CtrlL2, H 桥的左下臂,1 电平输出导通 0 电平输出截止
P2.2 - CtrlL3, H 桥的右下臂,0 电平输出导通 1 电平输出截止


电机 2(右)
P2.4 - CtrlR1, H 桥的左、右上臂,1 电平输出导通 0 电平输出截止,只有在对应下臂截止时有效
P2.5 - CtrlR2, H 桥的左下臂,1 电平输出导通 0 电平输出截止
P2.6 - CtrlR3, H 桥的右下臂,0 电平输出导通 1 电平输出截止

控制逻辑:
Ctrl1		Ctrl2		Ctrl3		Drv1		Drv2		Drv3		Drv4		电机状态
	X				0				0			0/截止	0/导通	0/截止	0/导通		刹车
	PWM			1				0			PWM			1/截止	0/截止	0/导通		正转
	PWM			0				1			0/截止	0/导通	PWM			1/截止		反转
	0				1				1			0/截止	1/截止	0/截止	1/截止		惰行
	1				1				1			1/导通	1/截止	1/导通	1/截止		刹车

电机 2 控制逻辑相同,只是对应高 3 位。

*/

// 电机 1 控制
#define 	M1FORWARD		0x02			// 0000 0010 前进,左上、右下导通,

#define 	M1BACK			0x04			// 0000 0100 后退,左下、右上导通

#define 	M1FLOAT			0x06			// 0000 0110 浮空,4 个臂都截止,此时 Ctrl1 应停止PWM输出,维持“0”。
#define 	M1BRACK			0x00			// 0000 0000 刹车,两个下臂导通,上臂截止

#define		M1_MASK			0xF0			// 清除原来输出值,保留另一个电机的输出

// 电机 2 控制
#define 	M2FORWARD		0x20			// 0010 0000 前进,左上、右下导通,

#define 	M2BACK			0x40			// 0100 0000 后退,左下、右上导通

#define 	M2FLOAT			0x60			// 0110 0000 行进控制浮空,4 个臂都截止
#define 	M2BRACK			0x00			// 0000 0000 行进控制刹车,两个下臂导通,上臂截止

#define		M2_MASK			0x0F			// 清除原来输出值,保留另一个电机的输出

#define		PWM_CVT_POINT 50			// 单、双极性电机控制的PWM值转换点。好像效果不好,所以暂时降低进入点

#define		IN_STOP				0					// 电机运转标志 —— 停
#define		IN_FORWARD		1					// 电机运转标志 —— 正转
#define		IN_BACKWARD		-1				// 电机运转标志 —— 反转

// 测速用常数
#define		NO_START_CAPTURE	0			// 未开始脉冲捕获
#define		START_CAPTURE			0xFF	// 开始脉冲捕获

#define		PCA_CNT_FEQ 1843200l		// PCA的计数频率. Fosc/12

#define		PULSNUM_OF_CYCLE	100		// 一圈的脉冲数,即码盘的分割数

⌨️ 快捷键说明

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