Estoy haciendo un proyecto simple con MSP430FR6989 , donde estoy convirtiendo una señal analógica a una digital, cuando finaliza la conversión, saltará a un ISR e incrementará un entero.
Podemos configurar el ADC12_B (módulo ADC para el microcontrolador) para iniciar el muestreo y la conversión configurando el bit ADC12SC desde el registro ADC12CTL0, o mediante varios disparadores específicos del dispositivo.
(
(
Estoy configurando mi MSP430 para comenzar a convertir utilizando el disparador de salida TA0 CCR1 ( ADC12SHSx = 001 )
Con la información que tengo, me di cuenta de que si el registro CCIF de TA0CCTL1 se establecía, se activaría una conversión ADC, y cuando la conversión haya finalizado y almacenados en el búfer ADC, se activará una rutina de servicio de interrupción
Escribí mi código de acuerdo con la información que tengo, construí el proyecto y lo depuré, pero durante mi sesión de depuración mi MSP430 nunca salta a mi rutina ISR.
¿Puede alguien ayudarme con ese problema?
Esta es una muestra del código que he escrito:
dentro de la función main()
:
int main (void)
{
//code
init_Timer ();
//configures TA0 CCR1 to 50 ms
init_ADC ();
//ADC12SHSx = 001 (Trigger is TA0 CCR1)
//ADC12IER0 = ADC12IE0; enables ADC12 Interrupt
ADC12CTL0 = ADC12CTL0 | ADC12ENC; //enable Conversion
_BIS_SR(GIE);//enable global interrupt
//rest of code
}
dentro de la función ISR
#pragma vector = ADC12_VECTOR
__interrupt void ADC12_ISR (void)
{
static int x = 0;
++x;
}
EDIT_0
dentro de la función init_ADC ()
void init_ADC (void)
{
ADC12CTL0 = ADC12ON | ADC12SHT0_2;
//ADC ON, 16 ADC12CLK
ADC12CTL1 = ADC12SHS_1 | ADC12SHP | ADC12SSEL_1;
//TA0 CCR1 Output, SAMPCON from Sample Timer, ACLK
ADC12CTL2 = ADC12RES__12BIT;//12 bit resolution
ADC12MCTL0 = ADC12INCH_10;//A10 P9.2
ADC12IER0 = ADC12IE0;//enable MEM0 interrupt (if it's value changed)
ADC12IFGR0 = ADC12IFGR0 & (~ADC12IFG0);
}
Función init_Timer ()
interna
void init_Timer (void)
{
TA0CTL = MC__UP | TASSEL__ACLK;//counts to TA0CCR0, and source from ACLK
TA0CCR0 = 1667;//50 ms count = 50/.03 (Tperiod of ACLK = .03)
TA0CCR1 = 1667;// 50 ms
}
FIN de EDIT_0