Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Trabalho MSP430, Trabalhos de Cultura

TRABALHO SOBRE MICROPROCESSADOR MSP430

Tipologia: Trabalhos

2013

Compartilhado em 27/05/2013

marcos-silva-nly
marcos-silva-nly 🇧🇷

4.8

(14)

32 documentos

1 / 14

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
UNIVERSIDADE PAULISTA - UNIP
GRADUAÇÃO EM ENGENHARIA MECATRÔNICA
SISTEMAS MICROCONTROLADOS
TRABALHO SOBRE MICROCONTROLADOR MSP430
Marcos Carvalho da Silva RA: 967972--3
Jundiaí
Maio/2013
Os microcontroladores MSP430
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe

Pré-visualização parcial do texto

Baixe Trabalho MSP430 e outras Trabalhos em PDF para Cultura, somente na Docsity!

UNIVERSIDADE PAULISTA - UNIP

GRADUAÇÃO EM ENGENHARIA MECATRÔNICA

SISTEMAS MICROCONTROLADOS

TRABALHO SOBRE MICROCONTROLADOR MSP

Marcos Carvalho da Silva RA: 967972--

Jundiaí Maio/

Os microcontroladores MSP

A família MSP430 é uma família de microcontroladores de propósito geral de baixo consumo de potência desenvolvida pela Texas Instruments na década de

É composta por microcontroladores de 16 bits de arquitetura Von Neumann. Seu conjunto de instruções é formado por 27 instruções físicas e 24 instruções emuladas, totalizando 51 instruções. Devido às características de baixíssimo consumo de energia, alto desempenho e baixo custo, os microcontroladores MSP430 tornaram-se extremamente populares. Segundo a Texas Instruments, atualmente a família conta com cerca de 230 dispositivos diferentes, voltados tanto para aplicações gerais como específicas. Os microcontroladores da família MSP430 podem ser identificados como mostrado na figura abaixo:

Identificação dos microcontroladores MSP430.

A CPU – Principais Características

Os microcontroladores MSP430 possuem uma CPU de 16 bits de arquitetura RISC capaz de executar 27 instruções, a maioria delas em dois formatos diferentes, byte ou word , em até oito modos de endereçamento diferentes.

A CPU possui 16 registradores de 16 bits:

  • Um contador de programa (R0/PC);
  • Um ponteiro de pilha (R1/SP);
  • Um registrador de status que também pode ser usado como gerador de constantes (R2/SR/CG1);
  • Um gerador de constantes (R3/CG2) e
  • Doze registradores de propósito geral (R4 a R15).

R3 00 00000h R3 01 00001h R3 10 00002h R3 11 0FFFFh

Tabela - Gerador de Constantes

O conjunto de instruções

O conjunto de instruções do MSP430 é composto por 27 instruções físicas e mais 24 instruções emuladas, totalizando 51 instruções. As instruções físicas são as instruções convencionais executadas pela CPU que possuem opcodes próprios. As instruções emuladas são aquelas que tornam o código-fonte mais simples de ser lido e escrito, mas não possuem opcodes próprios. Elas são substituídas automaticamente pelo assembler por instruções físicas (TEXAS, 2011). Todas as instruções possuem 16 bits e podem ocupar uma, duas ou até três palavras na memória de programa, dependendo do modo de endereçamento utilizado.

Elas podem ser classificadas em três formatos diferentes:

  • Instruções de um operando;
  • Instruções de dois operandos e
  • Instruções de salto.

As instruções de um operando possuem o formato ilustrado na tabela abaixo:

Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Conteúdo 0 0 0 1 0 0 Opcode B/W As Registrador Rs Formato das instruções de um operando

O conjunto das instruções de um operando e seus respectivos opcodes são mostrados na tabela abaixo:

Opcode Mnemônico Operação 0 0 0 RRC Desloca um bit para a direita com carry 0 0 1 SWPB Inverte a posição dos bytes mais e menos significativos 0 1 0 RRA Desloca um bit para a direita aritmeticamente 0 1 1 SXT Estende sinal 1 0 0 PUSH Empilha 1 0 1 CALL Chama sub-rotina 1 1 0 RETI Retorna de interrupção

Conjunto de instruções de um operando

As instruções de dois operandos possuem o formato ilustrado na Tabela abaixo:

Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Conteúdo Opcode Registrador Rs Ad B/W As Reg. Destino (Rd) Formato das instruções de dois operandos

As informações que cada instrução carrega são explicadas a seguir:

  • Opcode: é o código de operação. É o conjunto de bits que especifica a operação a ser executada;

  • B/W: é o bit que especifica o formato da instrução. B/W=0 para instruções do formato word e B/W=1 para instruções do formato byte ;

  • As: indica o modo de endereçamento do registrador origem. Os quatro possíveis modos de endereçamento para registradores origem são mostrados na tabela abaixo:

