📄 snsles2431.lst
字号:
MPASM 5.15 SNSLES2431.ASM 2-22-2008 14:34:38 PAGE 13
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00017C 00445 AD_CONV_COMPLETE
00446
00447 ;ADC interrupt
00017C CFC3 F028 00448 movff ADRESL,CURRENT_UL ;Sample A = Iu
000180 CFC4 F027 00449 movff ADRESH,CURRENT_UH
000184 CFC3 F002 00450 movff ADRESL,SPEED_REFL ;Sample B = speed ref
000188 CFC4 F001 00451 movff ADRESH,SPEED_REFH
00018C 8C03 00452 bsf FLAGS,CALC_PWM
00018E 9C9E 00453 bcf PIR1,ADIF ;ADIF flag is cleared for next interrupt
000190 0011 00454 RETFIE FAST
00455
00456 ;******************************************************************
000192 00457 HALL_A_HIGH
00458
000192 92A4 00459 bcf PIR3,IC1IF
000194 0011 00460 RETFIE FAST ;测试
00461
00462
000196 6A3E 00463 clrf LOCK_ROTOR_COUNT
000198 ECCF F000 00464 call CHECK_SEQUENCE ;UPDATE_SEQUENCE ;Update the commutation
sequence
00019C 0011 00465 RETFIE FAST
00466
00467 ;-----------------------------------------
00468 ;This routine accelerates the motor speed in two levels.
00469 ;In first level, the speed is set to 450RPM, open loop.
00470 ;In second level it is acceleated to 800RPM openloop.
00471 ;Then the BEMF signals are monitored for 256 cycles and the switching sequence is synched with BEMF sign
als.
00472 ;-----------------------------------------
00019E 00473 CHECK_SEQUENCE
00474
00019E 8E06 00475 bsf FLAGS_SRLS,PC_COM
00476
0001A0 A606 00477 btfss FLAGS_SRLS,OPEN_SPEED_STEP2
0001A2 0012 00478 return
0001A4 B206 00479 btfsc FLAGS_SRLS,SWITCH_SENSORLESS
0001A6 D006 00480 bra SENSERLESS_ON
0001A8 3E39 00481 incfsz COUNT_OPEN_LOOPH,F
0001AA 0012 00482 return
0001AC 8206 00483 bsf FLAGS_SRLS,SWITCH_SENSORLESS
0001AE 0E3E 00484 movlw b'00111110'
0001B0 6E60 00485 movwf DFLTCON ;Digital filters 1:4 on ic1,2,3
0001B2 0012 00486 return
0001B4 00487 SENSERLESS_ON
0001B4 8006 00488 bsf FLAGS_SRLS,IC_ALOWED
00489
0001B6 92A3 00490 bcf PIE3,IC1IE ;Cap1 interrupt
0001B8 0EEA 00491 movlw 0xEA
0001BA 640D 00492 cpfsgt VELOCITY_READH,W ;Digital filters are programmed
0001BC D004 00493 bra LOWER_SPEED_LEVEL1 ;at 3 levels
0001BE 0E39 00494 movlw b'00111001'
0001C0 6E60 00495 movwf DFLTCON
MPASM 5.15 SNSLES2431.ASM 2-22-2008 14:34:38 PAGE 14
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0001C2 8882 00496 bsf LED2
0001C4 D00A 00497 bra CONTINUE_SPEED
0001C6 00498 LOWER_SPEED_LEVEL1
0001C6 0EE4 00499 movlw 0xE4
0001C8 640D 00500 cpfsgt VELOCITY_READH,W
0001CA D004 00501 bra LOWER_SPEED_LEVEL2
0001CC 0E3D 00502 movlw b'00111101'
0001CE 6E60 00503 movwf DFLTCON
0001D0 9882 00504 bcf LED2
0001D2 D003 00505 bra CONTINUE_SPEED
0001D4 00506 LOWER_SPEED_LEVEL2
0001D4 0E3E 00507 movlw b'00111110'
00508
0001D6 6E60 00509 movwf DFLTCON
0001D8 7882 00510 btg LED2
0001DA 00511 CONTINUE_SPEED
0001DA C00D FFCF 00512 movff VELOCITY_READH,TMR1H
0001DE C00E FFCE 00513 movff VELOCITY_READL,TMR1L
0001E2 809D 00514 bsf PIE1,TMR1IE
0001E4 7682 00515 btg LED3
0001E6 0012 00516 return
00517
00518 ;-------------------------------------------------------------
00519 ;The switching sequence is updated in this routine
0001E8 00520 UPDATE_SEQUENCE
00521 ;init table again
0001E8 AA04 00522 btfss FLAGS1,FWD_REV
0001EA D003 00523 bra ITS_REVERSE
0001EC EE00 F017 00524 lfsr 0,POSITION_TABLE_FWD
00525
0001F0 D002 00526 bra PICK_FROM_TABLE
0001F2 00527 ITS_REVERSE
0001F2 EE00 F01F 00528 lfsr 0,POSITION_TABLE_REV
00529 ;--
0001F6 00530 PICK_FROM_TABLE
0001F6 5080 00531 movf PORTA,W
0001F8 1CE8 00532 comf WREG,W ;In forward direction, the BEMF ZC is inverted
0001FA 0B1C 00533 andlw 0x1C ;IC1/IC2/IC3
0001FC 40E8 00534 rrncf WREG,W
0001FE 40E8 00535 rrncf WREG,W
000200 6E3D 00536 movwf BEMF_ZC
00537 ; movf PLUSW0,W
000202 6E3C 00538 movwf OVDCOND_TEMP
000204 0E00 00539 movlw 0x00
000206 623C 00540 cpfseq OVDCOND_TEMP
000208 D003 00541 bra TEST
00542 ;return
00020A EC6D F000 00543 call LED_Display
00020E 0012 00544 return
000210 00545 TEST
000210 0E07 00546 movlw 0x07
000212 623C 00547 cpfseq OVDCOND_TEMP
000214 0012 00548 return
MPASM 5.15 SNSLES2431.ASM 2-22-2008 14:34:38 PAGE 15
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
000216 EC6D F000 00549 call LED_Display
00021A 0012 00550 return
00551
00552
00553 ;-------------------------------------------------------------
00554 ;-------------------------------------------------------------
00555
00556 ;-------------------------------------------------------------
00557 ;-------------------------------------------------------------
00558 ;Timer1 overflow interrupt
00021C 00559 TIMER1_INT
00021C 909E 00560 bcf PIR1,TMR1IF
00021E 0E08 00561 movlw 0x08
000220 6444 00562 cpfsgt CX4
000222 D003 00563 bra OPEN_LOOP_ACTIVE
000224 0E09 00564 movlw 0x09
000226 6E44 00565 movwf CX4
000228 D057 00566 bra SENSERLESS_T0INT
00022A 00567 OPEN_LOOP_ACTIVE
00022A 9006 00568 bcf FLAGS_SRLS,IC_ALOWED
00022C B606 00569 btfsc FLAGS_SRLS,OPEN_SPEED_STEP2
00022E D009 00570 bra OPEN_SPEED_STEP_2
000230 0E69 00571 movlw LOW_OL_SPEEDH ;0xD8F0 = 1.92mSec@20MHz/1000RPM
000232 6ECF 00572 movwf TMR1H
000234 0EC1 00573 movlw LOW_OL_SPEEDL
000236 6ECE 00574 movwf TMR1L
000238 EC61 F003 00575 call SET_SEQUENCE_COUNT
00023C 4A38 00576 infsnz COUNT_OPEN_LOOPL,F
00023E 8606 00577 bsf FLAGS_SRLS,OPEN_SPEED_STEP2
000240 0011 00578 retfie FAST
000242 00579 OPEN_SPEED_STEP_2
000242 0E09 00580 movlw 0x09
000244 6241 00581 cpfseq CX1
000246 EF34 F001 00582 goto S1
00024A 2A43 00583 incf CX3
00024C 0EF0 00584 movlw 0xf0
00024E 6243 00585 cpfseq CX3
000250 EF32 F001 00586 goto S2
000254 2A44 00587 incf CX4
000256 6A43 00588 clrf CX3
000258 0EF0 00589 movlw 0xf0
00025A 6244 00590 cpfseq CX4
00025C EF32 F001 00591 goto S2
000260 0EEF 00592 movlw 0xef
000262 6E44 00593 movwf CX4
000264 EF5F F001 00594 S2 goto T3100
000268 2A40 00595 S1 incf CX
00026A 0EF0 00596 movlw 0xf0
00026C 6240 00597 cpfseq CX
00026E EF65 F001 00598 goto T00
000272 EF3B F001 00599 goto STEP1
000276 00600 STEP1
000276 2A41 00601 incf CX1
MPASM 5.15 SNSLES2431.ASM 2-22-2008 14:34:38 PAGE 16
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
000278 6A40 00602 clrf CX
00027A 0E01 00603 movlw 0x01
00027C 6241 00604 cpfseq CX1
00027E EF43 F001 00605 goto Continue
000282 EF59 F001 00606 goto T800
000286 00607 Continue
000286 C041 F042 00608 movff CX1,CX2
00028A 0642 00609 decf CX2
00028C 5042 00610 movf CX2,W
00028E 0D03 00611 mullw 0x03
000290 5041 00612 movf CX1,W
000292 24F3 00613 addwf PRODL,W
000294 EC18 F000 00614 call CONVERT
00615
000298 6E48 00616 movwf HIGH_OL_SPEEDH
00029A C041 F042 00617 movff CX1,CX2
00029E 0642 00618 decf CX2
0002A0 5042 00619 movf CX2,W
0002A2 0D03 00620 mullw 0x03
0002A4 5041 00621 movf CX1,W
0002A6 24F3 00622 addwf PRODL,W
0002A8 0F01 00623 addlw 0x01
0002AA EC18 F000 00624 call CONVERT
0002AE 6E49 00625 movwf HIGH_OL_SPEEDL
0002B0 D00C 00626 bra T00
0002B2 00627 T800
0002B2 0E85 00628 movlw 0x85
0002B4 6E48 00629 movwf HIGH_OL_SPEEDH
0002B6 0EED 00630 movlw 0xed
0002B8 6E49 00631 movwf HIGH_OL_SPEEDL
0002BA EF65 F001 00632 goto T00
00633
00634
0002BE 00635 T3100
0002BE 0EE0 00636 movlw 0xe0
0002C0 6E48 00637 movwf HIGH_OL_SPEEDH
0002C2 0E7E 00638 movlw 0x7e
0002C4 6E49 00639 movwf HIGH_OL_SPEEDL
00640 ;call UPDATE_SEQUENCE
0002C6 EF65 F001 00641 goto T00
00642
0002CA 00643 T00
0002CA C048 FFCF 00644 movff HIGH_OL_SPEEDH, TMR1H
0002CE C049 FFCE 00645 movff HIGH_OL_SPEEDL, TMR1L
0002D2 EC61 F003 00646 call SET_SEQUENCE_COUNT
00647
0002D6 0011 00648 retfie FAST
00649
0002D8 00650 SENSERLESS_T0INT
0002D8 92A3 00651 bcf PIE3,IC1IE
00652 ; call UPDATE_SEQUENCE
00653 ; movlw 0xe4
00654 ; movwf HIGH_OL_SPEEDH ;1000RPM
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -