Vous êtes sur la page 1sur 20

DOCUMENTAO TCNICA

Introduo programao do microcontrolador MSP430

Cientistas Associados Desenvolvimento Tecnolgico Ltda.

Rua Alfredo Lopes, 1717 CEP 13560-460, So Carlos - SP, Brasil


Telefone +55 16 3362-6298, Fax +55 16 3362-6261 http://www.cientistasassociados.com.br

Robtica
Noes de Eletricidade ...................................................................... 4 Noes de Lgica Digital.................................................................... 4 Microcontrolador x Microprocessador................................................ 4 Unidade de Memria .......................................................................... 4 Unidade de entrada/sada ................................................................... 5 Unidade de temporizao................................................................... 5 Watchdog.......................................................................................... 5 Conversor analgico - digital.............................................................. 5 Programa........................................................................................... 6 Relgio / ciclo de instruo................................................................ 7 Tipos de osciladores.......................................................................... 7 Reset................................................................................................. 7 Reviso de C ..................................................................................... 8 Scope de variveis............................................................................. 9 Declarao de comentrios................................................................ 9 Declarao de constantes.................................................................. 9 Operadores........................................................................................ 9 Mascaramento e operaes lgicas.................................................... 9 Bit Twiddling...................................................................................... 9 Estruturas de deciso...................................................................... 10 Estruturas de Loop .......................................................................... 10 Diretivas do pr-processador ........................................................... 10 Estrutura de um programa simples (para ucontroladores)................. 10 Declarao de rotinas e funes....................................................... 10 Declarao de variveis avanadas.................................................. 10

Ponteiros......................................................................................... 10 Alternativas para tratamento de variveis......................................... 11 Declarao de rotinas e funes tamanho versus perfomance ....... 11 Trabalhando com tipos abstrados de dados..................................... 11 Diretivas do pr-processador ........................................................... 11 C <-> Assembly................................................................................ 11 Declaraes dependentes de compilador......................................... 11 Comparativo Tcnico de Microcontroladores:................................... 11 PIC18F6720 x MSP430F149 .............................................................. 11 TI.com IAR JTAG........................................................................ 20 MSP430F1232.pdf ou MSP430F149.pdf ou MSP430F169.pdf............. 20 MSP430x1xx - User's Guide.pdf........................................................ 20 Programas 1232 ou 149.................................................................... 20 LCDmanual.pdf ou Pasta LCD .......................................................... 20

Noes de Eletricidade
V=R*I - Nveis de tenso - Nveis de corrente (CMOS,TTL,MSP) - Pull-down e Pull-up

Noes de Lgica Digital


- Analgico x Digital - Bit - Byte - AND - OR

Microcontrolador x Microprocessador
Um microcontrolador difere de um m icroprocessador em vrios aspectos. Primeiro e o mais importante, a sua funcionalidade. Para que um microprocessador possa ser usado, outros componentes devem-lhe ser adicionados, tais como memria e componentes para receber e enviar dados. Em resumo, is so significa que o microprocessador o verdadeiro corao do computador. Por outro lado, o microcontrolador foi projetado para ter tudo num s. Nenhuns outros componentes externos so necessrios nas aplicaes, uma vez que todos os perifricos necessrios j esto contidos nele. Assim, ns poupamos tempo e espao na construo dos dispositivos.

Unidade de Memria
A memria a parte do microcontrolador cuja funo guardar dados. A maneira mais fcil de explicar descrev-la como uma grande prateleira cheia de gavetas. Se supusermos que marcamos as gavetas de modo a elas no se confundirem umas com as outras, ento o seu contedo ser facilmente acessvel. Basta saber a designao da gaveta e o seu contedo ser conhecido. Os componentes de memria so exactamente a mesma coisa. Para um determinado endereo, ns obtemos o contedo desse endereo. Dois novos conceitos foram apresentados: endereamento e memria. A memria o conjunto de todos os locais de memria (gavetas) e endereamento nada mais que seleccionar um deles. Isto significa que precisamos de seleccionar o endereo desejado (gaveta) e esperar que o contedo desse endereo nos seja apresentado (abrir a gaveta). Alm de ler de um local da memria (ler o contedo da gaveta), tambm possvel escrever num endereo da memria (introduzir um contedo na gaveta). A memria o primeiro elemento, mas precisamos de mais alguns para que o nosso microcontrolador possa trabalhar. Unidade Central de Processamento Vamos agora adicionar mais 3 locais de memria a um bloco especfico para que possamos ter as capacidades de multiplicar, dividir, subtrair e mover o seus contedos de um local de memria para outro. A parte que vamos acrescentar chamada "central processing unit" (CPU) ou Unidade Central de Processamento. Os locais de memria nela contidos chamam-se registros.

Os registros so, portanto, locais de memria cujo papel ajudar a executar vrias operaes matemticas ou quaisquer outras operaes com dados, quaisquer que sejam os locais em que estes se encontrem. Vamos olhar para a situao atual. Ns temos duas entidades independentes (memria e CPU) que esto interligadas, deste modo, qualquer troca de dados retardada bem como a funcionalidade do sistema diminuda.

Unidade de entrada/sada
Estas localizaes que acabamos de adicionar, chamam-se "portos". Existem vrios tipos de portos: de entrada, de sada e de entrada/sada. Quando trabalhamos com portos primeiro de tudo necessrio escolher o porto com que queremos trabalhar e, em seguida, enviar ou receber dados para ou desse porto. Quando se est a trabalhar com ele, o porto funciona como um local de memria. Qualquer coisa de que se est a ler ou em que se est a escrever e que possvel identificar facilmente nos pinos do microcontrolador.