As Modo de endereçamento

Descrição

0 0 Modo registrador O operando encontra-se no registrador Rn 0 1 Modo indexado O operando encontra-se no endereço de memória Rn + X 1 0 Modo indireto O operando encontra-se no endereço de memória contido em Rn 1 1 Indireto/auto incremento

O operando encontra-se no endereço de memória contido em Rn. Em seguida Rn é incrementado em 2 Modos de endereçamento do registrador origem

*** Ad:** indica o modo de endereçamento do registrador destino (Rd). Ad=0 indica modo registrador, enquanto Ad=1 indica modo indexado. *** Offset:** representa um número de 10 bits com sinal que é usado para calcular o novo valor do registrador PC caso a condição de salto seja satisfeita. Caso isso ocorra, o registrador PC é atualizado da seguinte forma:

A organização da memória

O mapa da memória do MSP430 é mostrado na figura abaixo:

Mapa da memória do MSP430. Figura retirada de (TEXAS, 2013).

A memória do MSP430 pode ser dividida em algumas regiões básicas:

  • Registradores de funções especiais: localizados entre as regiões 00h e 0Fh. Esses registradores possuem como função habilitar funções em alguns módulos.
  • Registradores de periféricos: localizados entre as regiões 0010h e 01FFh são os registradores responsáveis por fazer a comunicação entre CPU e periféricos. Alguns destes registradores possuem 8 bits e outros 16 bits.
  • RAM: é a memória de dados utilizada para armazenar as varáveis do programa escrito pelo usuário. Inicia sempre no endereço 0200h e possui tamanho variável que depende do dispositivo.
  • ROM: é a memória que armazena o programa escrito pelo usuário. O início da faixa depende do dispositivo. O fim é localizado no endereço 0FFFh.
  • Tabela do vetor de interrupções: é uma região da memória ROM que armazena os endereços das rotinas de tratamento de interrupções. Está localizada entre os endereços 0FFE0h e 0FFFFh.

selecionado como entrada. Bit=1 indica que o respectivo pino está selecionado como saída.

  • PXIN : cada bit deste registrador assume o valor do sinal de entrada no pino correspondente quando este é configurado como entrada.
  • PXOUT : cada bit deste registrador corresponde ao valor do sinal de saída no pino correspondente quando este é configurado como saída.
  • PXIFG : cada bit deste registrador indica se há ou não interrupções pendentes. Bit=0 indica que não há interrupção pendente. Bit=1 indica que há interrupção pendente.
  • PXIE : habilita (quando o bit=1) ou desabilita (bit=0) interrupção no pino correspondente.
  • PXIES : cada bit deste registrador seleciona a borda de interrupção do pino correspondente. Bit=0 indica que o flag PXIFG passa do valor 0 para 1 na transição de nível lógico baixo para alto. Bit=1 indica que o flag PXIFG é passa do valor 0 para 1 na transição de nível lógico alto para baixo.

Módulo básico de clock

O módulo básico de clock , também conhecido como BCM, é o periférico responsável por gerar os sinais de clock que comandam o funcionamento dos componentes do microcontrolador.

  • VLO ( very low-frequency oscillator ) : presente em poucos dispositivos, ele é um oscilador analógico interno de baixa frequência.
  • LFXT1 ( low - or high – frequency crystal oscillator ) : presente em todos os dispositivos. É um sinal de clock externo geralmente ligado à um cristal de 32 kHz, mas que pode ser conectado à cristais de alta frequência de até alguns mega-hertz.
  • XT2 ( high-frequency crytal oscillator ) : presente em poucos dispositivos, é similar ao LFXT1, exceto que é restrito a altas frequências.
  • DCO ( digital controlled oscilator ) : presente em todos os dispositivos, ele é um dos grandes destaques do MSP430. É basicamente um oscilador RC altamente controlável. A unidade básica de clock fornece como saída três sinais de clock que são distribuídos entre os componentes do microcontrolador. São eles:
  • MCLK ( Master clock ) : é o sinal de clock usado pela CPU e por alguns periféricos.
  • SMCLK ( Subsystem master clock ) : é o sinal de clock que é distribuído aos periféricos. Normalmente possui a mesma frequência do MCLK.
  • ACLK ( Auxiliary clock ) : também é distribuído a alguns periféricos. Sua frequência é tipicamente 32 kHz. A origem do sinal MCLK pode ser qualquer um dos sinais externos ou do oscilador interno DCO. O sinal SMCLK pode ter como origem o oscilador interno DCO ou algum sinal de baixa frequência dependendo do dispositivo. O sinal ACLK pode vir de qualquer uma das entradas de baixa frequência, dependendo também do dispositivo. O módulo básico de clock é controlado por quatro registradores de 8 bits: DCOCTL, BCSCTL1, BCSCTL2 e BCSCTL3. A grande maioria das funções desses registradores é o controle de características analógicas dos osciladores internos, tais como a seleção de resistências e capacitâncias responsáveis pelo estabelecimento das frequências de operação.

