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

📄 com_trig.asm

📁 TI的digital motor control lib的源代码。了解TI的编程规范
💻 ASM
📖 第 1 页 / 共 4 页
字号:
                
                ADRK    #2      ; ARP = AR3. AR3 -> vb. AR2 -> FR1(neutral).
                                ; AR4 -> debug_Bemf. 
                                ; AR5-> trig.
;-------------------------------------------------------------------------------- 
                LACC    *,1     ; Accumulator = 2 * vb.
                                ; ARP = AR3. AR3 -> vb. AR2 -> FR1(neutral).
                                ; AR4 -> debug_Bemf. 
                                ; AR5-> trig.
;-------------------------------------------------------------------------------- 
                ADD     *,AR2   ; Accumulator = 3 * vb
                                ; neutral = 3 * neutral voltage (Vn)
                                ; ARP = AR2, AR2 -> FR1(neutral). AR3 -> vb.
                                ; AR4 -> debug_Bemf.  
                                ; AR5-> trig.
;-------------------------------------------------------------------------------- 
                SUB     *,AR4   ; Accumulator = (3 * vb) - neutral = 3*Vb - 3*Vn.
                                ; ARP = AR4, AR4 -> debug_Bemf. 
                                ; AR2 -> FR1(neutral). AR3 -> vb. AR5-> trig.
;-------------------------------------------------------------------------------- 
                SACL    *+      ; debug_Bemf = (3 * vb) - neutral = 3*Vb - 3*Vn.
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR2 -> FR1(neutral). AR3 -> vb. AR5-> trig.
;-------------------------------------------------------------------------------- 
                BCND    __CMTN_clr_nw_s1,LT
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR2 -> FR1(neutral). AR3 -> vb. AR5-> trig.
;-------------------------------------------------------------------------------- 
                CALL    _Noise_Wind  
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR2 -> FR1(neutral). AR3 -> vb. AR5-> trig.
;-------------------------------------------------------------------------------- 
                B       __CMTN_st_end
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR2 -> FR1(neutral). AR3 -> vb. AR5-> trig.
;-------------------------------------------------------------------------------- 
            ; ARP = AR4. AR4 -> noise_windowCntr.
            ; AR2 -> FR1(neutral). AR3 -> vb. AR5-> trig.
             

__CMTN_clr_nw_s1:
                
                SPLK    #CLEAR,*  
                                ; noise_windowCntr = 0.
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR2 -> FR1(neutral). AR3 -> vb. AR5-> trig.
;-------------------------------------------------------------------------------- 
                B     __CMTN_st_end 
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR2 -> FR1(neutral). AR3 -> vb. AR5-> trig.
;================================================================================

            ; state 2 - ZC for phase A
            ; ARP = AR3. AR3 -> trig.  AR2 -> neutral. AR4 -> debug_Bemf.
            ; AR5-> trig.
                 
__CMTN_state_bnc:

                
                ADRK    #1      ; ARP = AR3. AR3 -> va.  AR2 -> FR1(neutral).
                                ; AR4 -> debug_Bemf. AR5-> trig.
;-------------------------------------------------------------------------------- 
                LACC    *,1     ; Accumulator = 2 * va.
                                ; ARP = AR3. AR3 -> va.  AR2 -> FR1(neutral).
                                ; AR4 -> debug_Bemf. AR5-> trig.
;-------------------------------------------------------------------------------- 
                ADD     *,AR2   ; Accumulator = 3 * va.
                                ; neutral = 3 * neutral voltage (Vn)
                                ; ARP = AR2. AR2 -> FR1(neutral).AR3 -> va.
                                ; AR4 -> debug_Bemf. AR5-> trig.
;-------------------------------------------------------------------------------- 
                SUB     *,AR4   ; ACC = (3 * va) - neutral = 3*Va - 3*Vn.
                                ; ARP = AR4, AR4 -> debug_Bemf.
                                ; AR2 -> FR1(neutral).AR3 -> va.
                                ; AR5-> trig. 
;-------------------------------------------------------------------------------- 
                SACL    *+      ; debug_Bemf = (3 * va) - neutral = 3*Va - 3*Vn.
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR2 -> FR1(neutral).AR3 -> va.
                                ; AR5-> trig. 