Unidade de temporizao
Agora que j temos a unidade de comunicao srie implementada, ns podemos receber, enviar e processar dados. Contudo, para sermos capazes de utilizar isto na indstria precisamos ainda de mais alguns blocos. Um deles o bloco de temporizao que nos interessa bastante porque pode dar-nos informaes acerca da hora, durao, protocolo, etc. A unidade bsica do temporizador um contador que na realidade um registro cujo contedo aumenta de uma unidade num intervalo de tempo fixo, assim, anotando o seu valor durante os instantes de tempo T1 e T2 e calculando a sua diferena, ns ficamos a saber a quantidade de tempo decorrida. Esta uma parte muito importante do microcontrolador, cujo domnio vai requerer muita da nossa ateno.

Watchdog
Uma outra coisa que nos vai interessar a fluncia da execuo do programa pelo microcontrolador durante a sua utilizao. Suponha que como resultado de qualquer interferncia (que ocorre frequentemente num ambiente industrial), o nosso microcontrolador pra de executar o programa ou, ainda pior, desata a trabalhar incorretamente. Claro que, quando isto acontece com um computador, ns simplesmente carregamos no boto de reset e continuamos a trabalhar. Contudo, no caso do microcontrolador ns no podemos resolver o nosso problema deste modo, porque no temos boto. Para ultrapassar este obstculo, precisamos de introduzir no nosso modelo um novo bloco chamado watchdog (co de guarda). Este bloco de fato outro contador que est continuamente a contar e que o nosso programa pe a zero sempre que executado corretamente. No caso de o programa "encravar", o zero no vai ser escrito e o contador, por si s, encarregar-se- de fazer o reset do microcontrolador quando alcanar o seu valor mximo. Isto vai fazer com que o programa corra de novo e desta vez correctamente. Este um elemento importante para que qualquer programa se execute fiavelmente, sem precisar da interveno do ser humano.

Conversor analgico - digital


Como os sinais dos perifricos so substancialmente diferentes daqueles que o microcontrolador pode entender (zero e um), eles devem ser convertidos num formato que possa ser compreendido pelo microcontrolador. Esta tarefa executada por intermdio de

um bloco destinado converso analgica-digital ou com um conversor A/D. Este bloco vai ser responsvel pela converso de uma informao de valor analgico para um nmero binrio e pelo seu trajeto atravs do bloco do CPU, de modo a que este o possa processar de imediato. Neste momento, a configurao do microcontrolador est j terminada, tudo o que falta introduzi-la dentro de um aparelho eletrnico que poder aceder aos blocos internos atravs dos pinos deste componente. A figura a seguir, ilustra o aspecto interno de um microcontrolador.

Programa
Escrever um programa uma parte especial do trabalho com microcontroladores e designado por "programao". Vamos tentar escrever um pequeno programa numa linguagem que seremos ns a criar e que toda a gente ser capaz de compreender. INICIO REGISTO1=LOCAL_DE_ MEMORIA_A REGISTO2=LOCAL_DE_ MEMORIA_B PORTO_A=REGISTO1+REGISTO2 FIM

O programa adiciona os contedos de dois locais de memria e coloca a soma destes contedos no porto A. A primeira linha do programa manda mover o contedo do local de memria "A" para um dos registros da unidade central de processamento. Como necessitamos tambm de outra parcela, vamos colocar o outro contedo noutro registo da unidade central de processamento (CPU). A instruo seguinte pede ao CPU para adicionar os contedos dos dois registros e enviar o resultado obtido para o porto A, de modo a que o resultado desta adio seja visvel para o mundo exterior. Para um problema mais complexo, naturalmente o programa que o resolve ser maior. A tarefa de programao pode ser executada em vrias linguagens tais como o Assembler, C e Basic que so as linguagens normalmente mais usadas. O Assembler pertence ao grupo das linguagens de baixo nvel que implicam um trabalho de programao lento, mas que oferece os melhores resultados quando se pretende poupar espao de memria e aumentar a velocidade de execuo do programa. Como se trata da linguagem mais frequentemente usada na programao de microcontroladores, ela ser discutida num captulo mais adiantado. Os programas na linguagem C so mais fceis de se escrever e compreender, mas, tambm, so mais lentos a serem executados que os programas assembler. Basic a mais fcil de todas para se aprender e as suas instrues so semelhantes maneira de um ser humano se exprimir, mas tal como a linguagem C, tambm de execuo mais lenta que o assembler. Em qualquer caso, antes que escolha entre uma destas linguagens, precisa de examinar cuidadosamente os requisitos de velocidade de execuo, de espao de mem ria a ocupar e o tempo que vai demorar a fazer o programa em assembly. Depois de o programa estar escrito, ns necessitamos de introduzir o microcontrolador num dispositivo e p-lo a trabalhar. Para que isto acontea, ns precisamos de adicionar mais alguns componentes externos. Primeiro temos que dar vida ao microcontrolador fornecendo-lhe a tenso (a tenso elctrica necessria para que qualquer instrumento electrnico funcione) e o oscilador cujo papel anlogo ao do corao que bate no ser humano. A execuo das instrues do programa regulada pelas pulsaes do oscilador. Logo que lhe aplicada a tenso, o microcontrolador executa uma verificao dele prprio, vai para o princpio do programa e comea a execut-lo. O modo como o

dispositivo vai trabalhar depende de muitos parmetros, os mais importantes dos quais so a competncia da pessoa que desenvolve o hardware e do programador que, com o seu programa, deve tirar o mximo do dispositivo.

