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

Documentos relacionados
MSP430 Lab 02 Criar e Compilar um projeto

MSP430 Lab 01 Instalação do Code Composer Studio e teste da Launchpad

MSP 430 Lab 04 Fontes de clock e configuração das entradas e saídas digitais

MSP430 Lab 03 Montagem e teste do cristal

MSP430 Lab 02 Criar Compilar um projeto

MSP430 Lab 06 Comunicação com display de 40 2 e análise das formas de onda no analisador lógico

MSP430 Lab 05 Biblioteca básica para comunicação com o Display do Nokia5110

MSP 430 Lab 04 Fontes de clock e configuração das entradas e saídas digitais

Arduino Lab 01 Sensor de luminosidade BH1750FVI

Arduino Lab 01 Sensor de luminosidade BH1750FVI

Arduino Lab 02 Sensor de luminosidade e display de LCD 16 2

IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias

EL08D - MICROCONTROLADORES

Introdução ao Uso do LCD Inteligente (Versão Preliminar) Por Gilson Yukio Sato. Introdução

Prof. Adilson Gonzaga

07/06/2015. Outras características importantes em Microprocessadores/Microcontroladores SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

AULA 6 - INTRODUÇÃO AO ARDUINO Revisão de Eletrônica Digital e introdução aos Sistemas Computacionais.

AMBIENTE DE DESENVOLVIMENTO IAR MICROCONTROLADOR MSP430

Conhecendo o PIC24 e o mikropascal

Arduino Lab 07 Leitura de temperatura e indicação em um display GLCD de

Sistemas Operacionais de Tempo Real - Teclados Matriciais

Prof. Adilson Gonzaga

MSP430 - Arquitertura

Programação em Linguagem C

ALTERA Quartus II. Manual

Modem MIN-410 Criando o aplicativo Hello World, executando com debug, subindo para o modem e habilitando comandos AT dentro do aplicativo

Oxímetro Bluetooth e LCD 16 2 em Python

A instalação será feita através do link Setup Magni 2, situado no CD do Rasther.

Arduino Lab 08 Banco de teste para memória RAM HM6116 de 16k

Microcontroladores: Programação em C

Comunicação USB com o PIC Vitor Amadeu Souza

Cerne Tecnologia e Treinamento

Conversor Analógico Digital do MSP430G2553

LAB4 Introdução aos Controladores Lógicos Programáveis

Manual Técnico PM32T1-U

Interrupção. Prof. Adilson Gonzaga

Temporização Interrupções. Prof: Evandro L. L. Rodrigues. Rotinas de Atraso

IT LOG 80 Datalogger. Manual do Usuário. Rua Fernandes Vieira, 156 Belenzinho - São Paulo/S.P CEP:

GUIA RÁPIDO PARA INSTALAÇÃO DO CURUMIM

Módulo de Cristal Líquido LCD

Jadsonlee da Silva Sá

Cerne Tecnologia e Treinamento

Organização e Arquitetura de Computadores I

Clicando nesse botão aparecerá um menu no qual deve ser selecionada a porta serial em que o Rasther está ligada. Depois clique em OK.

Temporização da CPU SEL-433 APLICAÇÕES DE MICROPROCESSADORES I. Ciclos de Máquina. Ciclos de Máquina. Temporização Interrupções Rotinas de Atraso

Gps Datalogger. Guia do usuário

Baixando o Arquivo de Instalação do Bentley topograph

Suporta os microcontroladores: R. Leonardo da Vinci, Campinas/SP CEP F.: (19) Kit de Desenvolvimento ACEPIC 28

Indústria e Comércio de Atuadores RVC Eireli EPP.

Sistemas Embarcados:

PASSO A PASSO COMO CRIAR UM NOVO PROJETO EM SCHEMATIC NO SOFTWARE QUARTUS II CYCLONE IV

Aviso sobre o produto. Este guia descreve os recursos comuns à maioria dos modelos. Alguns recursos podem não estar disponíveis em seu computador.

Aula 10 Microcontrolador Intel 8051 Parte 1

Microcontrolador 8051

Guia da Placa de desenvolvimento PD Mega16 N1

INTRODUÇÃO: MICROCONTROLADORES

Linguagem de Programação II Programação Orientada a Objetos. Ambientes de Programação

Instalação de softwares e drivers USB para controlador CP-WS11/4DO4DI

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO 9º PERÍODO. Profª Danielle Casillo

RVC MANUAL POSICIONADOR DE VÁLVULAS MOD. RVC420 R1. Indústria e Comércio de Atuadores RVC Eireli EPP. Dê Preferência aos produtos Fabricados no Brasil

MANUAL INSTALAÇÃO E OPERAÇÃO SOFTWARE GUARDIÃO. Sistemas de Alarme de Incêndio Wireless DF0023-G2-23/DF0023-G3-23 SISTEMAS DE SEGURANÇA

