Configurar el registro UCSCTL0 MSP430F5529

0

Primero que nada: soy nuevo en el desarrollo de microcontroladores, así que perdóneme por la simple pregunta. Estoy tratando de aprender para mi equipo de robótica FIRST para que podamos usar el MSP430 para manejar algunos sensores adicionales.

Estoy trabajando para comprender / configurar el Sistema de Reloj Unificado. Quiero que se ejecute en la configuración de 25 MHz. He estado leyendo la guía de familia y la hoja de datos específica del dispositivo. Creo que tengo un entendimiento básico. Mi código está abajo:

/*
* Objective: have SMCLK run at ~25 MHz for driving an SPI device
*/
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
__bis_SR_register(SCG0); //Disable FLL
UCSCTL0 = DCO0+DCO1+DCO2+DCO3+DCO4 ; //DCO 31 bit and MOD bit 0 [THIS IS NOT WORKING]
UCSCTL1 = DCORSEL_4; //Select frequency range on http://www.ti.com/lit/ds/symlink/msp430f5529.pdf page 31
UCSCTL2 = 0x000; //Select no loop divider
UCSCTL3 |= SELREF_2; //Set FLL reference to REFOCLK (only internal)
UCSCTL4 |= SELS__DCOCLK; //Select SMCLK clock source to be DCOCLK
P1DIR |= (BIT0 + BIT2); //irrelevant
P2DIR |= BIT2; //Set P2.2 as out direction to monitor clock
P2SEL |= BIT2; //Select P2.2 as SMCLK output defined in http://www.ti.com/lit/ds/symlink/msp430f5529.pdf pg 84
__bic_SR_register(SCG0); //Enable FLL

Sin embargo, esto no funciona bien, lo que resulta en una salida de osciliscopio muy extraña por dos razones:

  1. La forma de onda de la salida no es la forma en que generalmente veo la salida del reloj. Usualmente veo algo parecido a una ola de pecado, ahora veo algo muy diferente.

  2. La forma de onda muestra que el reloj funciona a ~ 2 MHz, no a los 25 deseados.

Ignora la línea verde.

    
pregunta Ashwin Gupta

1 respuesta

3

De acuerdo con la MSP430F5529 hoja de datos , esta MCU admite "hasta 25 MHz del reloj del sistema " tarifa. En consecuencia, lograr una operación estable de 39 MHz no es posible.

En msp430, a menudo es posible escribir valores de configuración de DCO en los registros que están fuera del rango de las capacidades de MCU. Parece que esto es lo que está pasando aquí.

Prueba a configurar UCSCTL1 a DCORSEL_4 . Eso debería dar una velocidad de reloj de MCU en el rango de 12 a 28 MHz según la hoja de datos.

    
respondido por el kfx

Lea otras preguntas en las etiquetas