Sei sulla pagina 1di 15

UNIVERSIDADE PAULISTA - UNIP GRADUAO EM ENGENHARIA MECATRNICA

SISTEMAS MICROCONTROLADOS TRABALHO SOBRE MICROCONTROLADOR MSP430

Marcos Carvalho da Silva RA: 967972--3

Jundia Maio/2013

Os microcontroladores MSP430

A famlia MSP430 uma famlia de microcontroladores de propsito geral de baixo consumo de potncia desenvolvida pela Texas Instruments na dcada de 1990. composta por microcontroladores de 16 bits de arquitetura Von Neumann. Seu conjunto de instrues formado por 27 instrues fsicas e 24 instrues emuladas, totalizando 51 instrues. Devido desempenho s caractersticas de baixssimo e baixo custo, os consumo de energia, alto

microcontroladores

MSP430

tornaram-se

extremamente populares. Segundo a Texas Instruments, atualmente a famlia conta com cerca de 230 dispositivos diferentes, voltados tanto para aplicaes gerais como especficas. Os microcontroladores da famlia MSP430 podem ser identificados como mostrado na figura abaixo:

Identificao dos microcontroladores MSP430.

A CPU Principais Caractersticas

Os microcontroladores MSP430 possuem uma CPU de 16 bits de arquitetura RISC capaz de executar 27 instrues, a maioria delas em dois formatos diferentes, byte ou word, em at oito modos de endereamento 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 tambm pode ser usado como gerador de constantes (R2/SR/CG1); * Um gerador de constantes (R3/CG2) e * Doze registradores de propsito geral (R4 a R15). Dentre os registradores mencionados acima, dois deles merecem ateno especial: O registrador de status (R2/SR) e o gerador de constantes (R3/CG2). O registrador R2/SR responsvel por armazenar as flags da CPU. Sua estrutura mostrada na figura baixo:

Figura 2 - Registrador R2/SR.

* O bit R2.0 o flag de carry. Ele assume o valor 1 sempre que uma operao na ULA gera um carry de sada; * O bit R2.1 o flag de zero. Ele assume valor 1 sempre que o resultado de uma operao na ULA igual a zero; * O bit R2.2 o flag de negativo. Ele assume valor 1 sempre que uma operao na ULA resulta em um nmero negativo; * O bit R2.3 o Global Interrupt Enable. Ele habilita todas as interrupes quando igual a 1 e desabilita todas as interrupes quando igual a 0;

* Bits R2.4 e R2.5 desligam a CPU e oscilador respectivamente quando iguais a 1; * Os bits R2.6 e R2.7 so bits de controle do mdulo bsico de clock e * O bit R2.8 o flag de overflow. Ele setado sempre que uma operao na ULA resulta em overflow. Outra funo do registrador R2, juntamente com o registrador R3, a de gerador de constantes. Quando esses registradores so usados em alguma instruo como de operando de origem em conjunto com os diferentes modos de endereamento, eles produzem constantes especficas, como mostradas na tabela abaixo:

Registrador origem (Rs) R2 R2 R2 R2 R3 R3 R3 R3

Modo de endereamento do registrador origem (As) 00 01 10 11 00 01 10 11

Constante gerada (0) 00004h 00008h 00000h 00001h 00002h 0FFFFh

Tabela - Gerador de Constantes

O conjunto de instrues

O conjunto de instrues do MSP430 composto por 27 instrues fsicas e mais 24 instrues emuladas, totalizando 51 instrues. As instrues fsicas so as instrues convencionais executadas pela CPU que possuem opcodes prprios. As instrues emuladas so aquelas que tornam o cdigo-fonte mais simples de ser lido e escrito, mas no possuem opcodes prprios. Elas so substitudas automaticamente pelo assembler por instrues fsicas (TEXAS, 2011). Todas as instrues possuem 16 bits e podem ocupar uma, duas ou at trs palavras na memria de programa, dependendo do modo de endereamento utilizado.

Elas podem ser classificadas em trs formatos diferentes: * Instrues de um operando; * Instrues de dois operandos e * Instrues de salto.