Relgio / ciclo de instruo


O relgio (clock), quem d o sinal de partida para o microcontrolador e obtido a partir de um componente externo chamado oscilador. Se considerasse-mos que um microcontrolador era um relgio de sala, o nosso clock corresponderia ao pndulo e emitiria um rudo correspondente ao deslocar do pndulo. Tambm, a fora usada para dar corda ao relgio, podia comparar-se alimentao elctrica. O clock do oscilador, ligado ao microcontrolador atravs do pino OSC1, aqui, o circuito interno do microcontrolador divide o sinal de clock em quatro fases, Q1, Q2, Q3 e Q4 que no se sobrepem. Estas quatro pulsaes perfazem um ciclo de instruo (tambm chamado ciclo de mquina) e durante o qual uma instruo executada. A execuo de uma instruo, antecedida pela extraco da instruo que est na linha seguinte. O cdigo da instruo extrado da memria de programa em Q1 e escrito no registo de instruo em Q4. A descodificao e execuo dessa mesma instruo, faz-se entre as fases Q1 e Q4 seguintes. No diagrama em baixo, podemos observar a relao entre o ciclo de instruo e o clock do oscilador (OSC1) assim como as fases Q1-Q4. O contador de programa (Program Counter ou PC) guarda o endereo da prxima instruo a ser executada.

Tipos de osciladores
O PIC16F84 pode trabalhar com quatro configuraes de oscilador. Uma vez que as configuraes com um oscilador de cristal e resistncia-condensador (RC) so aquelas mais frequentemente usadas, elas so as nicas que vamos mencionar aqui. Quando o oscilador de cristal, a designao da configurao de XT, se o oscilador for uma resistncia em srie com um condensador, tem a designao RC. Isto importante, porque h necessidade de optar entre os diversos tipos de oscilador, quando se escolhe um microcontrolador. - Oscilador XT - OSCILADOR RC - Relao entre o sinal de clock e os ciclos de instruo

Reset
O reset usado para pr o microcontrolador num estado conhecido. Na prtica isto significa que s vezes o microcontrolador pode comportar-se de um modo inadequado em determinadas condies indesejveis. De modo a que o seu funcionamento normal seja restabelecido, preciso fazer o reset do microcontrolador, isto significa que todos os seus registos vo conter valores iniciais pr-definidos, correspondentes a uma posio inicial. O reset no usado somente quando o microcontrolador no se comporta da maneira que ns queremos, mas, tambm pode ser usado, quando ocorre uma interrupo por parte de outro dispositivo, ou quando se quer que o microcontrolador esteja pronto para executar um programa . De modo a prevenir a ocorrncia de um zero lgico acidental no pino MCLR (a linha por cima de MCLR significa o sinal de reset activado por nvel lgico baixo), o pino MCLR tem que ser ligado atravs de uma resistncia ao lado positivo da alimentao. Esta

resistncia deve ter um valor entre 5 e 10K. Uma resistncia como esta, cuja funo conservar uma determinada linha a nvel lgico alto, chamada resistncia de pull up. Utilizao do circuito interno de reset O microcontrolador PIC16F84, admite vrias formas de reset: a) Reset quando se liga a alimentao, POR (Power-On Reset) b) Reset durante o funcionamento normal, quando se pe a nvel lgico baixo o pino MCLR do microcontrolador. c) Reset durante o regime de SLEEP (dormir). d) Reset quando o temporizador do watchdog (WDT) transborda (passa para 0 depois de atingir o valor mximo). e) Reset quando o temporizador do watchdog (WDT) transborda estando no regime de SLEEP. Os reset mais importantes so o a) e o b). O primeiro, ocorre sempre que ligada a alimentao do microcontrolador e serve para trazer todos os registos para um estado inicial. O segundo que resulta da aplicao de um valor lgico baixo ao pino MCLR durante o funcionamento normal do microcontrolador e, usado muitas vezes, durante o desenvolvimento de um programa. Durante um reset, os locais de memria da RAM (registos) no so alterados. Ou seja, os contedos destes registos, so desconhecidos durante o restabelecimento da alimentao, mas mantm-se inalterados durante qualquer outro reset. Ao contrrio dos registos normais, os SFR (registos com funes especiais) so reiniciados com um valor inicial pr-definido. Um dos mais importantes efeitos de um reset, introduzir no contador de programa (PC), o valor zero (0000), o que faz com que o programa comece a ser executado a partir da primeira instruo deste. Reset quando o valor da alimentao desce abaixo do limite permitido (Brown-out Reset). O impulso que provoca o reset durante o estabelecimento da alimentao (power-up), gerado pelo prprio microcontrolador quando detecta um aumento na tenso Vdd (numa faixa entre 1,2V e 1,8V). Esse impulso perdura durante 72ms, o que, em princpio, tempo suficiente para que o oscilador estabilize. Esse intervalo de tempo de 72ms definido por um temporizador interno PWRT, com um oscilador RC prprio. Enquanto PWRT estiver activo, o microcontrolador mantm-se no estado de reset. Contudo, quando o dispositivo est a trabalhar, pode surgir um problema no resultante de uma queda da tenso para 0 volts, mas sim de uma queda de tenso para um valor abaixo do limite que garante o correcto funcionamento do microcontrolador. Trata-se de um facto muito provvel de ocorrer na prtica, especialmente em ambientes industriais onde as perturbaes e instabilidade da alimentao ocorrem frequentemente. Para resolver este problema, ns precisamos de estar certos de que o microcontrolador entra no estado de reset de cada vez que a alimentao desce abaixo do limite aprovado.