Watchdog Timer O watchdog timer é o periférico que possui a função de reiniciar o microcontrolador quando algum problema de software ocorre. Se a função watchdog não for necessária na aplicação, este periférico pode ser configurado como temporizador, gerando interrupções em intervalos de tempo regulares. Sempre que o microcontrolador é reiniciado, o watchdog timer é configurado para funcionar no modo watchdog com intervalo de 32.768 ciclos de clock. O usuário deve desativar ou parar a contagem do watchdog antes que ela alcance seu valor máximo, caso contrário o microcontrolador será reiniciado. A figura 8 mostra o diagrama de blocos do watchdog timer. Nesta figura são mostrados os principais componentes do watchdog timer , entre eles destacam-se o contador de 16 bits, também chamado de WDTCNT e o registrador de controle WDTCTL. O contador WDTCNT é o componente principal do watchdog timer , através dele é feita a contagem dos pulsos de clock que determinam o funcionamento deste periférico. Seu valor não pode ser acessado por software. O contador WDTCNT pode ser configurado para contar até 64, 512, 8.192 ou 32.768 e pode ser excitado pelos sinais de clock ACLK ou SMCLK.

Timer A

O timer A é o temporizador mais versátil, de propósito geral e presente em todos os dispositivos da família MSP430 (DAVIES, 2008). Seu hardware é dividido em dois blocos: o bloco temporizador e os canais de captura/comparação. O bloco temporizador tem seu funcionamento baseado no contador de 16 bits TAR. Esse contador pode ser excitado pelos sinais ACLK e SMCLK gerados pelo módulo básico de clock ou por sinais externos TACLK e INCLK. Cada um desses sinais pode ter sua frequência dividida em dois, quatro ou oito se necessário. O contador TAR pode operar de três formas diferentes:

  • Modo crescente: contando até o valor armazenado no registrador TACCR0 e reiniciando a contagem logo em seguida;
  • Modo contínuo: contando até 0FFFFh e reiniciando a contagem quando ocorrer overflow do registrador TAR;
  • Modo crescente/decrescente: contando de forma crescente até o valor armazenado em TACCR0 e então decrescente até 00000h, reiniciando o processo. O bloco temporizador é controlado pelo registrador TACTL e possui uma flag de interrupção TAIFG que assume nível lógico alto sempre que a contagem no registrador TAR se torna igual a 0000h. O bloco de captura/comparação tem seu funcionamento baseado no registrador TACCRx. Este bloco pode funcionar no modo captura, capturando o valor do registrador TAR quando uma de suas entradas for excitada ou como comparador, solicitando interrupção quando o valor do registrador TAR se torna igual ao valor armazenado em TACCRx. O bloco de captura/comparação é controlado pelo registrador TACCTLx e possui um flag de interrupção CCIFG. Além da interrupção, este bloco pode fornecer como saída o sinal OUTx que pode ser configurado pelo usuário.

Linguagens de Programação

As linguagem de programação utilizadas no Microcontrolador MSP430 são:

C/C++, Assembly

Exemplo:

Lê-se repetidas vezes o valor do pino de entrada P1.3, que está ligado à chave S

*Se o valor lido é 0 (chave pressionada), o led vermelho é ativado

  • Se o valor lido é 1 (chave em posição normal), o led vermelho é desativado.
  • Altere o exemplo para que ao pressionar a chave S2 (P1.3), uma variável seja incrementada. Os LEDs devem indicar se o valor do contador é:
  • Par: LED vermelho ativado (P1.0).
  • Ímpar: LED verde ativado (P1.6).

int main( void ) {

int count = 0;

WDTCTL = WDTPW + WDTHOLD; // Desliga Watchdog timer

P1DIR = 0x01 + 0x40; // Define pinos 1.0 e 1.6 como saída (

P1REN = 0x08; // Habilita pullup / pulldown do pino 1.3 (0000 1000)

P1OUT = 0x08; // Define pullup para o pino 1.3 (0000 1000

while(1) {

if( (P1IN & 0x08) == 0 ) // Verifica se pino 1.3 está em nível lógico 0

count = count + 1; // Incrementa variável count

if(count%2 == 0) { // Se o valor de count é par

P1OUT |= 0x01; // Ativa LED vermelho (P1.0)

P1OUT &= 0xbf; // Desativa LED verde (P1.6)

else {

P1OUT |= 0x40; // Ativa LED verde (P1.6)

P1OUT &= 0xfe; // Desativa LED vermelho (P1.0)