As instrues de um operando possuem o formato ilustrado na tabela abaixo:

Bit Contedo

15 0

14 0

13 0

12 1

11 0

10 0

6 B/W

5 As

Opcode

Registrador Rs

Formato das instrues de um operando

O conjunto das instrues de um operando e seus respectivos opcodes so mostrados na tabela abaixo:

Opcode 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0

Mnemnico RRC SWPB RRA SXT PUSH CALL RETI

Operao Desloca um bit para a direita com carry Inverte a posio dos bytes mais e menos significativos Desloca um bit para a direita aritmeticamente Estende sinal Empilha Chama sub-rotina Retorna de interrupo

Conjunto de instrues de um operando

As instrues de dois operandos possuem o formato ilustrado na Tabela abaixo:


Bit Contedo 15 14 13 12 11 10 9 8 7 6 5 As 4 3 2 1 0 Opcode Registrador Rs Ad B/W Reg. Destino (Rd)

Formato das instrues de dois operandos O conjunto de instrues de dois operando e seus respectivos opcodes so mostrados na tabela abaixo:
Opcode 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 Mnemnico MOV ADD ADDC SUBC SUB CMP DADD BIT BIC BIS XOR AND Operao Move a origem para o destino Soma a origem ao destino Soma a origem e o carry ao destino Subtrai a origem do destino (com carry) Subtrai a origem do destino Compara a origem com o destino Soma decimal da origem com o destino Testa os bits da origem e do destino Reseta o bit Lgica Ou Lgica Ou exclusivo Lgica E

Conjunto de instrues de dois operandos

As instrues de salto possuem o formato ilustrado na tabela abaixo:


Bit Contedo 15 0 14 0 13 1 12 11 10 9 8 7 6 5 4 3 2 1 0

Condio

Offset

Formato de instrues de Salto O conjunto de instrues de salto e suas respectivas condies so mostradas na tabela:
Condio 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 Mnemnico JNE/JNZ JEQ/JZ JNC/JLO JC/JHS JN JGE JL JMP Descrio Salta se o flag Z for igual a 0 Salta se o flag Z for igual a 1 Salta se o flag C for igual a 0 Salta se o flag C for igual a 1 Salta se o flag N for igual a 1 Salta se N XOR V for igual a 0 Salta se N XOR V for igual a 1 Salta incondicionalmente

Conjunto de instrues de salto As informaes que cada instruo carrega so explicadas a seguir: * Opcode: o cdigo de operao. o conjunto de bits que especifica a operao a ser executada; * B/W: o bit que especifica o formato da instruo. B/W=0 para instrues do formato word e B/W=1 para instrues do formato byte; * As: indica o modo de endereamento do registrador origem. Os quatro possveis modos de endereamento para registradores origem so mostrados na tabela abaixo:
As 0 0 1 1 0 1 0 1 Modo de endereamento Modo registrador Modo indexado Modo indireto Indireto/auto incremento Descrio O operando encontra-se no registrador Rn O operando encontra-se no endereo de memria Rn + X O operando encontra-se no endereo de memria contido em Rn O operando encontra-se no endereo de memria contido em Rn. Em seguida Rn incrementado em 2

Modos de endereamento do registrador origem

* Ad: indica o modo de endereamento do registrador destino (Rd). Ad=0 indica modo registrador, enquanto Ad=1 indica modo indexado. * Offset: representa um nmero de 10 bits com sinal que usado para calcular o novo valor do registrador PC caso a condio de salto seja satisfeita. Caso isso ocorra, o registrador PC atualizado da seguinte forma:

A organizao da memria O mapa da memria do MSP430 mostrado na figura abaixo:

Mapa da memria do MSP430. Figura retirada de (TEXAS, 2013).

A memria do MSP430 pode ser dividida em algumas regies bsicas:

