Microcontroladores - Dudas con interrupciones timer msp430G2553

 
Vista:
sin imagen de perfil

Dudas con interrupciones timer msp430G2553

Publicado por Luis (1 intervención) el 26/02/2013 17:24:29
Hola, estoy programando un MSP430G2553 (con la launchpad) en C. Quiero que mi programa me genere una interrupción cada 1 segundo que me apague y me encienda el led1 (pin p1.0).
Utilizo como fuente de reloj la ACLK = 32768 Hz.
Según mis cálculos y unos apuntes que tengo de una asignatura que cursé en la carrera, el cálculo de TACCR0 es el siguiente:
(TACCR0+1)(1/(frecuencia_del_reloj))=1 segundo (ya que quiero que cuando el Timer llegue a TACCR0 me genere una interrupción cada segundo) -> TACCR0 = frecuencia_del_reloj -1;

Nota: frecuencia_del_reloj es en este caso la ((frecuencia de ACLK) / ID_3 )=32768/8 = 4096.

Por lo que nos queda una TACCR0 = (32768/8)-1=4095;
Pues bien, este valor es el que le meto a TACCR0 (habilitando la interrupción por TACCR0) y no me genera una interrupción cada segundo, más bien diría que cada 2 segundos aproximadamente.

Os copio el código de mi programa:

#include <msp430g2553.h>



void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR |= 0x01; // P1.0 como salida (para el led 1)
CCTL0 = CCIE; //habilito la interrupcion por CCR0
CCR0 = 4095; //para que me genere una interrupción cada segundo.
TACTL = TASSEL_1 + MC_1 + ID_3; //fuente de reloj ACLK=32768Hz, modo up y el divisor de //de frecuencia ID_3=8 de modo que la frecuencia real es 4096Hz.

_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
}

// Timer A0 interrupt service routine
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A (void)
{
P1OUT ^= 0x01; // Toggle P1.0
}

Alguien sabe en qué me estoy equivocando, o como saber exactamente el período de cuenta?

Un saludo y gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Dudas con interrupciones timer msp430G2553

Publicado por Raul (2 intervenciones) el 30/12/2014 04:27:56
Amigo, no te estas equivocando, tu lo has dicho, tienes un prendido y apagado del led cada dos segundos, lo que no te das cuenta es que cada interrupcion de un segundo, prende o apaga el led, osea un periodo de prendido y apagado dura dos segundos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Dudas con interrupciones timer msp430G2553

Publicado por Linda (1 intervención) el 26/01/2016 22:02:35
Me urge sacar un proyecto, con el MSP430G2553, con interrupciones, si estas interesado contactame por favor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Dudas con interrupciones timer msp430G2553

Publicado por Raúl (2 intervenciones) el 27/01/2016 01:47:28
No ví como contactarte... mi correo: luisrcastan(arroba)gmail(punto)com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar