This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Mystery Error

Other Parts Discussed in Thread: MSP430G2353

I'm pretty sure this problem was a product of my use of equates (.equ) in my code.  I use aliases for register names to make my code more readable, but in the segment below I was using the aliases incorrectly, using ADBitsToShift in one case and ADBitsToSend in another. 

At any rate, I've solved my problem! 


I am using CCS 5 under Windows XP and writing assembly language.  I recently started getting the following error message: 


 H:\MSP430\CCS Program Source\ccsv5\utils\bin\gmake -k all
'Building file: ../ComTest.asm'
 'Invoking: MSP430 Compiler'
 "H:/MSP430/CCS Program Source/ccsv5/tools/compiler/msp430_4.1.0/bin/cl430" -vmsp --abi=coffabi -g --include_path="H:/MSP430/CCS Program Source/ccsv5         /ccs_base/msp430/include" --include_path="H:/MSP430/CCS Program Source/ccsv5/tools/compiler/msp430_4.1.0/include" --advice:power=all --define=__MSP430G2353__ --diag_warning=225 --display_error_number --printf_support=minimal -k --asm_listing --syms_ignore_case --preproc_with_compile --preproc_dependency="ComTest.pp"  "../ComTest.asm"
"../ComTest.asm", INTERNAL ERROR!: AZ1 defined differently in each pass

This may be a serious problem.  Please contact customer support with a
description of the problem and a sample of the sourcefile that caused this
message to appear.

>> Compilation failure
gmake: *** [ComTest.obj] Error 1
gmake: Target `all' not remade because of errors.


The code section that is causing the problem looks like this:

        mov.b    &RxTxCount,RB            ; get the command modifier from RxTxCount as set by Dispatch routine
        rla.w    RB                        ; multiply by two for word offset
        and.b    #0FEh,RB                ; make sure lsb is zero
        mov.w    ADSCommands(RB),PC        ; jump to the command routine via the ADLongCommands
        .word    AD2F0                    ; 0 Multiply the saved F0 settings by 2 and send it
        .word    AD2F1                    ; 2 Multiply the saved F1 settings by 2 and send it
        .word    ADDF0                    ; 4 Divide the saved F0 by 2 and send it
        .word    ADDF1                    ; 6 Divide the saved F1 by 2 and send it
        .word    AZ0                     ; 8 Send F0
        .word    AZ1                     ; A Send F1
        .word    XMITErr                 ; go transmit error response 7
        .word    XMITErr                 ; go transmit error response 8
        mov.w    #F04,ADSPointer            ; point to the LSB of the stored frequency setting (highest address)
        jmp        AD2Exit
        mov.w    #F14,ADSPointer            ; point to the LSB of the stored frequency setting (highest address)
        push    ADSPointer                ; save the highest address pointer
        mov.b    #04h,ADSBitsToShift        ; set number of bytes to shift -- always 4
        call    #LongShiftLeft            ; shift it one bit left = multiply it by 2
        pop        ADSPointer
        jmp        ADSendControl
        mov.w    #F01,ADSPointer            ; point to the MSB of the stored frequency setting (lowest address)
        jmp        ADDExit
        mov.w    #F11,ADSPointer            ; point to the MSB of the stored frequency setting (lowest address)
        mov.b    #04,ADBitsToSend
        call    #LongShiftRight
        jmp        ADSendControl
        jmp        xmiterr

If anyone can give me any hints about what might be going on, they would be very much appreciated -- I'm stumped.

  • We have to reproduce exactly what you see before we can do anything.  And I cannot do that with what you show here.  The example does not provide the definition of many symbols, such as ADSendControl.  Please post a complete source file that can build on its own, and demonstrates the problem.

    Thanks and regards,