* Registradores de funes especiais: localizados entre as regies 00h e 0Fh. Esses registradores possuem como funo habilitar funes em alguns mdulos. * Registradores de perifricos: localizados entre as regies 0010h e 01FFh so os registradores responsveis por fazer a comunicao entre CPU e perifricos. Alguns destes registradores possuem 8 bits e outros 16 bits. * RAM: a memria de dados utilizada para armazenar as varveis do programa escrito pelo usurio. Inicia sempre no endereo 0200h e possui tamanho varivel que depende do dispositivo. * ROM: a memria que armazena o programa escrito pelo usurio. O incio da faixa depende do dispositivo. O fim localizado no endereo 0FFFh. * Tabela do vetor de interrupes: uma regio da memria ROM que armazena os endereos das rotinas de tratamento de interrupes. Est localizada entre os endereos 0FFE0h e 0FFFFh.

10

Os perifricos

Os microcontroladores da famlia MSP430 possuem uma gama muito ampla de perifricos. Ao longo dos anos, os dispositivos foram se aprimorando e novos perifricos foram desenvolvidos para suprir as necessidades especficas dos usurios do MSP430. Dado o grande nmero de perifricos existentes, nesta seo sero tratados apenas os perifricos implementados no projeto: * Ports digitais; * Unidade bsica de clock; * Watchdog timer e * Timer A.

Ports Digitais

Um microcontrolador interage de diversas formas com o sistema o qual faz parte. Ele pode receber entradas de seres humanos atravs de chaves, por exemplo. Pode exibir os resultados de suas operaes atravs de leds ou displays. Pode receber sinais de sensores ou at mesmo se comunicar com outros microcontroladores. O port o perifrico responsvel pela comunicao do microcontrolador com o meio externo. Sua funo receber dados do meio externo e grav-los em seu registrador de entrada e/ou escrever o contedo de seu registrador de sada nos pinos do microcontrolador. Os ports do MSP430 possuem at 8 bits. Cada pino associado a um port pode ser configurado e controlado individualmente atravs dos registradores de controle do port. Cada port possui, ainda, registradores de entrada e sada individuais. Os registradores associados aos ports digitais possuem todos 8 bits. So eles: * PXDIR: o registrador responsvel por definir a direo do port. Cada bit deste registrador est associado a um pino do port. Bit=0 indica que o respectivo pino est selecionado como entrada. Bit=1 indica que o respectivo pino est selecionado como sada.

11

* 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 sada no pino correspondente quando este configurado como sada. * PXIFG: cada bit deste registrador indica se h ou no interrupes pendentes. Bit=0 indica que no h interrupo pendente. Bit=1 indica que h interrupo pendente. * PXIE: habilita (quando o bit=1) ou desabilita (bit=0) interrupo no pino correspondente. * PXIES: cada bit deste registrador seleciona a borda de interrupo do pino correspondente. Bit=0 indica que o flag PXIFG passa do valor 0 para 1 na transio de nvel lgico baixo para alto. Bit=1 indica que o flag PXIFG passa do valor 0 para 1 na transio de nvel lgico alto para baixo.

Mdulo bsico de clock

O mdulo bsico de clock, tambm conhecido como BCM, o perifrico responsvel 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 analgico interno de baixa frequncia. * 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 frequncia de at alguns mega-hertz. * XT2 (high-frequency crytal oscillator): presente em poucos dispositivos, similar ao LFXT1, exceto que restrito a altas frequncias. * DCO (digital controlled oscilator): presente em todos os dispositivos, ele um dos grandes destaques do MSP430. basicamente um oscilador RC altamente controlvel. A unidade bsica de clock fornece como sada trs sinais de clock que so distribudos entre os componentes do microcontrolador. So eles: * MCLK (Master clock): o sinal de clock usado pela CPU e por alguns perifricos.

12

* SMCLK (Subsystem master clock): o sinal de clock que distribudo aos perifricos. Normalmente possui a mesma frequncia do MCLK. * ACLK (Auxiliary clock): tambm distribudo a alguns perifricos. Sua frequncia 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 frequncia dependendo do dispositivo. O sinal ACLK pode vir de qualquer uma das entradas de baixa frequncia, dependendo tambm do dispositivo. O mdulo bsico de clock controlado por quatro registradores de 8 bits: DCOCTL, BCSCTL1, BCSCTL2 e BCSCTL3. A grande maioria das funes desses registradores o controle de caractersticas analgicas dos osciladores internos, tais como a seleo de resistncias e capacitncias responsveis pelo estabelecimento das frequncias de operao.