Reviso de C
Tipos de Variveis, tamanho e limites
Tipo Alocao (bytes) Limites - unsigned char/char 1 0..255 - signed char 1 -128..127 - unsigned short 2 0..65535 - (signed) short 2 -32768..32767 - unsigned int 2 0..65535

- (signed) int 2 -32768..32767 - pointer 2 N/A - unsigned long 4 0..4294967295 - (signed) long 4 -2147483648..2147483647 - float 4 +/-1.175e -38..3.40e+38 - double 4 +/-1.175e-38..3.40e+38 - Mostrar tipos diretamente tratados pelo MSP - Porque evitar o uso de ponto flutuante - Porque evitar o uso de variveis extendidas

Scope de variveis
- Declarao de variveis globais - Variveis locais - Declarando e acessando variveis globais em arquivos externos do projeto

Declarao de comentrios
- Ansi-C /* e */ - Utilizando extenso // do C++

Declarao de constantes
- Nmeros decimais - Nmeros hexadecimais (0x) - Extenso C++ para declarao de constantes binrias (0b) - Strings - Array de nmeros/strings

Operadores
- Aritmticos (+, -, *, /, %) - Overflow em variveis, truncamento - Aritmticos Com postos (+=, -=, *=, /=, %=) - Incrementais (++, --) - Utilizando como prefixo e sufixo - Lgicos (==, &&, ||, !=, >=, <=, >, <)

Mascaramento e operaes lgicas


- O que so mscaras - Utilizando mscaras - Set (x = x | 0x0F, x |= 0x0F) - Corte (x = x & ~0x0F, x &= ~0x0F)

Bit Twiddling
- Facilidades do C para tratamento bit/byte/word - Ativar bits (P2OUT = P2OUT | 0x01, P2OUT |= 0x01) - Desativar bits (P2OUT = P2OUT & ~0x01, P2OUT &= ~0x01) - Inverso de bits (P2OUT = P2OUT ^ 0x01, P2OUT ^= 0x01) - Shift (<<, >>, <<=, >>=)

Estruturas de deciso
- if, else, elseif - Agrupamentos lgicos (|| e &&) - switch, case-break, default - Operador condicional ? ( x = expr1 ? expr2 : expr 3;)

Estruturas de Loop
- for ( ..., ..., ...; ... ; ..., ..., ... ) { ... } - while (...) { ... } - continue e break - do { ... } while ( ... ); - goto

Diretivas do pr-processador
- #include - #define - #undef - #ifdef/#ifndef,#else,#endif - #if, #elif, #else, #endif - #enum

Estrutura de um programa simples (para ucontroladores)


#includes ... void main(void) { ... declarao de variveis ... software }

Declarao de rotinas e funes


- Definio de prototypes - Passagem bsica de argumentos

Declarao de variveis avanadas


- Reduo de overhead de software em variveis globais - Utilizao de estruturas (struct) - Array de estruturas - Estruturas encadeadas - Utilizao de typedef union para compartilhamento de memria - Arrays multidimensionais - Scope: auto, static, volatile (endereamento de hardware) - BitFields (e problemas com portabilidade)

Ponteiros
- Operadores & e * - Operador in/decremental ++ e -- Forando endereamento em ponteiros - Mudanas foradas de tipo utilizando typecasts - Ponteiros de Arrays, Arrays multidimensionais e estruturas

10

Alternativas para tratamento de variveis


- Uso de ponto-flutuante versus ponto-fixo - Utilizao do operador de shift para diviso - Forando type-casts para acesso direto memria/flash

Declarao de rotinas e funes tamanho versus perfomance


- Passagem de argumentos array (ponteiros e tratamento adequado) - Criao de funes via diretivas do pr-processador - Declarao de rotinas com nmero varivel de argumentos - Recurso de funes

Trabalhando com tipos abstrados de dados


- Implementao de queues (controle serial, etc) - Controle com ponteiros, alocao de memria - rvores binrias

Diretivas do pr-processador
- Uso do #ifdef para organizao e simplificao de debug do software

C <-> Assembly
- Uso de Inline Assembly - Declarao - Acesso a variveis - Passagem de argumentos

Declaraes dependentes de compilador


- #pragma - #abs, etc

Comparativo Tcnico de Microcontroladores: PIC18F6720 x MSP430F149


Uma anlise tcnica de dois poderosos microcontroladores com dicas importantes sobre suas caractersticas Augusto Einsfeldt Uma das decises mais difceis que um projetista precisa tomar a escolha do microcontrolador adequado para um determinado projeto onde este componente o centro das funes. Nem sempre a melhor opo usar aquele micro com o qual j se est acostumado. Isso pode valer para projetos, mas quando o objetivo final criar um produto que vai ser comercializado e competir com outros no mercado, a escolha no pode ser leviana. Muitos fatores compem a deciso: preo, energia consumida, velocidade, capacidade de memria, segurana, robustez, tipos de interfaces, facilidades de compra, facilidade de produo. Do ponto de vista tecnolgico e puramente funcional quase todos os microcontroladores podem atender satisfatoriamente qualquer trabalho considerando,

11