;-------------------------------------------------------------------------------- 
                BCND    __CMTN_clr_nw_s2,GT
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR2 -> FR1(neutral).AR3 -> va.
                                ; AR5-> trig. 
;-------------------------------------------------------------------------------- 
                CALL    _Noise_Wind 
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR2 -> FR1(neutral).AR3 -> va.
                                ; AR5-> trig. 
;-------------------------------------------------------------------------------- 
                B     __CMTN_st_end
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR2 -> FR1(neutral).AR3 -> va.
                                ; AR5-> trig. 
;-------------------------------------------------------------------------------- 
        ; ARP = AR4. AR4 -> noise_windowCntr.
        ; AR2 -> FR1(neutral).AR3 -> va.
        ; AR5-> trig. 

__CMTN_clr_nw_s2:
                
                SPLK    #CLEAR,*  
                                ; noise_windowCntr = 0;
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR2 -> FR1(neutral).AR3 -> va.
                                ; AR5-> trig.  
;-------------------------------------------------------------------------------- 
                B       __CMTN_st_end 
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR2 -> FR1(neutral).AR3 -> va.
                                ; AR5-> trig. 
;================================================================================

            ; state 3 - ZC for phase C
            ; ARP = AR3. AR3 -> trig.  AR4 -> debug_Bemf.
            ; AR2 -> FR1(neutral). AR5-> trig.
                 
__CMTN_state_bna:

                
                ADRK    #3      ; ARP = AR3. AR3 -> vc.  AR4 -> debug_Bemf.
                                ; AR2 -> FR1(neutral). AR5-> trig.
;-------------------------------------------------------------------------------- 
                LACC    *,1     ; Accumulator = 2 * vc.
                                ; ARP = AR3. AR3 -> vc.  AR4 -> debug_Bemf.
                                ; AR2 -> FR1(neutral). AR5-> trig.
;-------------------------------------------------------------------------------- 
                ADD     *,AR2   ; Accumulator = 3 * vc.
                                ; neutral = 3 * neutral voltage (Vn)
                                ; ARP = AR2. AR2 -> FR1(neutral).
                                ; AR4 -> debug_Bemf. AR5-> trig.
                                ; AR3 -> vc.  
;-------------------------------------------------------------------------------- 
                SUB     *,AR4   ; Accumulator = 3 * vc - neutral = 3*Vc - 3*Vn.
                                ; ARP = AR4, AR4 -> debug_Bemf. 
                                ; AR2 -> FR1(neutral). AR5-> trig.
                                ; AR3 -> vc. 
;-------------------------------------------------------------------------------- 
                SACL    *+      ; debug_Bemf = 3 * vc - neutral = 3*Vc - 3*Vn.
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR3 -> vc. 
                                ; AR2 -> FR1(neutral). AR5-> trig.
;-------------------------------------------------------------------------------- 
                BCND    __CMTN_clr_nw_s3,LT
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR3 -> vc. 
                                ; AR2 -> FR1(neutral). AR5-> trig.
;-------------------------------------------------------------------------------- 
                CALL    _Noise_Wind  
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR3 -> vc. 
                                ; AR2 -> FR1(neutral). AR5-> trig.
;-------------------------------------------------------------------------------- 
                B       __CMTN_st_end
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR3 -> vc. 
                                ; AR2 -> FR1(neutral). AR5-> trig.
;-------------------------------------------------------------------------------- 
            ; ARP =  AR4. AR4 ->  noise_windowCntr. 
            ; AR3 -> vc. 
            ; AR2 -> FR1(neutral). AR5-> trig.
            
__CMTN_clr_nw_s3:
                
                SPLK    #CLEAR,*  
                                ; noise_windowCntr = 0.
                                ; ARP =  AR4. AR4 ->  noise_windowCntr. 
                                ; AR3 -> vc. 
                                ; AR2 -> FR1(neutral). AR5-> trig.
;-------------------------------------------------------------------------------- 
                B       __CMTN_st_end
                                ; ARP =  AR4. AR4 ->  noise_windowCntr. 
                                ; AR3 -> vc. 
                                ; AR2 -> FR1(neutral). AR5-> trig.