Multimedidores Inteligentes ETE30 Modo de uso do software IBIS_BE_cnf. ABB Automação. Hartmann & Braun

Instruções para instalação do software ESI[Tronic] + KTS. Figura 2

Application Note FBEE Controle de Placas com entradas Analógicas REV01. 1 Rev01

Microcontrolador 8051:

Conversor USB/Serial Instalação drive USB controlador CP-WS12/OEM e conversores USB/Serial

S40. Primeiros Passos. DAELT - Profa. Mariana Antonia Aguiar Furucho e Prof. José da Silva Maia 1

Mapeamento de memória e conexões do Controlador CP-WSMIO2DI2DO

Instalação de softwares e drivers USB para controlador CP-WS13/8DI8DO2AI2AO

Temporizador com PIC 12F675

Modelo SL355 Dosímetro de Ruído/Registrador de Dados

MANUAL DE INSTALAÇÃO E OPERAÇÃO. EX Vde INVERSORA. frequência

MANUAL DE INSTALAÇÃO E PROGRAMAÇÃO CONVERSOR - IP / USB / SERIAL RV1

Cerne Tecnologia e Treinamento

Acessando o Ganho do Conversor Analógico Digital e o CODEC de áudio

Enviando Dados Pela Porta Serial na placa LaunchPad MSP430 Utilizando o ambiente ENERGIA

Placa de desenvolvimento USB AFSmartBoard utiliza PIC18F4550 da Microchip, microcontrolador com o Flash 32kb, 2048 bytes de memória RAM

Utilizando o painel do operador

SICILIANO TECNOLOGIA

INTRODUÇÃO AO ARDUINO DUE, CANAL DIGITAL, FUNÇÃO DELAY

Curso de automação industrial utilizando o CLP Haiwell

UTILIZANDO O CODE BLOCKS

Comunicação IHMs Beijer Electronics com CLPs Altus

Data Sheet FBEE Kit V05


Sistemas Embutidos Prática. Prof. Marcos Augusto Menezes DCC/ /UFMG

Transcrição:

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). RW -> Read/Write: Indica se os dados expostos nos pinos

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.

Fluxograma inicialização

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.

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.

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.

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.

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.

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).

Imagem Analisador Lógico 3 Uma imagem da aplicação montada na protoboard está indicada abaixo, Imagem Montagem Final

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 mercado a muitos anos. Utilizando a plataforma de 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 Imagem do Display

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. Tabela Instruções PCD8544

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: Ativo, PD = 1: Modo de economia de energia. PD = 0: Modo 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

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).

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.

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.

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 é:

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:

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.

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/] No gráfico gerado pelo analisador de sinais lógicos nós

podemos observar o início da comunicação entre 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

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

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

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.

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ódulos dos periféricos e registradores 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. Abaixo, ilustramos o Mapa de microcontrolador MSP430G2553. Memória referente ao

Mapa de MSP430 memoria 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

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 Flash.

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 alimentação entre frequência de trabalho e 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.

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 WDT é responsável por estas ações. Um diagrama de 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. Fontes WDTC de clock e 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.

Limitação na desativação fonte de clock de uma 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. File -> New -> CCS Project

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

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 do sistema básico de clock desta família de microcontroladores. Na seção 5.3, página 282 do Guia do Usuário, informa que o estado de reset deste registrador é

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 informações referentes generator 0) e SCG1 disponíveis na seção Status (Status Register) e todas as as definições do SCG0 (System clock (System clock generator 1) estã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.

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.

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 2 15 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:

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 até que podemos testa-lo novamente. A funçã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:

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.

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.

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 O kit de desenvolvimento para sistemas embarcados MSP430G2

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

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.

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. Cristal já soldado

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 CCS new project

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. Sinal do pino conectado ao LED

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 Compilar um projeto e 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.

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

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. Ative a licença.

Configurações de licença Na primeira vez que o CCS é aberto, a janela License Setup Wizard deve aparece. Caso você já iniciou o CCS 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. Aguarde até que a janela CCS workbench abra.

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

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.

Editar, compilar algorítmo e Debug do [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 Após salvar, clique no botão Debug. O programa será compilado,

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.

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.

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 return estarão abertas para o nosso uso.

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.

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

CCS é uma das interfaces mais poderosas e completas para o desenvolvimento de aplicações embarcadas para 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

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

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 Escolha o local para a instalação e clique Next.

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 serem instalados a Na tela sobre as ferramentas de Debug, deixe as opções default e clique Next. Também faça isso para a tela de

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. Instalação do blog

Executando a aplicação demonstração na LaunchPad de 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 software, somente permita que ele seja instalado automaticamente. Se todas as etapas forem concluídas e os LEDs continuarem a

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.