claro, suas limitaes mais bvias (um micro com 1Kbyte de memria de programa no poderia conter uma tabela de converso de dados que precise mais do que isso). Neste artigo, explorada a comparao apenas entre dois microcontroladores muito potentes: PIC18F6720 e MSP430F149. Esses foram os finalistas de uma anlise real que fiz durante a fase inicial do desenvolvimento de um novo produto. Importante salientar que a escolha entre dois ou mais componentes deve-se unicamente aos requisitos de uma aplicao em particular. Todos os microcontroladores analisados possuem caractersticas analisados possuem caractersticas formidveis e naturalmente cada um deles o mais apropriado para diferentes projetos. Antes de fazer a comparao, cabe uma breve exposio das caractersticas tcnicas de cada microcontrolador. Note-se que estas caractersticas so mostradas aqui do ponto de vista do projeto, salientando os aspectos que importaram para este caso.

MSP430F149
Este microcontrolador de 16 bits possui arquitetura clssica com barramento nico de dados/instrues e barramento de endereo igualmente de 16 bits (ver figura 1). O micro acessa unicamente a memria interna organizada em 4 tipos, alm dos endereos mapeados para os registradores internos de tratamentos dos perifricos: RAM de 2048 bytes, Boot Code uma ROM de 1 Kbyte com um programa que permite (via serial) ler ou gravar toda a memria FLASH, Information Memory uma FLASH com dois setores de 128 bytes e a memria de cdigo em FLASH de 60 Kbytes divididos em 120 setores de 512 Kbytes cada. A pilha (stack) montada dentro da RAM de forma idntica feita nos microprocessadores convencionais.

Figura 1 Estrutura Interna do MSP430F149 A CPU tem ainda 16 registradores de 16 bits (R0 a R15) sendo 4 deles dedicados da CPU e 12 disponveis para uso geral pelo programa do usurio. Dois deles, o R2 em alguns casos e normalmente o R3, so chamados de geradores de constantes e servem para reduzir o tamanho dos programas (ao mesmo tempo que aceleram a execuo de algumas instrues) ao assumirem alguns valores pr-determinados e servirem como segundo operando em certas instrues. Por exemplo, para limpar o registrador R15, pode-se usar as instrues CLR R15 ou MOV #0000h, R15; ambas fazem a mesma coisa, mas a segunda 2 bytes a mais (alm do tempo extra para ler estes bytes da memria) para guardar o valor imediato 0000h, enquanto a primeira emprega o registrador R3 ajustado para o valor de 0000h e faz apenas a transferncia de contedo de R3 para R15 ( a primeira consome 1 ciclo de clock e 2 bytes enquanto a segunda consome 2 ciclos de clock e 4 bytes).

12

Este MSP430 pode operar com at 3 osciladores independentes (ver figura 2): DCO, LFXT1 e XT2.

Figura 2 Esquema de seleo das fontes do clock O DCO (Digitally Controlled Oscillator) um oscilador tipo RC de boa precis o e que possui um sistema de calibrao onde o software pode, com a ajuda de um padro externo, calcular um fator de correo. Este oscilador escolhido como o gerador de clock de execuo logo aps o MSP430 ser energizado. O software ento decide se vai manter esse oscilador ou se vai ligar e selecionar algum dos outros dois osciladores. O LFXT1 um oscilador que pode usar um cristal de baixa freqncia LF (ex: 32768 Hz) ou de alta freqncia, HF (ex: 8 MHz). No modo LF no precisa de capacitores externos. Este oscilador pode servir como fonte de clock de execuo (MCLK) e como fonte de clock para alguns perifricos. O XT2 um oscilador de alta freqncia (450 kHz at 8 MHz) e pode ser selecionado como fonte de clock de execuo e/ou para acionar alguns perifricos. Sobre as fontes de clock do MSP430, um dado importante que, caso o oscilador selecionado como clock de execuo falhar, o prprio hardware do MSP muda a seleo para o DCO e aciona uma interrupo NMI avisando do problema. Isto particularmente til em projetos crticos onde falhas de cristais, infelizmente no raras, poderiam simplesmente parar o microcontrolador. O consumo de energia do MSP430 muito baixo. Rodando a 1 MHz, ele consome cerca de 280 A em 2,2V e apenas 2,5 A quando em 4 kHz. No modo stand-by consome 1,6 A e em reteno da RAM apenas 0,1 A. Este baixo consumo facilita muito a montagem de uma fonte barata e eficiente. A tenso de alimentao vai de 1,8V a 3,6V, embora no rode bem em 8 MHz com tenso muito abaixo de 3,3V. Nesta freqncia, o MSP430 executa instrues simples em apenas 125 ns (ou 8 MIPS). As instrues mais demoradas como a soma de duas posies de memria de 16

13

bits indexadas e com offset (ex:AA off1(R4), off2(R5)) consomem 6 ciclos de clock ou 750 ns. A grande maioria das instrues mais usadas em programas comuns gasta apenas 1 ou 2 ciclos de clock . O conjunto de instrues deste RISC contm apenas 27 instrues e 7 modos de endereamento que o tornam srio competidor com os processadores CISC permitindo, como exemplificado acima, executar operaes memria -memria sem passar por registradores ou acumuladores. Uma combinao de modos particularmente interessante, @Rn+,x(Rm), permite executar uma operao qualquer com valores de memria apontados por Rn, enquanto x um offset de 16 bits, tudo em 5 ciclos de clock ou 0,625 s. Os perifricos do MSP430F149 so: multiplicador/acumulador em hardware (ver figura 3), dois timers de 16 bits (A e B), um timer para watchdog (WDT), um comparador de tenso, um conversor A/D de 8 canais externos e 12 bits, duas portas seriais (UART) em hardware, e at 48 pinos de I/O digitais alm de outras facilidades no abordadas aqui. Os perifricos citados merecem um detalhamento maior.

