• Nenhum resultado encontrado

MSP430 Lab 06 Comunicação com display de 40 2 e análise

N/A
N/A
Protected

Academic year: 2021

Share "MSP430 Lab 06 Comunicação com display de 40 2 e análise"

Copied!
63
0
0

Texto

(1)

MSP430 Lab 06 – Comunicação

com display de 40×2 e análise

das formas de onda no

analisador lógico

Neste Lab iremos descrever os passos para a implementação do processo de comunicação entre o MSP430G2553, embarcado na LaunchPad da Texas Instruments, e um display de LCD de 40 colunas x 2 linhas sob o controle do clássico Hitachi HD4470.

Imagem tela LCD

Interface com o display

O controlador para Display’s de LCD HD44780 oferece uma interface de comunicação de 8 bits utilizando os 8 pinos de dados do D0 ao D7 ou em 4 bits utilizando somente os pinos D4 ao D7. Além dos pinos de comunicação, o controlador também necessita dos sinais de controle nos terminais RS (Register

Select), RW (Read/Write) e E (Enable). Uma descrição detalhada

da função de cada terminal é exposta abaixo:

RS -> Register Select: Indica se estamos enviando um comando para o controlador do display (RS=0) ou um dado a ser mostrado na tela (RS=1).

(2)

D0 a D7 são dados de escrita (RW=0) ou leitura de registros do controlador do display (RS=1). A maioria das aplicações preferem manter este dado em nível 0 (Aterrado) devido a necessidade de apenas escrita de comandos e dados.

E – Enable: Este terminal serve para indicar ao controlador o momento exato de apanhar os comandos ou dados disponíveis em D0 a D7. Obs: O controlador faz leitura dos dados somente na borda de descida do Enable. D0 a D7: Terminais utilizados para a exposição dos dados ou comandos para o controlador do LCD.

O modo em 4 bits

No modo de trabalho em 4 bits, somente os pinos D4 a D7 são utilizados para enviar comandos e dados ao display. Este modo proporciona uma economia de 4 portas do microcontrolador em relação ao modo em 8 bits.

Uma rotina de inicialização deve ser respeitada quando trabalhando em 4 bits para que o HD44780 possa “entender” que os comandos/dados serão enviados em 2 etapas, sendo elas o nibble (4bits de dados) mais significativo enviado primeiro e, logo após o pulso de enable, o nibble menos significativo.

Abordando o ponto de vista de velocidade, neste modo o tempo de comunicação entre o microcontrolador e o display dobra em relação ao modo de 4 bits pois os dados são enviados em duas etapas sendo intermediado pelo pulso de enable.

Inicialização do display

O diagrama abaixo ilustra o modo de inicialização do display quando trabalhamos 4 bits. Os tempos entre os comandos, descritos no diagrama, devem ser respeitados principalmente no início quando é estabelecido o modo de reset do controlador para que não haja erros de leitura e modo de operação do controlador.

(3)
(4)

Para o nosso algoritmo, a função criada para a sequência de inicialização do display está ilustrada abaixo. Cada comando está devidamente comentado para um fácil entendimento do leitor.

Função Start LCD

Set de instruções

O set de instruções básico deste controlador, retirado do datasheet do HD44780, está indicado abaixo.

(5)

Set de instruções HD44780

A descrição de cada parâmetro, assim como os valores possíveis de cada um, está descrito na imagem subsequente.

(6)

Descrição dos parâmetros do set de instruções

A leitura do Busy Flag e dos dados dos registradores do display é melhor indicada em aplicações onde necessita-se saber a exata posição do cursor, na elaboração de menus utilizando a tela do display ou em construção de rotinas de

Scroll mais complexas.

Na maioria dos casos, nenhum dado é lido do display. Para o correto funcionamento, é necessário apenas aguardas os tempos indicados no datasheet.

Algoritmo e teste

O algoritmo utilizado para esta aplicação está indicado abaixo. Todas as linhas estão comentadas para um melhor entendimento. De uma forma geral, este código é simples de ser implementado, visto que o datasheet é rico de comentários e indicações dos comandos exatos a serem enviados.

[crayon-5955836b47d72254028229/]

O diagrama de ligação está indicado abaixo. Um display genérico, de 16×2, foi utilizado neste esquema já que o

Fritzing não dispunha de um de 40×2 em sua biblioteca. Esta

troca não afeta em nada o projeto já que os displays de 16×2 também operam com este algoritmo.

(7)

Esquema de ligação

O diagrama temporal abaixo, utilizado para debug do funcionamento da comunicação, mostra a inicialização e configuração do controlador do display, onde os comandos são enviados já que o pino anexado no canal 0, RS, está em nível baixo.

(8)

Imagem Analisador Lógico -1

Já na imagem subsequente, ilustramos o envio dos dados referentes as letras “S” (0101 0011) e “c” (0110 0011) da palavra Scroll enviados ao display.

(9)

Imagem Analisador Lógico – 2

Na próxima imagem, detalhamos o envio da letra “S” (0101 0011), enviada em duas etapas. Os cursores em Azul indicam o momento que o controlador do display apanha os dados, que é exatamente na borda de descida do sinal de E (Enable).

(10)

Imagem Analisador Lógico – 3

Uma imagem da aplicação montada na protoboard está indicada abaixo,

(11)

Um vídeo com explicações detalhadas de todos os pontos abordados neste Lab esta indicado abaixo.

Conclusão

Neste Lab indicamos o processo de comunicação entre o MSP e o clássico controlador para displays HD44780. Como observado, este padrão de comunicação é simples e já está difundido no m e r c a d o a m u i t o s a n o s . U t i l i z a n d o a p l a t a f o r m a d e desenvolvimento LaunchPad e um analisador lógico de baixo custo, o desenvolvimento da aplicação se tornou menos “doloroso” grassas ao debug dos dados e de registradores do microcontrolador. Fica a cargo do leitor implementar outras aplicações que atendam aplicações específicas.