Watchdog Timer O watchdog timer o perifrico que possui a funo de reiniciar o microcontrolador quando algum problema de software ocorre. Se a funo watchdog no for necessria na aplicao, este perifrico pode ser configurado como temporizador, gerando interrupes 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 usurio deve desativar ou parar a contagem do watchdog antes que ela alcance seu valor mximo, caso contrrio o microcontrolador ser reiniciado. A figura 8 mostra o diagrama de blocos do watchdog timer. Nesta figura so mostrados os principais componentes do watchdog timer, entre eles destacam-se o contador de 16 bits, tambm chamado de WDTCNT e o registrador de controle WDTCTL. O contador WDTCNT o componente principal do watchdog timer, atravs dele feita a contagem dos pulsos de clock que determinam o funcionamento deste perifrico. Seu valor no 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.

13

O watchdog timer pode ser configurado atravs do registrador WDTCTL. Este registrador possui algumas particularidades. Ele um registrador de 16 bits protegido por senha. Qualquer escrita neste registrador deve conter a senha 5Ah em seu byte mais significativo. Caso esta senha seja violada, o watchdog timer reinicia o microcontrolador imediatamente. Por outro lado, toda leitura do registrador WDTCTL retorna o valor 69h em seu byte mais significativo. Como pode ser observado na figura 9, o byte menos significativo do registrador.

WDTCTL contm os bits de controle do watchdog timer. So eles: * WDTHOLD: habilita ou desabilita a contagem no contador WDTCNT. * WDTNMIES e WDTNMIE: so usados para configurar o pino RST/NMI do microcontrolador. * WDTTMSEL: seleciona o modo de operao, como timer ou watchdog. * WDTCNTCL: usada para reiniciar o valor do contador WDTCNT. * WDTSSEL: seleciona a origem do sinal de clock, ACLK ou SMCLK, que excitar o contador WDTCNT. * WDTISx: seleciona o intervalo de contagem de acordo com a tabela 6.

Intervalos de contagem do watchdog timer abaixo:

WDTISx 00 01 10 11

Intervalo At 32.768 At 8.192 At 512 At 64

14

Timer A

O timer A o temporizador mais verstil, de propsito geral e presente em todos os dispositivos da famlia MSP430 (DAVIES, 2008). Seu hardware dividido em dois blocos: o bloco temporizador e os canais de captura/comparao. 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 mdulo bsico de clock ou por sinais externos TACLK e INCLK. Cada um desses sinais pode ter sua frequncia dividida em dois, quatro ou oito se necessrio. O contador TAR pode operar de trs formas diferentes: * Modo crescente: contando at o valor armazenado no registrador TACCR0 e reiniciando a contagem logo em seguida; * Modo contnuo: 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 ento decrescente at 00000h, reiniciando o processo. O bloco temporizador controlado pelo registrador TACTL e possui uma flag de interrupo TAIFG que assume nvel lgico alto sempre que a contagem no registrador TAR se torna igual a 0000h. O bloco de captura/comparao 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 interrupo quando o valor do registrador TAR se torna igual ao valor armazenado em TACCRx. O bloco de captura/comparao controlado pelo registrador TACCTLx e possui um flag de interrupo CCIFG. Alm da interrupo, este bloco pode fornecer como sada o sinal OUTx que pode ser configurado pelo usurio.

15

Linguagens de Programao

As linguagem de programao utilizadas no Microcontrolador MSP430 so: C/C++, Assembly Exemplo: L-se repetidas vezes o valor do pino de entrada P1.3, que est ligado chave S2

*Se o valor lido 0 (chave pressionada), o led vermelho ativado * Se o valor lido 1 (chave em posio normal), o led vermelho desativado. * Altere o exemplo para que ao pressionar a chave S2 (P1.3), uma varivel 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 sada (0100 0001) 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 nvel lgico 0 count = count + 1; // Incrementa varivel 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) } } }