Figura 3 Multiplicador em hardware do MSP430 O multiplicador/acumulador executa uma operao completa entre uma instruo e outra, ou seja, se em uma instruo transferido o valor do operando para o registrador do perifrico, a instruo seguinte j pode ler o resultado. Este MAC, como chamada, possibilita ao MSP430 fazer tratamento de dados complexos (tipo DSP) em alta velocidade. Em rotinas de clculo em ponto flutuante pode-se fazer uma diviso deste tipo em apenas 50s. Os timers possuem circuitos de comparao e controle especialmente desenhados para gerao de PWM. Pode-se, por exemplo, gerar 6 sinais de PWM para controlar 3 fases de um motor considerando as sadas com o tratamento de dead-time (tempo morto), usando a CPU apenas para acertar o valor dos PWMs a cada mudana necessria na gerao de uma onda senoidal. O timer do watchdog pode ser empregado para gerar interrupes de temporizao geral, funcionando como um terceiro timer acessvel ao programador.

14

O comparador de tenso pode ser programado para supervisionar a tenso de uma bateria ou auxiliar na operao de conversores A/D de preciso tipo (dupla rampa). O conversor A/D possui, de fato, 12 canais sendo 8 externos e 4 internos. Os quatro canais internos so para medir a tenso de alimentao, duas tenses de referncia externas e um sensor de temperatura interno. Isto mesmo! Com este sensor o programa pode medir a temperatura do prprio MSP430, e como ele no consome muita energia, permite medir a temperatura ambiente onde o MSP est montado. O conversor A/D ainda pode fazer as converses automaticamente, de todos os 12 canais, depositando a medida realizada em registradores especficos. Com isso, a CPU tambm no precisa gastar uma nica instruo para gerenciar a varredura dos canais. Este A/D faz cerca de 200.000 converses por segundo e admite uma impedncia da fonte de sinal de 10k? para um erro menor que +- 1LSB. As duas portas seriais possuem geradores de baud-rate internos e independentes. Um circuito engenhoso facilita a vida do projetista para ajustar a taxa de comunicao em funo da freqncia do clock : um registrador especial aplica um fator de ajuste que reduz os erros causados pela diviso inteira tipicamente obtida nos geradores de baud-rate, atuando como um divisor fracionrio. Um circuito de filtragem ( eglitch) impede a d deteco falsa de rudos rpidos (cerca de 300 ns de largura) que possam estar presentes nas entradas de dados (RX). Finalmente, os 48 pinos de I/O disponveis em 6 portas, todos com Schmitt Trigger (histerese), so compartilhados com diversas funes especiais como os terminais TX/RX das UARTs, sadas de PWM, entradas analgicas, etc. O usurio pode escolher quais pinos so entrada, sada ou operando segundo suas funes especiais. A capacidade de corrente, embora boa individualmente (at 25 mA por I/O) no das melhores como um todo, pois fornecendo ou drenando corrente de forma combinada com 24 mA total (todos os I/O envolvidos somados causa um erro de 0,6 V nas sadas GND=0,6 V ou VCC 0,6 V). Todos os pinos de I/O possuem diodos de proteo contra transiente e ESD que suportam apenas 2 mA. A tenso de entrada nos pinos no pode superar 0,3 V do nvel de tenso de alimentao. O MSP430F149 no possui Brownout-Detector (supervisor de tenso de alimentao e gerador de Reset), existente no novo modelo F169. A memria FLASH pode ser apagada em setores ou em grupos e setores e permite ser programada por meio externo ou atravs do programa escrito pelo usurio. Devido ao modo de acesso e arquitetura, o usurio pode colocar programas na memria RAM e mandar a CPU executar sem qualquer perda de performance. O MSP430 possui uma interface JTAG usada para programao e emulao, tornando fceis e baratas as ferramentas de desenvolvimento. Um fusvel especial pode ser queimado aps a programao, tornando impossvel o uso de JTAG para ler o contedo da memria FLASH. Atravs do Boot-ROM pode-se fazer a programao ou apagamento da FLASH via porta serial. Finalmente, o MSP430F149 fabricado e fornecido apenas na opo de temperatura industrial, ou seja, de -40C 85C.

PIC18F6720
A famlia PIC18F est sendo um grande avano nos microcontroladores da Microchip (ver figura 4). O modelo 6720 possui caractersticas notveis e um dos elementos que o classificaram para as finais foi o oscilador de clock , que atravs de um PLL, permite rodar este PIC em 40 MHz (ou 100ns por ciclo de mquina pois cada um consome quatro ciclos de clock ).

15

Figura 4 Estrutura interna do PIC18F6720 Este PIC mantm a arquitetura clssica Harvard com barramento de dados de 8 bits e, neste caso, barramento de instrues de 16 bits, memria RAM de 3840 bytes, EEPROM de 1 Kbyte e memria FLASH de cdigo com 128 Kbytes (ou 64 K words). Uma pilha (stack) com 31 posies construda independentemente da memria de dados. A memria RAM organizada em blocos de 256 bytes escolhidos atravs de um registrador especial (BSR) que precisa ser alterado sempre que for necessrio acessar uma posio da RAM em um bloco diferente. Contudo, empregando-se os registradores de acesso especial (SFR) ou a instruo especial MOVFF, possvel ler ou gravar qualquer byte da RAM de forma linear. A memria FLASH pode ser apagada em blocos de no mnimo 64 bytes. Ela utilizada para armazenar o programa e pode ser escrita (ou apagada) pelo programa do usurio. A memria EEPROM bastante resistente e aceita at 1 milho de ciclos de apagamento/escrita com acesso individual a cada byte atravs de registradores SFR.

16

