Christopher Takahashi wrote:

I just decided to test to see if MCLK was still running off of DCO so I
reconfigured the DCO to run at max speed (about 3.5Mhz) and found my instructions were running at that speed too. So my new question is why is it that when the SELMx bits in BCSCTL2 are set to 11 do I get the DCO for my MCLK. While running I confirmed that these bits are in fact set.

check OFIFG the oscillator fault flag.
you have to wait until the crystal is started up (see the mspgcc examples for some code, e.g. the uart_test), otherwise it switches back to the DCO for MCLK.

note that
  mov.b   #3, &0x0021 ;#0x0003
is 5 cycles: http://mspgcc.sourceforge.net/cgi-bin/assemble.py?line=mov.b+%233%2C+%260x0021

while
  mov.b   #0, &0x0021 ;#0x0000
is 4 cycles (this one is using the constant generator the one above not)
http://mspgcc.sourceforge.net/cgi-bin/assemble.py?line=mov.b+%230%2C+%260x0021

i'm not sure how you count 3 cycles in the snippet below.

if you use e.g.
while (1) {
  P1OUT |= BIT1;                //bis.b   #2, &0x0021
  P1OUT &= ~BIT1;           //bic.b   #2, &0x0021
}
you will have a pulse width of 4 cycles (BIT1 = 0x02 comes from the constant generator), the pause will be 2 cycles longer due to the addidional jmp instruction.

HTH
chris


Here is what my asm lists for the address of BCSCTL2:
00000057 l       *ABS*  00000000 BCSCTL1
00000058 l       *ABS*  00000000 BCSCTL2
And here is what GDB says is there:

(gdb) p /t *0x58
$1 = 11001000

but under these conditions I'm still getting the DCO for the main clock.

Thanks,
-Chris




On Wed, 14 Jul 2004, Christopher Takahashi wrote:


Hello everybody,

I'm having some trouble with my MSP430F1132. I am initializing my Basic clock module with the following and have a 4MHz crystal attached. My MSP430 is running from JTAG power at 2.5V.


#define BCSCTL1_INIT    XTS
#define BCSCTL2_INIT    SELM0|SELM1|SELS

BCSCTL1 = BCSCTL1_INIT;
BCSCTL2 = BCSCTL2_INIT;

When I set P1.4 to its peripheral mode I get SMCLK out and I see 4Mhz on my scope at that pin. When I instruct the MSP430 to toggle P1.0 I get an on period of 40uS. It takes 3 cycles to toggle the bit so that period should correspond to 3 CPU cycles or 1 cycle of 13uS. This yields a frequency of 75KHz. Clearly if my SMCLK and my MCLK are clocked from the same source the two calculated frequencies should be consistent. I have also used two different F1132s in the same circuit with no difference.

Additionally I have a timer interrupt configured to happen every mS which gets successfully executed at the proper frequency.

If for some reason my instructions are being executed at 75kHz I have a big problem. Does any one know whats up?

Below is the code for my bit toggle loop.

   while (1) {
       P1OUT = 0x03;
   e0b6:   f2 40 03 00     mov.b   #3, &0x0021 ;#0x0003
   e0ba:   21 00
       P1OUT = 0x00;
   e0bc:   c2 43 21 00     mov.b   #0, &0x0021 ;r3 As==00
   e0c0:   fa 3f           jmp $-10        ;abs 0xe0b6
   }



Reply via email to