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:
-
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.
-
La forma de onda muestra que el reloj funciona a ~ 2 MHz, no a los 25 deseados.
Ignora la línea verde.