Existem dois osciladores: um principal com at 8 modos de operao (desde usando cristais LF tipo 32768 Hz at cristais LF, que pode ser selecionado como fonte de clock principal e, assim, reduzir o consumo em aplicaes de baixa energia. Esta seleo no automtica. O conjunto de instrues possui 75 comandos sendo algumas instrues mais poderosas do que as encontradas o conjunto de instrues convencional do muito conhecido PIC16F84A. Por exemplo, a instruo MOVFF move um byte de uma posio direta de memria para outra (que pode ser o W) e atende toda a faixa de endereamento da RAM. Outro grupo de instrues melhoradas so os pulos condicionais (conditional Branch) que permitem testar um flag e pular para outra posio do programa (o pulo limitado em +/ - 128 words). Algumas instrues permitem ler a memria de programa como uma tabela e mover estes dados para a RAM. Uma instruo especial faz a multiplicao de dois nmeros de 8 bits. Esta operao consome de 1 a 6 ciclos de mquina para multiplicao em 8 bits e de 24 a 36 ciclos de mquina para multiplicar em 16 bits. Possui uma coleo de perifricos bastante completa: duas portas seriais (USART) 2 com suporte para RS-485; uma porta sncrona tipo mster/slave para SPI ou I C (MSSP); 53 pinos de I/O compartilhados com as funes especiais; 5 timers sendo um de 8/16 bits, dois de 8 bits e dois de 16 bits; 5 mdulos de comparao para gerar PWM; uma porta paralela de 8 bits til para comunicao entre microcontroladores; conversor A/D de 10 bits e 12 canais; dois comparadores de tenso e um detector de nvel de tenso de alimentao; alm de outros modos e perifricos no mencionados aqui. As portas seriais possuem gerador de baud-rate prprio e podem trabalhar nos modos sncrono e assncrono. A porta sncrona especial trabalha com os modos mster/multi mster/slave em I2 C (ver figura 5) com 7 ou 10 bits de endereamento. O conversor A/D admite uma impedncia mnima da fonte de sinal de 2,5 k? (para um erro de +- LSB) e permte fazer at 50.000 converses por segundo (10 bits). Os cinco timers permitem uma variedade de funes. Quando usados para gerar PWM, dois deles so necessrios em conjunto com um ou mais mdulos de comparao (CCP).

Figura 5 MSP no modo I2 C

17

As portas de I/O tm tima capacidade de corrente (+25mA/-25mA) e o chip como um todo permite at 200 mAde corrente total em todas as sadas ativas. Cada pino possui diodos de proteo com capacidade de 20 mA e o pino RA4, que coletor aberto, aceita at 12V de tenso. Os demais pinos (e xceo ao MCLR/VPP) aceitam at 0,3V acima do VDD ou abaixo do VSS. Contudo, nem todos os pinos configurados como entrada tm Schmitt-Trigger (histerese) reduzindo as possibilidades de aplicaes com sinais muito lentos. A tenso de operao vai de 4,2V at 5,5V mximo (o modelo PIC18LF6720 permite operar com 2,0V em freqncia de 4MHz). A tenso mnima para manuteno da RAM 1,5V. O consumo de 38 mA (mximo) com clock de 40 MHz e de 200 A com clock de 32 kHz (temperatura industrial). No modo power down o consumo tpico fica em 0,11 A. Ele fornecido em duas temperaturas: Industrial e Estendida. Esta ltima permite a operao em +125C. A programao do chip pode ser feita, alm do uso de programadores especiais, atravs de dois pinos de (RB6 e RB7) e enquanto montado na placa do circuito de aplicao (ICSP : In-Circuit Serial Programming). Neste modo, o PIC18F6720 pode ser programado empregando-se a tenso normal de alimentao (restrita entre 4,5V e 5,5V) em vez de precisar tenso maior no pino V PP. Atravs destes dois pinos possvel tambm fazer uma emulao simples.

Comparao
A notria capacidade de processamento e de perifricos de cada microcontrolador torna difcil a deciso. Os parmetros relevantes para o projeto em questo esto listados na tabela 1 juntamente com os respectivos valores para cada um dos microcontroladores. A quantidade de memria FLASH e de RAM em ambos os casos suficiente para a aplicao. A maior RAM no PIC chama a ateno, mas a sua organizao orientada para 8 bits e dividida em blocos (mesmo que possa ser acessada linearmente por meio de algumas instrues e artifcios) dificulta o programa. O barramento de 16 bits do MSP faz diferena nas aplicaes que precisam de 16 ou mais bits para representar os dados utilizados como foi o caso. A pequena diferena de velocidade a mais do PIC (100 ns contra 125 ns) perde-se quando exigido mover ou processar valores de 16 bits. Os conversores A/D, para a aplicao, empataram assim como as sadas PWM. O mesmo pode-se dizer dos pinos de I/O, que apesar de em menor quantidade no MSP, todos eles possuem histerese quando programados como entradas.Todavia, os pinos do PIC possuem maior capacidade de absorver ESD e sobre-tenses induzidas com seus diodos de proteo que suportam 20 mA. Estes pinos precisam de apenas um pequeno resistor em srie (< 1 k? ) para suportar sinais de entrada com mais de 12V de amplitude. MSP430F149 60+0.25K 2048 16 bits 8+4 12 bits 7 48 125ns 125ns 2,7 3,6V 4.5 mA 25 mA 2mA US$ 11.20 PIC18F6720 128+1K 3840 8 bits 12 10 bits 5 53 100ns 2400ns 4,2 5,5V 38 mA 200mA 20mA US$ 12.00

Memria Flash Memria RAM Barramento Canais A/D Resoluo A/D Sadas PWM Pinos de I/O Velocidade (ciclo) Multiplicao de 16 bits Alimentao (mx clock) Consumo (mx clock) Capacidade de corrente Proteo sobre tenso Custo (Brasil 1K um.)

18

Custo ferramenta SW Grtis Grtis Custo do programador $5 (feito em casa) > $30 (programador ou cabo programao completo) Tabela 1 Comparao dos microcontroladores. Os preos, posto no Brasil, so aproximados Na prtica, deve-se considerar a maior tenso possvel que pode ocorrer em uma determinada entrada e ento calcular os parmetros do circuito de proteo necessrio. As entradas analgicas, por exemplo, no podem ter um resistor em srie muito alto devido limitao da impedncia de entrada. s vezes, em aplicaes muito sujeitas a rudos eltricos de alta tenso, usa-se supressores de transientes (TVS) como uma primeira barreira de proteo antes do resistor que vai proteger o microcontrolador. Isso permite reduzir o valor do resistor porque sabe-se que o TVS limitar a tenso mxima em seus terminais. Mais uma vez, contudo, deve-se considerar se os possveis rudos eltricos sero muito rpidos e assim verificar se o TVS escolhido possui velocidade suficiente para ser realmente eficaz. Outro item o custo da superviso. O PIC possui detector de falha de alimentao mas no detecta diretamente quando o oscilador a cristal pra. O MSP precisa de um supervisor de tenso externa (o que significa maior custo final), porm comuta automaticamente os osciladores em caso de falha. A manuteno do controle no caso de falha do cristal, a tenso de alimentao e o consumo foram determinantes na escolha final. Embora o PIC possa trabalhar em modos de muito baixo consumo, ele acaba no sendo apropriado para uma aplicao que exija trabalhar em muitos perodos apenas com uma bateria e em velocidade mxima. Como o MSP opera muito bem com uma alimentao de 3V, o uso de uma simples pilha tipo boto e um diodo de chaveamento tipo BAT85 resolvem o problema contra um circuito mais sofisticado para gerar e regular os 5V necessrios ao PIC. A interface entre os 3V do MSP e os circuitos externos, alimentados com 5V, simples de resolver e o ganho de velocidade, essencial para os necessrios clculos em ponto fluente, oferece uma performance e resultados melhores nesta aplicao especfica.

Ferramentas
Ambos os fabricantes dos microcontroladores oferecem ferramentas de softwares gratuitas, embora os dois exijam um tipo de cabo de programao. No caso do MSP430, o usurio pode at construir seu prprio cabo, que muito simples, gastando cerca de US$ 5 em materiais. O diagrama eletrnico do cano no publicado explicitamente pela Texas, mas pode ser inferido com alguma habilidade ao analisar os diagramas dos kits de desenvolvimento que esto disponveis em alguns de seus manuais. Para programar o PIC, preciso ter um equipamento de programao ou usar o MPLAB ICD (In-Circuit Debugger, custo aproximado de US$ 300), que um pequeno mdulo de interface entre o computador e o PIC. Alm da prpria Microchip, algumas outras empresas (como a brasileira Mosaico) fabricam mdulos de programao a um custo acessvel. Muitas vezes um projetis ta est mais acostumado com um determinado micro e, neste caso, o tempo de adaptao ao mudar de componente pode influenciar decisivamente no produto final ao demandar mais tempo para o desenvolvimento e por possveis erros de programa causados pela pouca experincia. A linguagem de programao fator importante na escolha do microcontrolador. No meu caso, que posso programar em Assembler e tenho muita experincia com os dois microcontroladores, ambas as ferramentas so satisfatrias. Para quem programa em C, preciso verificar se as ferramentas continuam sendo apropriadas. O compilador C da IAR (ferramenta da Texas) gratuito para programas de at 2 Kbytes de tamanho. Para programas com mais de 8 Kbytes pode chegar ao preo de US$ 2.400,00 (FOB USA). J o compilador C da Microchip custa perto de US$ 750,00 (posto no Brasil). Numa produo mdia ou pequena o preo da ferramenta de desenvolvimento pode refletir-se no custo final. Se forem produzidas apenas 2.000

19

unidades de um dado produto que empregou o compilador C da IAR, custando US$ 2.400,00, o custo real do MSP430 seria majorado em US$ 1,20. Naturalmente, existem outras fontes de ferramentas, muitas gratuitas, que podem ser encontradas na Internet e que merecem um estudo cuidadoso para saber se cumprem todos os requisitos exigidos. Deve-se levar em considerao tambm, a vida til do produto/projeto e a necessidade de manuteno do software. Algumas ferramentas tm licenas de tempo limitado e a capacidade de depurao ( ebugg) outro fator relevante diretamente d responsvel pela durao do desenvolvimento e manuteno futura. Em resumo, escolher um microcontrolador exige muito cuidado e conscincia dos parmetros do projeto e das condies em que o produto final ser submetido. Isso vale para qualquer outro componente do projeto, se quisermos um resultado funcional, econmico e, inclusive elegante.

TI.com IAR JTAG


MSP430F12X/F11X2/F12X2 Flash Emulation Tool, que pode ser encontrado e comprado pelo site http://focus.ti.com/docs/toolsw/folders/print/msp-fet430p120.html.

Kit de Desenvolvimento

MSP430F1232.pdf ou MSP430F149.pdf ou MSP430F169.pdf MSP430x1xx - User's Guide.pdf Programas 1232 ou 149 LCDmanual.pdf ou Pasta LCD

20