MSP430 Lab 05 – Biblioteca

básica para comunicação com o

Display do Nokia5110

(12)

Neste Lab trataremos da rotina de implementação de um código para comunicação entre o MSP430 e um display gráfico. Este display, como já mencionado em Labs anteriores, apresenta uma grande facilidade de implementação de um código para comunicação. Além do display, faremos a leitura do sensor de temperatura interno do MSP ao qual indicaremos o valor na tela do mesmo.

O processo de comunicação

A primeira parte da dinâmica de comunicação entre o display e qualquer dispositivo, como um microcontrolador ou microprocessador, foi descrita no Intel Edison Lab 04 onde descrevemos a organização da memória interna do display. Neste Lab, iremos detalhar ainda mais este processo com relação a dinâmica de envio de dados e comandos de configuração para o controlador do display.

Comandos para controle do display

A tabela apresentada abaixo é autoexplicativa com relação ao status dos principais comandos de configuração que devem ser enviados para o display.

(13)

A próxima tabela indica, em detalhe, quais os valores a serem carregados nos principais parâmetros descritos acima.

Valores dos Parâmetros

Detalhes dos comandos

Os comandos a serem enviados para o controlador do display serão descritos com mais detalhes abaixo.

Comando NOP: Nenhuma operação, ou seja, não faz nada!

Comando Funções de configuração: (Function Set) É um comando para configurar a operação do LCD.

-PD: É o bit para selecionar o modo de operação: PD = 0: Modo Ativo, PD = 1: Modo de economia de energia.

