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

📄 mc_bldc_drive.ls

📁 STM8S105 BLDC源代码
💻 LS
📖 第 1 页 / 共 2 页
字号:
1377  00f7 240f          	jruge	L136
1379  00f9 b601          	ld	a,L32_bValidatedMeasuredSpeed
1380  00fb 4a            	dec	a
1381  00fc 260a          	jrne	L136
1382                     ; 205 				bHallError++;
1384  00fe 3c00          	inc	_bHallError
1385                     ; 206 				if (bHallError >= HALL_MAX_ERROR_NUMBER)
1387  0100 2706          	jreq	L136
1388                     ; 208 					DriveStatus = FUNCTION_ERROR;
1390  0102 35020001      	mov	L12_DriveStatus,#2
1391                     ; 209 					bValidatedMeasuredSpeed = 0;
1393  0106 b701          	ld	L32_bValidatedMeasuredSpeed,a
1394  0108               L136:
1395                     ; 212 			if (hSpeed_01HZ > HALL_MIN_SPEED_01HZ)
1397  0108 a300c9        	cpw	x,#201
1398  010b 2506          	jrult	L536
1399                     ; 214 				bValidatedMeasuredSpeed = 1;
1401  010d 35010001      	mov	L32_bValidatedMeasuredSpeed,#1
1402                     ; 215 				bHallError = 0;
1404  0111 3f00          	clr	_bHallError
1405  0113               L536:
1406                     ; 230 	hMeasuredSpeed = (u16)(((u32)bHztoRPM * hSpeed_01HZ)/100);	
1408  0113 b60b          	ld	a,_bHztoRPM
1409  0115 5f            	clrw	x
1410  0116 97            	ld	xl,a
1411  0117 1603          	ldw	y,(OFST-1,sp)
1412  0119 cd0000        	call	c_umul
1414  011c ae0004        	ldw	x,#L06
1415  011f cd0000        	call	c_ludv
1417  0122 be02          	ldw	x,c_lreg+2
1418  0124 1f01          	ldw	(OFST-3,sp),x
1419                     ; 231 	hTargetSpeed = g_pMotorVar->hTarget_rotor_speed/2;
1421  0126 be0c          	ldw	x,L3_g_pMotorVar
1422  0128 a602          	ld	a,#2
1423  012a ee04          	ldw	x,(4,x)
1424  012c cd0000        	call	c_sdivx
1426  012f 1f03          	ldw	(OFST-1,sp),x
1427                     ; 233 	if (hTargetSpeed < 0)
1429  0131 2a0e          	jrpl	L736
1430                     ; 235 		hTargetSpeed = -hTargetSpeed; // hTargetSpeed is the absolute value
1432  0133 50            	negw	x
1433  0134 1f03          	ldw	(OFST-1,sp),x
1434                     ; 236 		g_pMotorVar->hMeasured_rotor_speed = -hMeasuredSpeed; // Visualize negative speed
1436  0136 1e01          	ldw	x,(OFST-3,sp)
1437  0138 90be0c        	ldw	y,L3_g_pMotorVar
1438  013b 50            	negw	x
1439  013c 90ef02        	ldw	(2,y),x
1441  013f 2006          	jra	L146
1442  0141               L736:
1443                     ; 240 		g_pMotorVar->hMeasured_rotor_speed = hMeasuredSpeed; // Visualize positive speed
1445  0141 be0c          	ldw	x,L3_g_pMotorVar
1446  0143 1601          	ldw	y,(OFST-3,sp)
1447  0145 ef02          	ldw	(2,x),y
1448  0147               L146:
1449                     ; 243 	if (bValidatedMeasuredSpeed == 1)
1451  0147 b601          	ld	a,L32_bValidatedMeasuredSpeed
1452  0149 4a            	dec	a
1453  014a 2620          	jrne	L346
1454                     ; 246 		if (g_pMotorVar->bAutoDelay)
1456  014c be0c          	ldw	x,L3_g_pMotorVar
1457  014e e616          	ld	a,(22,x)
1458  0150 2704          	jreq	L546
1459                     ; 248 			BLDCDelayCoefComputation(hMeasuredSpeed);
1461  0152 1e01          	ldw	x,(OFST-3,sp)
1462  0154 ad26          	call	_BLDCDelayCoefComputation
1464  0156               L546:
1465                     ; 253 					outPid = PID_REG(hTargetSpeed,hMeasuredSpeed,g_pPID_Speed);
1467  0156 be09          	ldw	x,_g_pPID_Speed
1468  0158 89            	pushw	x
1469  0159 1e03          	ldw	x,(OFST-1,sp)
1470  015b 89            	pushw	x
1471  015c 90be09        	ldw	y,_g_pPID_Speed
1472  015f 90ee02        	ldw	y,(2,y)
1473  0162 1e07          	ldw	x,(OFST+3,sp)
1474  0164 90fe          	ldw	y,(y)
1475  0166 90fd          	call	(y)
1477  0168 5b04          	addw	sp,#4
1479  016a 2002          	jra	L746
1480  016c               L346:
1481                     ; 269 				outPid = hTargetSpeed;//g_pMotorVar->hDuty_cycle;
1483  016c 1e03          	ldw	x,(OFST-1,sp)
1484  016e               L746:
1485  016e 1f01          	ldw	(OFST-3,sp),x
1486                     ; 277 	if (DriveState == DRIVE_RUN)
1488  0170 b600          	ld	a,L71_DriveState
1489  0172 a104          	cp	a,#4
1490  0174 2603          	jrne	L156
1491                     ; 289 				*pDutyCycleCounts_reg = outPid;
1493  0176 92cf02        	ldw	[L51_pDutyCycleCounts_reg.w],x
1494  0179               L156:
1495                     ; 304 }
1498  0179 5b04          	addw	sp,#4
1499  017b 81            	ret	
1554                     	switch	.const
1555  0008               L07:
1556  0008 ffffff23      	dc.l	-221
1557  000c               L27:
1558  000c 00000400      	dc.l	1024
1559                     ; 306 void BLDCDelayCoefComputation(u16 Motor_Frequency)
1559                     ; 307 {
1560                     	switch	.text
1561  017c               _BLDCDelayCoefComputation:
1563  017c 89            	pushw	x
1564  017d 89            	pushw	x
1565       00000002      OFST:	set	2
1568                     ; 309 	if (Motor_Frequency <= Freq_Min) 
1570  017e a30bb9        	cpw	x,#3001
1571  0181 2404          	jruge	L107
1572                     ; 311 		BEMF_Rising_Factor = Rising_Fmin;
1574  0183 a680          	ld	a,#128
1575                     ; 312 		BEMF_Falling_Factor = Falling_Fmin;
1577  0185 2041          	jp	L517
1578  0187               L107:
1579                     ; 314 	else if (Motor_Frequency <= F_1) 
1581  0187 1e03          	ldw	x,(OFST+1,sp)
1582  0189 a30dad        	cpw	x,#3501
1583  018c 2438          	jruge	L507
1584                     ; 316 		BEMF_Rising_Factor = (u8)(Rising_Fmin + (s32)(alpha_Rising_1*(Motor_Frequency-Freq_Min)/1024)); 
1586  018e 1d0bb8        	subw	x,#3000
1587  0191 cd0000        	call	c_uitolx
1589  0194 ae0008        	ldw	x,#L07
1590  0197 cd0000        	call	c_lmul
1592  019a ae000c        	ldw	x,#L27
1593  019d cd0000        	call	c_ldiv
1595  01a0 a680          	ld	a,#128
1596  01a2 cd0000        	call	c_ladc
1598  01a5 b603          	ld	a,c_lreg+3
1599  01a7 6b01          	ld	(OFST-1,sp),a
1600                     ; 317 		BEMF_Falling_Factor = (u8)(Falling_Fmin + (s32)(alpha_Falling_1*(Motor_Frequency-Freq_Min)/1024));
1602  01a9 1e03          	ldw	x,(OFST+1,sp)
1603  01ab 1d0bb8        	subw	x,#3000
1604  01ae cd0000        	call	c_uitolx
1606  01b1 ae0008        	ldw	x,#L07
1607  01b4 cd0000        	call	c_lmul
1609  01b7 ae000c        	ldw	x,#L27
1610  01ba cd0000        	call	c_ldiv
1612  01bd a680          	ld	a,#128
1613  01bf cd0000        	call	c_ladc
1615  01c2 b603          	ld	a,c_lreg+3
1617  01c4 2004          	jra	L307
1618  01c6               L507:
1619                     ; 319 	else if (Motor_Frequency <= F_2) 
1621                     ; 321 		BEMF_Rising_Factor = (u8)(Rising_F_1 + (s16)(alpha_Rising_2*(Motor_Frequency-F_1)/1024)); 
1622                     ; 322 		BEMF_Falling_Factor = (u8)(Falling_F_1 + (s16)(alpha_Falling_2*(Motor_Frequency-F_1)/1024));
1624                     ; 324 	else if (Motor_Frequency <= Freq_Max) 
1627  01c6 a614          	ld	a,#20
1628                     ; 326 		BEMF_Rising_Factor = (u8)(Rising_F_2 + (u16)(alpha_Rising_3*(Motor_Frequency-F_2)/1024)); 
1629                     ; 327 		BEMF_Falling_Factor = (u8)(Falling_F_2 + (u16)(alpha_Falling_3*(Motor_Frequency-F_2)/1024));
1631  01c8               L517:
1632                     ; 331 		BEMF_Rising_Factor = Rising_Fmax ;
1635  01c8 6b01          	ld	(OFST-1,sp),a
1636                     ; 332 		BEMF_Falling_Factor = Falling_Fmax;
1638  01ca               L307:
1642  01ca 6b02          	ld	(OFST+0,sp),a
1643                     ; 335 	g_pMotorVar->bRising_Delay = BEMF_Rising_Factor;
1645  01cc be0c          	ldw	x,L3_g_pMotorVar
1646  01ce 7b01          	ld	a,(OFST-1,sp)
1647  01d0 e70d          	ld	(13,x),a
1648                     ; 336 	g_pMotorVar->bFalling_Delay = BEMF_Falling_Factor;
1650  01d2 7b02          	ld	a,(OFST+0,sp)
1651  01d4 e70c          	ld	(12,x),a
1652                     ; 337 }
1655  01d6 5b04          	addw	sp,#4
1656  01d8 81            	ret	
1866                     	xdef	_BLDCDelayCoefComputation
1867                     	xdef	_GetSpeed_01HZ
1868                     	xdef	_BLDC_Drive
1869                     	switch	.ubsct
1870  0000               _bHallError:
1871  0000 00            	ds.b	1
1872                     	xdef	_bHallError
1873  0001               L12_DriveStatus:
1874  0001 00            	ds.b	1
1875  0002               L51_pDutyCycleCounts_reg:
1876  0002 0000          	ds.b	2
1877  0004               L31_pcounter_reg:
1878  0004 0000          	ds.b	2
1879  0006               L11_g_pdevice:
1880  0006 0000          	ds.b	2
1881  0008               _bSpeed_PID_sampling_time:
1882  0008 00            	ds.b	1
1883                     	xdef	_bSpeed_PID_sampling_time
1884  0009               _g_pPID_Speed:
1885  0009 0000          	ds.b	2
1886                     	xdef	_g_pPID_Speed
1887  000b               _bHztoRPM:
1888  000b 00            	ds.b	1
1889                     	xdef	_bHztoRPM
1890  000c               L3_g_pMotorVar:
1891  000c 0000          	ds.b	2
1892                     	xref	_vtimer_SetTimer
1893                     	xref	_Get_BLDC_Struct
1894                     	xref	_dev_driveWait
1895                     	xref	_dev_driveStop
1896                     	xref	_dev_driveRun
1897                     	xref	_dev_driveStartUp
1898                     	xref	_dev_driveStartUpInit
1899                     	xref	_dev_driveIdle
1900                     	xref	_dev_driveInit
1901                     	xdef	_driveFault
1902                     	xdef	_driveWait
1903                     	xdef	_driveStop
1904                     	xdef	_driveRun
1905                     	xdef	_driveStartUp
1906                     	xdef	_driveStartUpInit
1907                     	xdef	_driveIdle
1908                     	xdef	_driveInit
1909                     	xref.b	c_lreg
1910                     	xref.b	c_x
1911                     	xref.b	c_y
1931                     	xref	c_ladc
1932                     	xref	c_ldiv
1933                     	xref	c_lmul
1934                     	xref	c_sdivx
1935                     	xref	c_umul
1936                     	xref	c_idiv
1937                     	xref	c_ludv
1938                     	xref	c_rtol
1939                     	xref	c_uitolx
1940                     	xref	c_ltor
1941                     	end

⌨️ 快捷键说明

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