TI中文支持网
TI专业的中文技术问题搜集分享网站

请问28035 CLA能否“间接访问”CPU中的其它寄存器? 有实例说明,例如PIEACK!!

1. 您好,在28035 CLA manual中,我们可以看到对于CLA可以访问的寄存器的说法“The CLA hasdirect access to the ePWM+HRPWM, Comparator and ADC Result registers.”。注意direct,如下图所示

问题:

我在阅读“BLPFC”-> BridgelessPFC-DPL-ISR.asm文档时,在最后结束部分看到如下语句,用来清楚中断标志:

Interrupt management before exit

	.if(EPWMn_DPL_ISR=1)

		.if(EPWM1)
			MOVW 	DP,#_EPwm1Regs.ETCLR
			MOV 	@_EPwm1Regs.ETCLR,#0x01			; Clear EPWM1 Int flag
		.endif ; EPWM1
	
		.if(EPWM2)
			MOVW 	DP,#_EPwm2Regs.ETCLR
			MOV 	@_EPwm2Regs.ETCLR,#0x01			; Clear EPWM2 Int flag
		.endif ; EPWM2
	
		MOVW 	DP,#_PieCtrlRegs.PIEACK			; Acknowledge PIE interrupt Group 3
		MOV 	@_PieCtrlRegs.PIEACK, #0x4
	.endif ; EPWMn_ISR

	.if(ADC_DPL_ISR=1)
	; Case where ISR is triggered by ADC 
;		MOVW 	DP,#_AdcRegs.ADCINTFLGCLR
;		MOV 	@AdcRegs.ADCINTFLGCLR, #0x01	; Clear ADCINT1 Flag

		MOVW 	DP,#_PieCtrlRegs.PIEACK			; Acknowledge PIE interrupt Group 1
		MOV 	@_PieCtrlRegs.PIEACK, #0x1
	.endif 

蓝色部分难道不是说明CLA可以间接修改PIEACK寄存器么?再回到刚开始的说明,CLA Datasheet中只列举了可以直接访问的寄存器,这么一来,

Q1:是不是CLA还可以间接访问其它寄存器!!!?如果是,是不是所有的寄存器都可以间接访问?

Q2:那么,在CLA使用C进行编写时,如何大批量的插入汇编代码进行编写呢。单句的话可以插入类似于 __asm("   MEALLOW ");语句,那么想插入一段汇编代码的时候也是如此一条一条直接添加就好了吗?有什么影响呢?

先谢谢啦!

Seven Han:请参考CLA FAQ:
processors.wiki.ti.com/…/Control_Law_Accelerator_(C2000_CLA)_FAQ

1. 您好,在28035 CLA manual中,我们可以看到对于CLA可以访问的寄存器的说法“The CLA hasdirect access to the ePWM+HRPWM, Comparator and ADC Result registers.”。注意direct,如下图所示

问题:

我在阅读“BLPFC”-> BridgelessPFC-DPL-ISR.asm文档时,在最后结束部分看到如下语句,用来清楚中断标志:

Interrupt management before exit

	.if(EPWMn_DPL_ISR=1)

		.if(EPWM1)
			MOVW 	DP,#_EPwm1Regs.ETCLR
			MOV 	@_EPwm1Regs.ETCLR,#0x01			; Clear EPWM1 Int flag
		.endif ; EPWM1
	
		.if(EPWM2)
			MOVW 	DP,#_EPwm2Regs.ETCLR
			MOV 	@_EPwm2Regs.ETCLR,#0x01			; Clear EPWM2 Int flag
		.endif ; EPWM2
	
		MOVW 	DP,#_PieCtrlRegs.PIEACK			; Acknowledge PIE interrupt Group 3
		MOV 	@_PieCtrlRegs.PIEACK, #0x4
	.endif ; EPWMn_ISR

	.if(ADC_DPL_ISR=1)
	; Case where ISR is triggered by ADC 
;		MOVW 	DP,#_AdcRegs.ADCINTFLGCLR
;		MOV 	@AdcRegs.ADCINTFLGCLR, #0x01	; Clear ADCINT1 Flag

		MOVW 	DP,#_PieCtrlRegs.PIEACK			; Acknowledge PIE interrupt Group 1
		MOV 	@_PieCtrlRegs.PIEACK, #0x1
	.endif 