;================================================================================

            ; state 4 - ZC for phase B
            ; ARP = AR3. AR3 -> trig.  AR4 -> debug_Bemf.
            ; AR2 ->  FR1(neutral). AR5-> trig.
            ; 

__CMTN_state_cna:

                ADRK    #2      ; ARP = AR3. AR3 -> vb.  AR4 -> debug_Bemf.
                                ; AR2 ->  FR1(neutral). AR5-> trig.
;------------------------------------------------------------------------------- 
                LACC    *,1     ; Accumulator = 2 * vb.
                                ; ARP = AR3. AR3->vb. AR4 -> debug_Bemf.
                                ; AR2 ->  FR1(neutral). AR5-> trig.
;-------------------------------------------------------------------------------- 
                ADD     *,AR2   ; Accumulator = 3 * vb.
                                ; neutral = 3 * neutral voltage (Vn)
                                ; ARP = AR2. AR2 -> FR1(neutral).
                                ; AR3->vb. AR4 -> debug_Bemf. AR5-> trig.
;-------------------------------------------------------------------------------- 
                SUB     *,AR4   ; Accumulator = 3 * vb - neutral = 3*Vb - 3*Vn.
                                ; ARP = AR4. AR4 -> debug_Bemf. 
                                ; AR2 -> FR1(neutral). AR3->vb. AR5-> trig.
;-------------------------------------------------------------------------------- 
                SACL    *+      ; debug_Bemf = 3 * vb - neutral = 3*Vb - 3*Vn.
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR2 -> FR1(neutral). AR3->vb. AR5-> trig.
;-------------------------------------------------------------------------------- 
                MAR     *+      ; ARP = AR4. AR4 -> d30_doneFlg
                                ; AR2 -> FR1(neutral). AR3->vb. AR5-> trig.
;-------------------------------------------------------------------------------- 
                SPLK    #CLEAR,  *- 
                                ; d30_doneFlg = 0;
                                ; Clear flag for delay calc in state 5
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR2 -> FR1(neutral). AR3-> vb. AR5-> trig.
;-------------------------------------------------------------------------------- 
                BCND    __CMTN_clr_nw_s4,GT
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR2 -> FR1(neutral). AR3-> vb. AR5-> trig.
;-------------------------------------------------------------------------------- 
                CALL    _Noise_Wind 
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR2 -> FR1(neutral). AR3-> vb. AR5-> trig.
;-------------------------------------------------------------------------------- 
                B       __CMTN_st_end 
                                ; ARP = AR4. AR4 -> noise_windowCntr.
                                ; AR2 -> FR1(neutral). AR3-> vb. AR5-> trig.
;-------------------------------------------------------------------------------- 
            ; ARP =  AR4. AR4 ->  noise_windowCntr.
            ; AR2 -> FR1(neutral). AR3-> vb. AR5-> trig.
 

__CMTN_clr_nw_s4:
                
                SPLK    #CLEAR,*  
                                ; noise_windowCntr = 0
                                ; ARP =  AR4. AR4 ->  noise_windowCntr 
                                ; AR2 -> FR1(neutral). AR3-> vb. AR5-> trig.
;-------------------------------------------------------------------------------- 
                B       __CMTN_st_end
                                ; ARP =  AR4. AR4 ->  noise_windowCntr 
                                ; AR2 -> FR1(neutral). AR3-> vb. AR5-> trig.
;================================================================================

            ; state 5 - ZC for phase A
            ; ARP = AR3. AR3 -> trig.  AR2 -> FR1 (neutral).
            ; AR4 -> debug_Bemf.
            ; AR5-> trig. 

__CMTN_state_cnb:

                
                ADRK    #1      ; ARP = AR3. AR3 -> va.  AR2 -> FR1 (neutral).
                                ; AR4 -> debug_Bemf.
                                ; AR5-> trig. 
;-------------------------------------------------------------------------------- 
                LACC    *,1     ; Accumulator = 2 * va.
                                ; ARP = AR3. AR3 -> va. AR2 -> FR1 (neutral).
                                ; AR4 -> debug_Bemf.

⌨️ 快捷键说明

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