MSP430 - Introdução
Home » Microcontroladores » MSP430 – Introdução
Muito bem-vindo prezado leitor a mais um artigo sobre microcontroladores. Hoje vamos dar início aos nossos primeiros estudos sobre o MSP430, um microcontrolador de propriedade da Texas Instruments.
Para isso nós iremos utilizar uma plataforma de desenvolvimento, também conhecida como MSP430 LaunchPad. Considerado um kit de baixo custo, vendido por cerca de dez dólares, essa plaquinha pode ser conectada ao seu computador através da porta USB, sendo que possui os circuitos necessários para a gravação e o debug na plataforma.
Observe na figura abaixo uma foto da placa:
Figura 1 – Placa de desenvolvimento LaunchPad
Na plataforma você pode utilizar diferentes tipos de microcontroladores referente a família. No meu caso estarei utilizando o MSP430G2553. Confira algumas das características do mesmo:
Arquitetura Von Neumann, RISC;
16 KB de memória Flash;
512 Bytes de memória RAM;
24 GPIOs;
2 Timers de 16 bits;
Módulos ADC e comparadores;
UART, SPI, I2C.
Você poderá encontrar maiores detalhes no datasheet do componente, que pode ser baixado no site da Texas.
Obviamente, para desenvolvermos na plataforma, necessitamos de um ambiente compatível. Existem algumas plataformas de desenvolvimento que podemos utilizar na programação do MSP430, como o IAR, CCS ou ENERGIA por exemplo. Este último é baseado na mesma em que foi desenvolvido a IDE do Arduino por exemplo.
Para os nossos estudos, estaremos utilizando o CCS, ou Code Composer Studio, que é uma plataforma desenvolvida e mantida pela própria Texas Instruments.
Então o primeiro passo é efetuar o download do programa. Ele pode ser baixado neste link. Caso não tenha um usuário, terá que fazer um pequeno cadastro.
Na instalação entre outras informações típicas, será solicitado quais os componentes referentes aos produtos que você deseja instalar. Selecione como você acha melhor, sabendo apenas que estamos trabalhando com o MSP430. No meu caso deixei assinalado as seguintes opções:
Figura 2 – Opções de instalação
Após instalar o programa, logo ao inicia-lo, será solicitado o local para salvar o Workspace ou área de trabalho. É o local onde ficará os arquivos dos seus projetos.
Em seguida, vamos iniciar um novo projeto.
File >> New >> CCS Project
Na próxima tela você deve configurar para qual microcontrolador você estará programando. No meu caso estou utilizando o MSP430G2553, portanto ficará desta forma:
Figura 3 – Tela Novo Projeto
Primeiro exemplo – Saídas digitais
Agora que iniciamos um novo projeto, vamos fazer nosso primeiro exemplo. E Claro, será o nosso clássico pisca led. Antes de ir diretamente para o código, vamos entender os registradores que vamos utilizar. Acompanhe:
PxDIR = Através deste registrador, estaremos configurando determinado bit da porta como entrada ou saída. O "x" diz respeito ao número do PORT. No caso do MSP430 temos o PORT1 e o PORT2.
Se desejarmos que o pino atue como entrada, atribuímos o valor de 0 ao registrador.Caso contrário, se desejamos que o pino atua como saída, atribuímos o valor de 1 ao registrador.
PxOUT = Aqui usaremos este registrador para escrever o valor que queremos na saída. Assim se atribuirmos 1 a ele, teremos nível lógico alto, e 0 teremos nível lógico baixo.
Agora, vamos ao código para o nosso primeiro exemplo:
#include <msp430.h> int main(void) { WDTCTL = WDTPW | WDTHOLD;	// Parar watchdog timer P1DIR = 0x40;	// Define porta como entrada ou saída // 0 para entrada, 1 para saída P1OUT = 0x00;	// Inicia em LOW while(1){ P1OUT = 0x40;	// Acende o led __delay_cycles(1000000);	// Aprox 1 segundo P1OUT = 0x00;	// Desliga o led __delay_cycles(1000000);	// Aprox 1 segundo } }
P1DIR = 0x40;	// Define porta como entrada ou saída
// 0 para entrada, 1 para saída
P1OUT = 0x00;	// Inicia em LOW
P1OUT = 0x40;	// Acende o led
__delay_cycles(1000000);	// Aprox 1 segundo
P1OUT = 0x00;	// Desliga o led
Ao compilar e gravar o código, um pequeno led deverá estar piscando na sua launchpad com intervalo de aproximadamente 1 segundo.
Ao escrever valores nos registradores, você pode fazê-lo de formas diferentes. No código acima utilizei valores em hexadecimais. Porém você pode utilizar em outras notações, como binário por exemplo. Basta apenas fazer a conversão. Para compreender o porquê de escrevermos o valor de 0x40, continue acompanhando abaixo.
Antes disso, é interessante mencionar outra forma que você pode fazer essa atribuição de valores, que é utilizando a comando BIT. Observe abaixo como ficaria esse código com esta forma.
#include <msp430.h> int main(void) { WDTCTL = WDTPW | WDTHOLD;	// Parar watchdog timer P1DIR = BIT6;	// Define porta como entrada ou saída // 0 para entrada, 1 para saída P1OUT = 0x00;	// Inicia em LOW while(1){ P1OUT = BIT6;	// Acende o led __delay_cycles(1000000);	// Aprox 1 segundo P1OUT = 0x00;	// Desliga o led __delay_cycles(1000000);	// Aprox 1 segundo } }
P1DIR = BIT6;	// Define porta como entrada ou saída
P1OUT = BIT6;	// Acende o led
Porque BIT6 ?
Se observar no manual da sua placa de desenvolvimento, ou mesmo na própria placa, você verá que temos um led conectado em P1.0 e outro led conectado em P1.6. No exemplo acima estou utilizando o que está ligado ao P1.6. Se eu quisesse utilizar o outro led que no meu caso é o vermelho, simplesmente poderia escrever BIT0 ao invés de BIT6.
Agora você entendeu porque utilizamos 0x40 em P1OUT. Se você efetuar a conversão deste valor em hexadecimal para a notação binária por exemplo, encontrará o valor de 0b01000000. Ou seja, estamos atribuindo o valor de 1 para o bit6, o que por consequência acenderá o nosso led o qual está conectado no PORT1.
A mesma coisa efetuamos no comando anterior no registrador P1DIR, dizendo ao mesmo que só queremos que o bit6 do PORT1 seja configurado como saída.
Esse primeiro artigo fica apor aqui. Acompanhe o vídeo abaixo onde efetuamos essa programação e testamos na prática. Abraço e até a próxima!