Other Parts Discussed in Thread: CONTROLSUITE
Hi all,
After compiling the example project “adc_soc_epwm_cpu01”, the program waits in a while loop until a variable changes it´s value from an interrupt routine. The problem is that the ASM generated code, seems to be worng, and the compared value isn´t the Varible itselft, but a register value AL.
Could you check it if there is a problem with the compiler? May be with the options of the compiler?
Find here below the code and the ASM lines:
Thanks
controlSUITE: demo adc_soc_epwm_cpu01
main():
while(!bufferFull);
bufferFull = 0; //clear the buffer full flag
-**************************************************************
.dwpsn file "C:/ti/controlSUITE/device_support/F2837xD/v150/F2837xD_examples_Cpu1/adc_soc_epwm/cpu01/adc_soc_epwm_cpu01.c",line 113,column 12,is_stmt,isa 0
;----------------------------------------------------------------------
; 113 | while(!bufferFull);
;----------------------------------------------------------------------
MOVW DP,#_bufferFull ; [CPU_U]
MOV AL,@_bufferFull ; [CPU_] |113
BF $C$L5,NEQ ; [CPU_] |113|
; branchcc occurs ; [] |113|
$C$L4:
CMPB AL,#0 ; [CPU_] |113| // AL is checked. Should be @_bufferFull
BF $C$L4,EQ ; [CPU_] |113| //
; branchcc occurs ; [] |113|
$C$L5:
.dwpsn file "C:/ti/controlSUITE/device_support/F2837xD/v150/F2837xD_examples_Cpu1/adc_soc_epwm/cpu01/adc_soc_epwm_cpu01.c",line 114,column 6,is_stmt,isa 0
;----------------------------------------------------------------------
; 114 | bufferFull = 0; //clear the buffer full flag
; 116 | //stop ePWM
;----------------------------------------------------------------------
MOVW DP,#_bufferFull ; [CPU_U]
MOV @_bufferFull,#0 ; [CPU_] |114|