MSP430 Launchpad
Microcontrolador de sinal misto
Consumo ultra-baixo
Timers de 16 bits com 24 pins ADC de 10 bits (no utilizado)
Objectivos
Ligar e desligar os LEDs - Interrupt Implementao do PWM Controlo de intensidade luminosa do LED Projecto terico de um circuito condicionador
de sinal
Definimos o interrupt enable da porta 1 (P1IE) como ligado para o bit correspondente ao boto S2 (P1.3). Activamos a resistncia de pull-up do boto ao ser pressionado, esta aco detectada. Limpamos a flag do interrupt, permitindo que seja utilizada.
Instruo que activa as interrupes Ciclo for infinito - a CPU fica a aguardar uma instruo.
Funo que contem as instrues de interrupo; Desliga o LED - define a alterao do estado de sada do pin,
atravs P1OUT.
LED_R (BIT0) alterna entre ligado e desligado, 0 e 1; Limpamos a flag do interrupt;
MC_2 realiza uma contagem de 0x0000 ate 0xFFFF, reinicia partindo de 0x0000 e repete;
MC_3 realiza uma contagem crescente de 0x0000 ate CCR0, faz uma contagem decrescente ate 0x0000 e repete.
Para programar o timer para um destes modos necessrio utilizar o registo de controlo do MSP430. Para a implementao do PWM iremos utilizar o Timer A, num ciclo de 1000 unidades (acabando em 999 por iniciar em 0).
Comeamos por definir os parmetros: definimos trs constantes (o bit relativo ao LED verde, o valor do ciclo de PWM e a constante utilizada para os ciclos de atraso).
Definimos trs variveis teis ao desenvolvimento do programa : flag, count e PWM_duty, as primeiras iniciadas a zero e este ltimo iniciado igual ao valor do perodo do PWM. Desligamos os watchdog timer pelos motivos acima referidos;
Definimos agora o LED verde como sada para o sinal PWM definindo o bit 6 dos registos P1DIR e P1SEL igual a 1. Neste caso, pretendemos utiliz-lo como TA0.1 ou Timer0_A.
Definimos ainda o modo de sada atravs do registo TA0CCTL1 (Timer0_A3 Capture/Compare Control 1),
Traduz-se nos momentos em que a sada est em funcionamento ou no. E Este registo de controlo utiliza dois valores do timer, CCR1 e CCR0, para actuar (Nos casos em que existe apenas uma aco, esta executada quando o timer atinge CCR1).
Na implementao do PWM iremos utilizar o Output Mode 7, mantendo a sada ligada at CCR1 e desligada at CCR0, momento em que liga e repete.
// Clock SMCLK, timer em modo 1 // Modo de sada 7 (reset/set) // Perodo do PWM // Tempo de Duty Cycle
if((PWM_duty < PWM_periodo) && (flag == 0)) { PWM_duty += 0.25*PWM_periodo; } else { flag = 1; } if((PWM_duty > 0) && (flag == 1)) { PWM_duty -= 0.25*PWM_periodo; } else { flag = 0; } TA0CCR1 = PWM_duty; }
1 Andar
=
4 3+4
1+2 1
2 1 1
= 2 1 Rc = 100 :
= 2 1 = = 100 Vout = [0,4 ; 2 ] V
2 Andar
=
2,50 2,00,4
2,5 1,6
=1+
7 9 7 = 6 6 16
= 3,125
0,4
25 16
= 0,625
3 Andar
= 3,125 0,625 = 2,5 = 0,625 0,625 = 0 ,
Circuito final
Gama de intensidades de entrada: 4 20 mA; Gama de tenses de sada: 0 2,5V.