蓝色部分难道不是说明CLA可以间接修改PIEACK寄存器么?再回到刚开始的说明,CLA Datasheet中只列举了可以直接访问的寄存器,这么一来,

Q1:是不是CLA还可以间接访问其它寄存器!!!?如果是,是不是所有的寄存器都可以间接访问?

Q2:那么,在CLA使用C进行编写时,如何大批量的插入汇编代码进行编写呢。单句的话可以插入类似于 __asm("   MEALLOW ");语句,那么想插入一段汇编代码的时候也是如此一条一条直接添加就好了吗?有什么影响呢?

先谢谢啦!

XIAO ZHOU:

回复 Seven Han:

Seven Han你好,谢谢你的回复。

1.  我看了你的给我的链接,但是我并不确定你想给我的看的内容是哪一块。因为链接的内容中并没有对间接访问进行说明。也没有讲是否可以通过其它方式访问寄存器。

2. 我阅读了部分链接中的内容,还看到了以下内容:

Q: If the CLA takes an ADC interrupt, can it then clear the ADC's interrupt flag?
No. The CLA can not access the ADC configuration registers so it can not clear the ADC interrupt flag. 它表明了CLA不能AdcResult以外的寄存器,但是实际在代码中,在我问题中的第二张图中,可以看到CLA不仅用间接寻址修改了PIEACK寄存器,还修改了PIEFLGCLR寄存器,这岂不是跟官方的说明相悖?希望能够在这里得到解答,另外,还是想继续问下第二个问题:在CLA使用C进行编写时,如何大批量的插入汇编代码进行编写呢。单句的话可以插入类似于 __asm("   MEALLOW ");语句,那么想插入一段汇编代码的时候也是如此一条一条直接添加就好了吗?有什么影响呢?谢谢,祝好!

1. 您好,在28035 CLA manual中,我们可以看到对于CLA可以访问的寄存器的说法“The CLA hasdirect access to the ePWM+HRPWM, Comparator and ADC Result registers.”。注意direct,如下图所示

问题:

我在阅读“BLPFC”-> BridgelessPFC-DPL-ISR.asm文档时,在最后结束部分看到如下语句,用来清楚中断标志:

Interrupt management before exit

	.if(EPWMn_DPL_ISR=1)

		.if(EPWM1)
			MOVW 	DP,#_EPwm1Regs.ETCLR
			MOV 	@_EPwm1Regs.ETCLR,#0x01			; Clear EPWM1 Int flag
		.endif ; EPWM1
	
		.if(EPWM2)
			MOVW 	DP,#_EPwm2Regs.ETCLR
			MOV 	@_EPwm2Regs.ETCLR,#0x01			; Clear EPWM2 Int flag
		.endif ; EPWM2
	
		MOVW 	DP,#_PieCtrlRegs.PIEACK			; Acknowledge PIE interrupt Group 3
		MOV 	@_PieCtrlRegs.PIEACK, #0x4
	.endif ; EPWMn_ISR

	.if(ADC_DPL_ISR=1)
	; Case where ISR is triggered by ADC 
;		MOVW 	DP,#_AdcRegs.ADCINTFLGCLR
;		MOV 	@AdcRegs.ADCINTFLGCLR, #0x01	; Clear ADCINT1 Flag

		MOVW 	DP,#_PieCtrlRegs.PIEACK			; Acknowledge PIE interrupt Group 1
		MOV 	@_PieCtrlRegs.PIEACK, #0x1
	.endif 

蓝色部分难道不是说明CLA可以间接修改PIEACK寄存器么?再回到刚开始的说明,CLA Datasheet中只列举了可以直接访问的寄存器,这么一来,

Q1:是不是CLA还可以间接访问其它寄存器!!!?如果是,是不是所有的寄存器都可以间接访问?

Q2:那么,在CLA使用C进行编写时,如何大批量的插入汇编代码进行编写呢。单句的话可以插入类似于 __asm("   MEALLOW ");语句,那么想插入一段汇编代码的时候也是如此一条一条直接添加就好了吗?有什么影响呢?

先谢谢啦!

XIAO ZHOU:

回复 XIAO ZHOU:

更正:修改了AdcRegs.ADCINTFLGCLR寄存器和PieCtrlRegs.PIEACK寄存器。

赞(0)
未经允许不得转载:TI中文支持网 » 请问28035 CLA能否“间接访问”CPU中的其它寄存器? 有实例说明,例如PIEACK!!
分享到: 更多 (0)