– V: É um bit para selecionar o formato de incremento dos endereços na memoria DDRAM do controlador PCD8544: V = 0: Incrementa os endereços na linha horizontal (Horizontal Address Mode, V = 1: Incrementa os endereços na linha vertical. (Vertical Address Mode

(14)

– H: É um bit para selecionar o formato dos comandos SCD: H = 0: Uso dos comandos básicos, H = 1: Uso de comandos adicionais.

Comando Escrita de dados: (Write Data) Comando para escrita de dados na memória DDRAM do display.

D7 – D0: Oito bits de dados devem ser enviados para mostrar no display.

Comandos configurados no Modo Básico (H=0)

Comando de Controle do Display: (Display Control) Comando para enviar comandos de controle para o display.

Comando Configura Endereço em Y na RAM: Este comando serve para configurar a posição do eixo Y no mapa de memórias da RAM. Os valores de Y estão entre 0 e 5 (6 linhas do display).

(15)

Comando Configura Endereço em X na RAM: Este comando configura os endereços, no mapa da memória RAM do controlador PCD8544, referentes ao eixo X do display.

Os valores de posição em X devem estar entre 0 e 83 (84 Colunas), logo, tendo 6 bits para configuração desta posição, os valores devem ser de 000 0000 (00H) à 101 0011 (53H).

Comandos configurados no Modo Adicional (H=1)

Comando de Controle de Temperatura do Display: Já que este display apresenta em seu interior um fluido (Display de Cristal Líquido) se a temperatura interna é muito baixa não teremos indicações legíveis na tela e os “pixels” não acenderão corretamente, logo é necessário compensar a tensão aplicada em cada célula do display. O gráfico abaixo mostra a relação entre a tensão aplicada VLCD e a temperatura.

(16)

Gráfico Temperatura x VLCD

Comando Controle de Polarização: Este comando configura a tensão de polarização do display. A tabela abaixo indica a combinação dos bits de configuração e a tensão referente a cada combinação escolhida.

Comando de Configuração do VOP: Este comando configura a tensão de operação VLCD.

(17)

O usuário pode configurar os valores utilizando os bits de Vop6 a Vop0 e calcular o VLCD de acordo com a equação abaixo.

Por exemplo: Se o usuário deseja um valor de 5 volts para VLCD, teremos:

Aproximando, teremos o valor de 32 (20H) ou 010 0000B. Logo, o comando a ser enviado para este parâmetro será 1100 0000B ou C0H.

Sequência de comandos para operação

do LCD

O melhor método para o controle de operação do Display é enviar os comandos de configuração e após os dados a serem apresentados na tela. Normalmente, a ordem de operação é:

(18)

Após o procedimento de inicialização do display ser finalizado, o usuário envia os dados a serem indicados no display. Normalmente, o comando referente ao posicionamento em X e Y devem ser enviados primeiro. Como exemplo, enviar a posição em X=0, Y=0 como indicado abaixo:

(19)

A tabela abaixo mostra um exemplo da escrita de um caractere na memória DDRAM no Display.

Exemplo Escrita de Caracter

Esquema de montagem e algoritmo

O esquema de montagem utilizado neste Lab segue as definições apontadas na tabela abaixo. O Esquema elaborado no software Fritzing é mostrado logo em seguida.

(20)

Tabela de Conexões

Esquema de Montagem

O algoritmo, elaborado no software Code Composer Studio da Texas Instruments, foi baseado no código escrito por RobG do fórum http://forum.43oh.com/. Acrescentamos a leitura do Sensor de temperatura interna do chip. Este código é mostrado abaixo.

[crayon-5955836b497dd647865599/] [crayon-5955836b49806092759388/]

(21)

p o d e m o s o b s e r v a r o i n í c i o d a c o m u n i c a ç ã o e n t r e o Microcontrolador e o display com a mudança de estado do sinal de RESET.

Imagem Analisador Lógico – Sinal de Reset

Já no gráfico subsequente observamos a dinâmica de comunicação entre os dois dispositivos.

Imagem Analisador Lógico – Sinal de Dados

Conclusão

Displays de LCD são componentes importantes em um projeto de Sistemas Embarcados. O detalhe de funcionamento e da dinâmica de implementação de um algoritmo são de grande importância no auxílio de outras pessoas não são familiarizadas com o

(22)

dispositivo.

Detalhes importantes para a escolha deste modelo de display como baixo consumo e ocupação de memória de programa interna ao microcontrolador fazem deste uma ótima escolha em projetos futuros.

Imagem Montagem Final

MSP 430 Lab 04 – Fontes de

clock e configuração das

entradas e saídas digitais

(23)

Teste com o sociloscópio

Neste Lab iremos descrever os passos necessários para inicialização de duas fontes de clock da CPU e da configuração das GPIO. O termo GPIO refere-se a General Purpuse Imput and

Output (Entradas e Saídas de Propósito Geral) e abrange todos

os pinos do microcontrolador que apresentam múltiplas funções. Tópicos como o processo de reset, opções de fonte de clock e manuseio do WDT (Watch Dog Timer) serão descritos neste lab. Ao final, seremos capazes de entender o algoritmo que faz uso dos sistemas de clock e acesso aos pinos de entrada e saídas deste microcontrolador.

Introdução

O microcontrolador MSP430G2553 apresenta um modo ativo de trabalho (Active Mode) e cinco modos de operação em baixo consumo, selecionáveis via software.

Um evento de interrupção pode “acordar” o microcontrolador que esteja em qualquer modo de operação em baixo consumo, processar a requisição que gerou a interrupção e retornar novamente para o modo de economia de energia programado anteriormente. Este comportamento é ideal para aplicações onde

(24)

o consumo de energia é um ponto crítico no desenvolvimento da aplicação.

Pinagem microcontrolador

Os seguintes seis modos de operação podem ser configurados via software no microcontrolador, são eles:

Modo Ativo (Active mode – AM)

Todas as fontes de clock são ativados.

Modo de baixo consumo 0 (Low-power mode 0 – LPM0) CPU é desligada.

ACLK e SMCLK permanecem ativos, MCLK é desligado. Modo de baixo consumo 1 (Low-power mode 1 – LPM1)

CPU é desligada.

ACLK e SMCLK permanecem active, MCLK é desligado. Os osciladores de Clock Digitais (Digitally

Controlled Oscilator – DCO’s) são desabilitados se

o DCO não for utilizado no Modo Ativo.

Modo de baixo consumo 2 (Low-power mode 2 – LPM2) CPU e desligada.

MCLK e SMCLK são desligados. DCO’s permanecem ativos. ACLK permanece ativo.

Modo de baixo consumo 3 (Low-power mode 3 – LPM3) CPU e desligada.

(25)

MCLK e SMCLK são desligados. DCO’s são desligados.

ACLK permanece ativo.

Modo de baixo consumo 4 (Low-power mode 4 – LPM4) CPU é desligada.

ACLK é desligado.

MCLK e SMCLK são desligados. DCO’s são desligados.

Oscilador a cristal tem seu funcionamento interrompido.

Inicialização e GPIO

Durante o processo de inicialização do microcontrolador várias ações ocorrem internamente no microcontrolador com o intuito de garantir o funcionamento correto do dispositivo. A seguir, descrevemos o estado do sistema durante a inicialização:

Na alimentação (Power Up – PUC) o circuito que verifica o nível de tensão de alimentação mantém o dispositivo em reset até que o VCC esteja em um nível acima do ponto de histerese.

O pino 16 (RST/NMI) é configurado automaticamente como reset.

Os clocks do sistema são configurados.

M ó d u l o s d o s p e r i f é r i c o s e r e g i s t r a d o r e s s ã o configurados.

O registrador de status (SR) é resetado.

O contador de programa (Program Counter – PC) é carregado com o endereço de memória que está contido no vetor de reset (0FFFEh). Se o valor contido nesta posição de memória for 0FFFFh, o dispositivo vai ser desabilitado para um consumo mínimo de energia.

A b a i x o , i l u s t r a m o s o M a p a d e M e m ó r i a r e f e r e n t e a o microcontrolador MSP430G2553.

(26)

M a p a d e m e m o r i a MSP430

Após o reset ou início do sistema, o software deve:

Iniciar o ponteiro da pilha, tipicamente no topo da área de memória RAM (Random Acces Memory).

Reconfigurar os clocks (se necessário).

Iniciar o watchdog timer de acordo com a aplicação, usualmente desligado no modo de debugging.

Reconfigurar os periféricos de clock.

Sistemas de Clock’s e Osciladores

Um dos primeiros sistemas a ser programado e entendido pelo usuário é o clock do dispositivo.

O sistema de clock é baseado no modo básico que inclui suporte para o cristal externo de 32768 Hz, um oscilador interno de baixo consumo e baixa frequência (Low Power and Low Frequency

– LF) e um oscilador interno digital (Digitally Controlled Oscillator – DCO).

O sistema básico de clock foi desenvolvido para garantir as necessidades de baixo custo e baixo consumo. O DCO interno garante um rápido retorno dos modos de baixo consumo, com

(27)

estabilidade de operação, em menos de 1 µs.

O módulo básico de clock fornece os seguintes sinais:

Clock Auxiliar (Auxiliary clock – ACLK), alimentado pelo cristal externo de 32768 Hz ou pelo oscilador interno de baixa frequência (LF).

Clock principal (Main clock – MCLK) que é o sistema de clock utilizado pela CPU.

Sub-Main clock (SMCLK), sendo o subsistema utilizado pelos periféricos.

As fontes de clock ilustradas na figura abaixo, apresentam as seguintes características:

Very Low Power/Low Frequency Oscillator (VLO)

4 –20kHz (típico em 12kHz) 500nA no modo standby

5%/°C e 4%/Mudança de tensão

Crystal oscillator (LFXT1)

Capacitores interno programáveis.

Apresenta segurança contra falhas – OSC_Fault. Mínimo pulso na filtragem.

Digitally Controlled Oscillator (DCO)

0-to-16MHz (Calibração de fábrica geralmente em 1 MHz).

+3% de tolerância.

Calibração de fábrica é armazenado na memória

(28)

Fontes de clock família MSP430

Existe uma relação direta entre a tensão de alimentação do microcontrolador e a frequência de clock na qual queremos que o sistema opere. No gráfico abaixo, essa relação e ilustrada.

Gráfico relação entre frequência de trabalho e alimentação

Observamos que para uma alimentação em 1,8 V o sistema pode operar somente em 6 MHz. Já para alimentações entre 3,3 e 3,6V a frequência de operação pode chegar à até 16 MHz. Esta relação tem como principal objetivo atingir o mínimo de consumo de energia relacionando a frequência e tensão de alimentação.

(29)

Funcionamento do sistema de segurança (Failsafe)

do WatchDog Timer – WDT

Algumas ações são tomadas automaticamente se a fonte de clock escolhida para a aplicação falhar e o módulo de segurança do W D T é r e s p o n s á v e l p o r e s t a s a ç õ e s . U m d i a g r a m a d e funcionamento do Failsafe é ilustrado logo abaixo.

Se o ACLK ou SMCLK falhar, a fonte de clock passará a ser o MCLK (WDT + failsafe feature).

Se o MCLK for alimentado pelo cristal e o cristal falhar, MCLK será o DCO (XTAL failsafe feature).

Essas mudanças automáticas da fonte de clock são impostas para garantir que o sistema não desenvolva ações inesperadas por falhas no sincronismo entre os periféricos e processamento.

F o n t e s d e c l o c k e WDTC

Existe uma outra restrição quanto a fonte de clock do WDT. Não podemos desabilitar a fonte ativa de clock que selecionamos para o WDT. Devemos ter em mente que alguns dos modos de baixo consumo desabilitam o DCO, desligam o SMCLK e podem também desabilitar o VLO.

(30)

Limitação na desativação de uma fonte de clock

Se o WDT for alimentado por uma das fontes descritas anteriormente, não podemos desligar essa fonte de clock no modo de baixo consumo. Um modo de proteção contra essa ação é implementado no compilador do CCS.

Teste das fontes de clock

Para testar as diferentes formas de se usar os módulos de clock deste microcontrolador, crie um novo projeto seguindo os mesmos procedimentos descritos nos Lab 02 e 03.

(31)

CCS novo projeto

No arquivo main.c, copie e cole, inicialmente, o código disponível no quadro abaixo.

[crayon-5955836b4b64d133520587/]

Operando a CPU utilizando o VLO

Vamos iniciar os testes neste Lab operando a CPU na fonte de clock VLO. Este é o clock de menor frequência e trabalha aproximadamente em 12 KHz então, iremos observar sua ação piscando o led vermelho a uma frequência de aproximadamente uma vez a cada 3 segundos. Não vamos utilizar nenhum

(32)

periférico de clock neste agora, apesar do cristal já ter sido montado na launchPad anteriormente.

Informações mais detalhadas sobre os registradores que serão abordados logo em seguida, poderão ser obtidas consultando-se o User Guide do MSP430 neste link.

1 – Com o propósito de conferirmos a execução do código (debug), será melhor parar a execução do watchdog timer. Desta forma, não precisamos nos preocupar com suas ações (Seção 10.3.1 do User Guide). Dentro do arquivo main.c adicione o seguinte código:

WDTCTL = WDTPW + WDTHOLD;

O WDTCTL é o registrador do watchdog timer. Esta instrução configura a password (WDTPW) e o bit responsável por parar o timer (WDTHOLD).

2 – Agora, precisamos configurar o LED que estará conectado a linha de entrada e saída – GPIO. O LED verde está localizado no Port 1 Bit 6 e precisamos de configurá-lo como saída. O LED acenderá quando a saída é configurada com “1”. Vamos limpar este registrador para manter o LED desligado (Seção 8.3 do

User Guide). Adicione as duas linhas seguintes de código no main.c.

P1DIR = 0x40; P1OUT = 0;

3 – Para configurar o sistema de clock a ser utilizado neste experimento, adicione a linha de código abaixo no main.c.

BCSCTL3 |= LFXT1S_2;

O BCSCTL3 (Seção 5.3.4 do User Guide) é um dos registradores d o s i s t e m a b á s i c o d e c l o c k d e s t a f a m í l i a d e microcontroladores. Na seção 5.3, página 282 do Guia do Usuário, informa que o estado de reset deste registrador é

(33)

005h. Se conferirmos os campos deste registrador obtemos que estas configurações são para o cristal de 32768 Hz conectado ao LFXT1 com capacitores de 6pF e falha do oscilador configurados.

O operador de estado lógico OR utilizado acima, juntamente com o registrador LFXT1S_2 (Valor 020h – Página 285 do U.G) resulta em um valor 025h. Este valor configura os bits 4 e 5 para 10b, habilitando o modo VLO clock.

4 – O sistema de clock irá forçar o MCLK a usar o DCO como fonte na presença de uma falha no clock (Seção 5.2.7), precisamos então apagar este flag de falha. Inclua as linhas abaixo no programa.

IFG1 &= ~OFIFG;

O registrador IFG1 é o Interrupt Flag Register 1. O bit configurado no campo do registrador é o Oscilator Fault

Interrupt Flag – OFIFG. A lógica AND aplicada entre IFG1 e NOT

OFIFG (Valor 2) irá zerar o bit 1 do registrador IFG1 (Seção 5.3.6 – pag. 285 do U.G)

5 – Precisamos aguardar aproximadamente 50us para que o sistema de falha de clock (Clock Fault System) possa reagir. Operando com o VLO em 12KHz, parando o DCO, iremos garantir este tempo de 50us. Adicione as linhas abaixo:

_bis_SR_register(SCG1 + SCG0);

SR é o Registrador de Status (Status Register) e todas as informações referentes as definições do SCG0 (System clock

generator 0) e SCG1 (System clock generator 1) estão

disponíveis na seção 4.3.3 – pág. 121 do U.G.

A operação intrínseca _bis refere-se a chamada de um registro em assembler dentro de um programa escrito em linguagem C.

6 – Temos também um divisor no clock MCLK 3. Vamos dividir por 8 utilizando o seguinte código.

(34)

BCSCTL2 |= SELM_3 + DIVM_3;

Os valores dos registradores utilizados na operação OR acima estão descritos na seção 5.3.3 pág. 284 do U.G.

Um pequeno código será implementado para que o LED verde possa piscar.

[crayon-5955836b4b689530797678/]

A instrução P1OUT já foi explicada anteriormente. A função __delay é intrínseca ao compilador e serve para gerar atrasos na execução do programa. O único parâmetro requerido é o número de ciclos de clock que a CPU ficará aguardando. Esta não é uma forma correta de gerar atrasos e isso será explicado posteriormente.

Salve o código apresentado abaixo, resultado de nosso trabalho até este momento.

[crayon-5955836b4b69e907382040/]

Clique no botão “Debug” e carregue o código na LaunchPad como descrito no Lab02 e 03. Se tudo proceder da forma esperada, o LED verde deverá piscar.

(35)

Sinal do pino conectado ao LED verde

Operando a CPU utilizando o Cristal

7 – A frequência do cristal é 32768 Hz, quase três vezes mais rápida que o VLO. Se executarmos o código anterior utilizando o cristal, o LED verde deveria piscar uma vez a cada segundo. O valor de 32768 Hz é padrão pois representa o número 215 tornando fácil o uso de um simples contador digital para uma taxa de uma vez por segundo, perfeito para relógios e outros tipos de temporizadores.

8 – Esta parte do experimento utiliza o código anterior como ponto de partida. Os dois LEDs serão utilizados, logo devemos configura-los como saída utilizando as seguintes linhas de código:

(36)

Alterar: P1DIR = 0x40; Para: P1DIR = 0x41;

Fazendo o LED vermelho (P1.0) iniciar ligado: Alterar: P1OUT = 0;

Para: P1OUT = 0x01;

9 – Precisamos de selecionar o cristal externo como uma entrada de baixa frequência.

Mude: BCSCTL3 |= LFXT1S_2;

Para: BCSCTL3 |= LFXT1S_0 + XCAP_3;

O parâmetro XCAP_3 seleciona o capacitor de carga de 12pF. Uma capacitância alta é requerida para cristais de baixa frequência.

10 – No código anterior nós limpamos o flag do registrador OSCFault, agora queremos ter certeza de que este flag esteja limpo e que o cristal funcione corretamente. Isto irá exigir um loop com um teste.

[crayon-5955836b4b6b2215689224/]

A condição para o loop while(IFG1 & OFIFG) testa o OFIG no registrador IFG1. Se este flag de falha for limpo, a execução irá sair do loop. Precisamos aguardar 50us após limpar o flag a t é q u e p o d e m o s t e s t a - l o n o v a m e n t e . A f u n ç ã o _delay_cycles(100000); é mais longa do que 50us. Precisamos que este tempo seja longo para que podemos ver o LED vermelho acender no começo do código. Caso contrário ele irá piscar tão rápido que não conseguiremos observar.

11 – Finalmente, precisamos adicionar uma linha no código para desligar o LED, indicando que o algoritmo passou pelo teste de falha. Adicione a nova linha após o while loop:

(37)

P1OUT = 0;

Após todas as mudanças, o seu código deverá se parecer com o mostrado no quadro abaixo.

[crayon-5955836b4b6c8339755061/]

Novamente, aperte o botão “Debug” e aguarde ate que a tela de Debug aparece, em seguida, pressione a opção “Resume” ou aperte F8. (Procedimento já detalhado em Lab’s anteriores). Se tudo der certo, o LED vermelho deverá piscar rapidamente (Tempo gasto no delay e aguardando para o cristal iniciar) e logo em seguida o LED verde deverá acender uma vez a cada segundo.

Na figura abaixo observamos o monitoramento do sinal no pino conectado ao LED verde (sinal na cor azul), ligando e desligando por um tempo muito curto e no canal 2 (sinal na cor amarela) temos o funcionamento do LED vermelho que ativa somente antes do cristal iniciar.

(38)

Sinal nos pinos do Led verde e vermelho

Conclusão

Neste Lab aprendemos a dinâmica de configuração dos registradores necessários para o funcionamento desta família de microcontroladores e de duas fontes principais de clock. Uma primeira visão detalhada sobre as configurações deste microcontrolador pode assustar o usuário, porém elas são necessárias para um entendimento correto do que exatamente estamos programando, já que comportamentos inesperados de funcionamento podem ser evidenciados em uma aplicação industrial ,por exemplo, e isto é um fator mais do que crítico para qualquer projeto.

(39)

MSP430 Lab 03 – Montagem e

teste do cristal

LaunchPad Texas Instruments

Neste Lab explicaremos como montar o cristal de referência (32.768 KHz) que por padrão não é soldado na placa LaunchPad G2. A Texas envia o kit com o cristal desmontado para que possamos usar os dois pinos do microcontrolador (XIN XOUT) como entrada ou saída digital em nossas aplicações. Lembrando que o cristal pode ser montado na normalmente e caso seja necessário utilizar os dois pinos como I/O, o mesmo pode ser retirado da placa e montado em uma protoboard para aproveitar as funcionalidades destes pinos em outras aplicações.

Introdução

(40)

LaunchPad inclui um oscilador a cristal opcional de 32.768 KHz que pode ser soldado na placa de acordo com a necessidade. A construção da placa permite que as linhas de sinal XIN e XOUT possam ser usadas como entradas ou saídas digitais.

Quando o cristal é soldado na placa, estas entradas serão reconhecidas pelo microcontrolador como entradas digitais de frequência.

Tenha em mente que o procedimento de solda do cristal é muito delicado por ser uma superfície de dimensões muito limitadas, apresentando as pads (trilhas) de 0,5 mm.

Local do cristal

O cristal não é pre-soldado na placa pela TI pois a LaunchPad possui um número reduzido de pinos de entrada e saída. Isto permite ao usuário mais flexibilidade nas aplicações que exigem muitas I/O’s.

Montando o cristal na LaunchPad

Os conectores do oscilador oferecem a orientação necessária para o procedimento de solda. Eles estão em uma posição que

(41)

somente as pontas irão encaixar no local exato de montagem.

Pinos do cristal

Deposite um pouco de solda sobre as pads e o apoio do cristal.

Local para solda

Com uma pinça ou um alicate pequeno, segure o cristal no local da solda e aqueça a parte de trás afim de derreter a solda depositada na apoio.

(42)

Posicionamento com um alicate comun

Desta forma, o componente estará firme e fixo. Agora basta apenas soldar as pads na parte da frente do cristal, com cuidado para não unir e curto circuitar as mesmas. Dessa forma, o cristal estará pronto para ser usado nas aplicações que exigem uma referência de clock.

(43)

Teste

Crie um novo projeto, seguindo os mesmos procedimentos descritos no Lab 02. Não se esqueça de selecionar a opção

Empty Project (with main.c). Click em Finish quando terminar

as configurações.

File -> New -> CCS Project

(44)

No arquivo c, copie e cole o código disponível logo abaixo.

[crayon-5955836b4c499607301367/]

Descrição do funcionamento do algoritmo: O sistema funciona normalmente no modo LPM3 (Low Power Mode 3) com o WDT (Watch

Dog Timer) alimentado com um clock de 32.768 KHz e com ACLK (Auxiliar clock) com 1×4 segundos de interrupção. A saída P1.0

muda seu estado a cada segudo dentro da interrupção pelo WDT. Se uma falha no LFXT1 (Low Frequency Crystal Oscilato), NMI

(Oscillator Fault Flash memory access violation) é forçado a

sair do modo LPM3. O pino P1.0, ligado ao LED vermelho, muda seu estado rapidamente pelo software pois uma falha no oscilador estará presente.

Compile o arquivo e grave na Launchpad. Você deverá ver o led piscando com um período de dois segundos se o procedimento de solda do cristal foi completado corretamente, caso contrário, o LED piscará com uma frequência de 1Hz, logo a solda deve ser conferida novamente.

(45)

Conclusão

Neste terceiro Lab explicamos o procedimento para montagem (solda) e teste do funcionamento do cristal que acompanha o kit de desenvolvimento da Texas Instruments. Como citado anteriormente, este cristal não é montado na placa pelo simples fato de oferecer ao usuário a opção de duas I/O’s a mais para a aplicação em que o mesmo está trabalhando. Sua função é importante em casos de interrupção por WDT, como observado no exemplo acima, e para sincronia da CPU utilizando um oscilador mais preciso.

MSP430 Lab 02 – Criar e

Compilar um projeto

Software CCS

Neste post iremos criar um novo projeto utilizando a IDE CCS da Texas Instruments, compilar o código feito em linguagem C e fazer o Debug da aplicação utilizando a mesma ferramenta.

(46)

Introdução

A sigla IDE significa Ambiente de Desenvolvimento Integrado (Integrated Development Environment) e contém todas as ferramentas necessárias para desenvolver projetos embarcados (Compilador, Simulador, Editor, Debug, OS e outros). A interface de programação do CCS suporta dois modos de operação sendo eles o simples, com funcionalidades básicas de edição/compilação e menus com poucos itens, e o modo avançado onde à opção de integrar aplicativos à IDE além de menus e janelas mais versáteis e complexas. O usuário pode alterar entre os dois modos a qualquer momento acessando o menu de opções da IDE.

A área de trabalho do CCS (Workspace) segue o mesmo padrão de interfaces já conhecidas como MPLAB-X da Microchip, o Code

Warrior da Freescale dentre outras, onde a barra lateral à

esquerda contém a “arvore” dos projetos. Na figura abaixo, observamos a hierarquia de organização dos projetos alocados na área de trabalho do CCS.

Hierarquia CCS

Iniciando o CCS e o Workspace

A criação de um novo projeto utilizando o CCS é feita de forma fácil e intuitiva, utilizando o Project Wizard, configurando

(47)

os dados do projeto em apenas uma janela.

Inicie o Code Composer Studio e abra o Workspace.

Iniciando o CCS

Quando o CCS carregar, uma janela de diálogo irá abrir indicando a localização da pasta workspace. Encontre o local onde o seu projeto deverá ser salvo. Se deseja que esta seja a pasta permanente, marque a opção “Use this as the default …”. Clique em OK.

Esta pasta contém todas as configurações padrões do CCS incluindo as do projeto e janelas quando a IDE é fechado, logo as mesmas configurações vão estar disponíveis quando o software for aberto novamente.

(48)

Configurações de licença

Na primeira vez que o CCS é aberto, a janela “License Setup

W i z a r d ” d e v e a p a r e c e . C a s o v o c ê j á i n i c i o u o C C S

anteriormente e fez a opção errada, basta ir no menu Help ->

Code Composer Studio Licensing Information e clicar na aba Upgrade e no botão Launch License Setup… -> selecione o botão CODE SIZE LIMITED e clique Finish, como pode ser observado

na figura acima.

Se você planeja trabalhar somente com a linha LaunchPad, a limitação de código para a versão Free do CCS (16 KB) não será um problema pois estes microcontroladores suportam exatamente 16 KB de memória Flash.

(49)

Janela de trabalho do software

O termo workbench se refere a Desktop do Ambiente de desenvolvimento (desktop development environment) ou mesa de trabalho em tradução livre.

A workbench irá abrir na visualização “CCS Edit” como observado no canto superior direito da imagem acima e esta visualização é usada para criar ou montar projetos em C/C++. A aba referente à “CCS Debug” é automaticamente habilitada quando a sessão de debug é iniciada. Esta janela é utilizada para analisar o projeto quanto à valores das variáveis, contador de programa, registradores e muito mais.

Criando um novo projeto

Um projeto contém todos os arquivos necessários para gerar o arquivo de saída (.out) e o binário que será executado no

hardware do MSP430. Para criar um novo projeto clique em: File -> New -> CCS Project

(50)

CCS new project

Nesta janela, nomeie o projeto e escolha o modelo do microcontrolador. Mantenha as opções como mostrado na figura acima para a placa LaunchPad. Não se esqueça de clicar em

Empty Project (with main.c) para um básico template de edição

ser adicionado. Clique em Finish.

O software adicionará o projeto ao workspace e irá mostrá-lo no painel lateral esquerdo (Project Explorer). Abra o arquivo main.c para edição.

(51)

Editar, compilar e Debug do

algorítmo

[crayon-5955836b4d9f0378066763/]

Questões como registradores específicos do microcontrolador, timer e outros serão discutidos em laboratórios posteriores a este.

Clique no botão salvar, localizado na barra superior, como observado na figura abaixo.

Botão salvar projeto

Clique no botão Debug.

Botão de debug

(52)

a janela de debug perspective view será aberta e o mesmo será carregado na memória Flash do microcontrolador automaticamente se não houver nenhum erro.

Quando o download do executável para a memória Flash do

microcontrolador completar, a janela Debug perspective irá

abrir e será nela que iremos trabalhar a partir de agora.

Área de debug do software

A confirmação de “onde estamos” pode ser observado na aba no canto superior direito da tela, como observado na figura abaixo.

(53)

Janela de debug

Neste ponto de nossa prática, o programa já está carregado dentro da Flash do microcontrolador, porém ainda não estamos vendo o Led piscar. Se observamos na janela principal, há uma pequena seta azul apontando para a função main(). Esta seta indica para onde o contador do programa (Program Counter – PC) está apontando.

Clique no batão Resume para executar o código.

Botão de início executar o firmware

Neste momento, o led vermelho (Figura abaixo) deverá piscar em uma frequência de 4 Hz.

(54)

Posição do LED em teste

Quando clicamos no botão Suspend, a seta azul, localizada ao lado dos números das linhas do programa na janela main.c, deve parar em alguma parte do código, pois estamos interrompendo a execução e não especificamos o local exato do apontador.

Botão para parar a execução do firmware

Se clicarmos no Suspend, as opções step into, step over e step

(55)

Opçoes de debug

Estas funções sevem para navegar dentro da execução do programa e é ilustrado pela seta azul. Provavelmente, o programa que estamos executando deve parar no final da função

do while. Se observarmos na aba variables (Lateral superior

direita), teremos o valor da variável i declarada para armazenar a contagem da temporização entre o led aceso e apagado.

Janela com valores de registradores e variáveis

Clicando no botão Step Into a seta azul (Figura abaixo) deve se posicionar no laço do while. Se clicarmos novamente, a seta deve ir para o final do looping e clicando mais uma vez ela volta para o laço do while. Este ciclo irá ocorrer ate que a variável i tenha o seu valor totalmente decrementado. O valor da variável é observado como descrito acima.

(56)

Posição do ponteiro do Program Counter

Para terminar o modo Debug basta apertar o botão Terminate (Figura abaixo). A janela irá fechar automaticamente e o software irá abrir o “CCS Edit”. Deste modo, podemos criar, editar e alterar o algorítmo novamente.

Botão para terminar a execução e voltar ao Edit Window

Conclusão

Neste segundo post descrevemos como criar, editar, compilar e analisar um projeto utilizando a IDE CCS. Como observamos, todo o processo é feito de forma clara e podemos afirmar que o

(57)

CCS é uma das interfaces mais poderosas e completas para o d e s e n v o l v i m e n t o d e a p l i c a ç õ e s e m b a r c a d a s p a r a microcontroladores, e no caso da Launchpad, não apresenta nenhuma restrição por estar na versão Free.

MSP430 Lab 01 – Instalação do

Code Composer Studio e teste

da Launchpad

Imagem LaunchPad Texas Instruments

Neste post iremos tratar dos primeiros passos com o microcontrolador MSP430G2553 da Texas Instruments (TI) montado na plataforma de prototipagem LaunchPad, incluindo a instalação do Code Composer Studio (CCS) e as configurações inicias necessárias para o hardware. Explicaremos também como

(58)

testar o programa pré instalado no microcontrolador pela TI.

Introdução

A placa MSP-EXP430G2 foi concebida pela Texas Instruments para ser de baixo custo. O software Code Composer Studio fornece um completo ambiente de desenvolvimento para sistemas embarcados, possuindo um emulador/depurador USB auxiliando na verificação do firmware, além de leituras online dos registradores e posições de memória.

Abaixo, destacamos algumas das principais características do microcontrolador montado na LaunchPad:

Alimentação de 1.8V a 3.6V Baixo consumo (220µA / MIPS) Arquitetura RISC de 16 bits Oscilador de 16 MHz

16 KB de memória flash 512 Bytes de memória RAM

20 pinos no encapsulamento PDIP 2 temporizadores de 16 bits UART, LIN, IrDA, SPI, I2C. 8 conversores AD de 10 bits. Cap touch I/O

Retorno do modo Standby (Wake-Up) < 1µs

Nesta série de tutoriais vamos utilizar esta plataforma para estudar aplicações para sistemas embarcados. Primeiramente, precisamos nos familiarizar com os materiais relacionados, incluindo a instalação do CCS e da biblioteca de programas fornecida com a ferramenta pela TI.

Instalação do CCS

A IDE de desenvolvimento Code Composer Studio pode ser baixada

neste link no site da TI. Você poderá baixar o instalador web ou o off-line. Clicando no link para a instalação, uma janela

(59)

será aberta lhe direcionando para logar em sua conta ou criar uma nova gratuitamente, então após aceitar as condições para o download, você receberá um link no e-mail cadastrado ou uma página se abrirá para o download.

Baixe o instalador e clique no executável.

Download do instalador

Aceite os termos de licença do software e clique Next.

Termos de licença

(60)

Local para instalação

Escolha os softwares das famílias de produtos na qual você deseja instalar e clique Next. Neste post, iremos instalar para a família de microcontroladores MSP430 e para a família de DSP’s de núcleo simples, na qual trataremos em outras práticas sobre Processadores Digital de Sinais (DSP).

Escolha dos softwares a serem instalados

Na tela sobre as ferramentas de Debug, deixe as opções default e clique Next. Também faça isso para a tela de

(61)

complementos do CCS.

Opções ferramenta de debug

Após clicar em Finish, a tela de instalação do CCS surgirá. Lembrando que o tempo de instalação do software é proporcional as opções escolhidas anteriormente. Aguarde o final da instalação e o software estará pronto para ser usado.

(62)

Executando

a

aplicação

de

demonstração na LaunchPad

O microcontrolador instalado no socket da LaunchPad já possui um programa pré carregado que faz uso de vários periféricos como conversor AD, Timer, PWM e UART, auxiliando na verificação do funcionamento correto da placa. Quando ela é conectada a uma porta USB do PC, os LEDs verde e vermelho, próximos ao botão S2, começam a piscar. O emulador onboard gera toda à alimentação necessária para iniciar esta demonstração.

Descrição Launchpad

O driver da placa será instalado automaticamente. Se alguma tela do Windows lhe perguntar algo sobre a instalação do s o f t w a r e , s o m e n t e p e r m i t a q u e e l e s e j a i n s t a l a d o automaticamente.

(63)

piscar, é um bom sinal de que a instalação dos drivers do

hardware foi feita corretamente.

Para alternar entre a aplicação que pisca os LED’s e a que faz a leitura de temperatura, basta apenas pressionar o botão S2 (P1.3). O sensor utilizado está alocado internamente ao microcontrolador e irá mediar a temperatura do encapsulamento do chip.

A medida da temperatura de referência é feita quando o microcontrolador é colocado no modo TEMP (botão S2 pressionado uma vez). Se um dedo for posicionado sobre o encapsulamento do microcontrolador por alguns minutos, o LED vermelho aumentara o seu brilho indicando que a temperatura está mais alta do que a de referência. Já se algum objeto com uma temperatura menor do que a de referência for encostado no encapsulamento, o LED verde aumentará seu brilho indicando que a temperatura está diminuindo.

Se logo após que o dedo for retirado do contato com o chip, o botão S2 for pressionado novamente, a referência de temperatura será agora mais alta do que a ambiente e a medida que o chip for restabelecendo sua temperatura normal, o LED verde incrementará seu brilho.

Conclusão

Neste primeiro post descrevemos os passos para a instalação do software de desenvolvimento CCS e o teste do firmware gravado de fábrica pela TI no microcontrolador. A LaunchPad é uma plataforma poderosa onde o baixo custo e consumo são pontos chaves para a escolha desta placa para prototipagem de projetos acadêmicos que utilizem a alimentação por baterias por exemplo.

Referências

Documentos relacionados

Starting out from my reflection on the words cor, preto, negro and branco (colour, black, negro, white), highlighting their basic meanings and some of their

Estudos sobre privação de sono sugerem que neurônios da área pré-óptica lateral e do núcleo pré-óptico lateral se- jam também responsáveis pelos mecanismos que regulam o

O objetivo deste trabalho foi realizar o inventário florestal em floresta em restauração no município de São Sebastião da Vargem Alegre, para posterior

Estes limites são avaliados antes do envio de cada ordem ao sistema de negociação, permitindo estabelecer, para cada comitente¹, os seguintes parâmetros de negociação:

La asociación público-privada regida por la Ley n ° 11.079 / 2004 es una modalidad contractual revestida de reglas propias y que puede adoptar dos ropajes de

Enfim, está claro que a discussão entre Ghiselin e De Queiroz diz res- peito ao critério de identidade para táxons. Para Ghiselin, um indivíduo é algo que não apresenta

Atualmente o predomínio dessas linguagens verbais e não verbais, ancorados nos gêneros, faz necessário introduzir o gênero capa de revista nas aulas de Língua Portuguesa, pois,

Fluminense, UFF; Alberto Efendy Maldonado de la Torre, Universidade do Vale do Rio dos Sinos, UNISINOS; Alexandre Almeida Barbalho, Universidade Estadual do Ceará, UEC; Amparo