The following code fragment is from objdump, and demonstrates a 
problem.  The 
bit fields for the ADC registers are being treated as 2 8-bit entities 
instead of a single 16 bit entity.  As such, the compiler is generating code 
to do byte accesses to registers that may be accessed only as words.  

        Based on my observations, the MSP430 is simply throwing away the 
acceses.  No 
values are ever being set in the high byte of any of the words.

        These structures are defined in adc12.h, in the include directory.

        --John

      adc12.ctl0.sht0       = 3;                // Sample-and-hold times for 
channels 0..7  (~6.5us, 4.9152Mhz / 32)
    98be:   3d 40 a1 01    mov   #417, r13   ;#0x01a1
    98c2:   6e 4d          mov.b @r13, r14   ;
    98c4:   7e f0 f0 ff    and.b #-16, r14   ;#0xfff0
    98c8:   7e d0 03 00    bis.b #3,   r14   ;#0x0003
    98cc:   cd 4e 00 00    mov.b r14,  0(r13)   ;
      adc12.ctl0.sht1       = 3;                // Sample-and-hold times for 
channels 8..15 (~6.5us, 4.9152Mhz / 32)
    98d0:   6e 4d          mov.b @r13, r14   ;
    98d2:   7e f0 0f 00    and.b #15,  r14   ;#0x000f
    98d6:   7e d0 30 00    bis.b #48,  r14   ;#0x0030
    98da:   cd 4e 00 00    mov.b r14,  0(r13)   ;


Reply via email to