Sistemas Operacionais de Tempo Real - Teclados Matriciais

Documentos relacionados
Sistemas Operacionais de Tempo Real Displays de 7 segmentos

EXPERIÊNCIA 4: IMPLEMENTAÇÃO DE UM CRONÔMETRO

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

Simulação de programas assembly para o HCS12 no CodeWarrior

Prof. Adilson Gonzaga

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

14/3/2016. Prof. Evandro L. L. Rodrigues

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

Portas de entrada e saída; Interrupções; Interrupções externas; Temporizadores Contadores; Interface Serial

SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

Técnicas de Interface com Microcontroladores (8051)

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

Tutorial 132 CP DUO Configuração MODBUS Escravo

Localizador de Defeitos

EXPERIÊNCIA 5: IMPLEMENTAÇÃO DE UM CRONÔMETRO COM INTERRUPÇÃO

O Pino P2.7 não está sendo usado e cada Display mostrará valores de 0 a 9.

Lista de Exercícios 1

Dispositivos Externos Guia do Usuário

Prof. Adilson Gonzaga

Manual Studio Uno 2.0

Tutorial de Instalação LINUX EDUCACIONAL versão 4.0 Este tutorial foi elaborado a partir do material de autoria de Rafael Nink.

Manual de Compilação/Execução da Aplicação SmartHome

Boas práticas para o desenvolvimento de software Parte I

EL08D - MICROCONTROLADORES

LCDs Inteligentes. LCD Inteligente. Gabriel Kovalhuk DAELN / UTFPR

Microprocessadores TIMER/COUNTER I

LABORATÓRIO DE ARQUITETURA DE COMPUTADORES PREPARAÇÃO 02: DISPLAY DE 7 SEGMENTOS MICROCONTROLADO

PLATAFORMA PARA ESTUDO EM PROGRAMAÇÃO DE MICROCONTROLADORES FAMÍLIA 8051

Prof. Adilson Gonzaga

Tutorial de Utilização do Software- Mini CLP FIT

Aula 10 Microcontrolador Intel 8051 Parte 1

Interrupção. Prof. Adilson Gonzaga

Acetatos de apoio às aulas teóricas

Tutorial 133 DUO Criação de telas e utilização do teclado

MANUAL TÉCNICO PROCEDIMENTO DE RECUPERAÇÃO DE FIRMWARE P/ FAMÍLIA WOM 5000

INTRODUÇÃO: MICROCONTROLADORES

Objetivos MICROCONTROLADORES HARDWARE. Aula 03: Periféricos. Prof. Mauricio. MICRO I Prof. Mauricio 1. Arquitetura de um Microcontrolador

STD SERVIÇO DE BACKUP EM NUVEM

Manual de Instalação C3SL

Quartus II: Modo Esquemático. Leandro Schwarz

Princípio de Funcionamento

Apêndice B Sistema Sem Fios Adotado 171 B.1 SISTEMA ADOTADO

Kit Teclado TS 4x4 v1..0 Manual do usuário

Notas de Aplicação. Programação da IHM no SPDSW. HI Tecnologia. Documento de acesso publico

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

Configurações da impressora

EXPERIÊNCIA 3: INTERFACE COM TECLADO E DISPLAY

ELE Microprocessadores I

Organização e Arquitetura de Computadores I

Ferramentas Utilizadas: CE-GPS e MALA DE TESTE (Qualquer Fabricante)

EASYCODE: Uma ferramenta de produtividade

Microcontroladores PIC16 - XM 116 -

Introdução ao Microcontrolador PIC

Conformidade de PMV com NTCIP 1203

FACULDADE DE TALENTOS HUMANOS DEPARTAMENTO DE ENGENHARIA MECÂNICA PROCEDIMENTOS EXPERIMENTAIS DE ELETIVA I PARA AUTOMAÇÃO E CONTROLE

Jadsonlee da Silva Sá

Unidade de Controle. Sinais e temporização da busca de instrução. Prof. Eduardo Appel

Plano de Aula. 1 o semestre. Aula número 010 Interrupções Internas Timers. Uso de interrupções internas produzidas pelos timers

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO O SISTEMA OPERACIONAL PROFESSOR CARLOS MUNIZ

Manual de instruções 3ª Edição (Março 2015)

MANUAL DO USUÁRIO SISTEMA GERENCIADOR DE SENHAS VERSÃO SERVIDOR

Produção de tutoriais. Suellem Oliveira

2.1 NesC Seguem alguns dos principais desafios impostos à linguagem NesC:

Manual para App Android e Software Windows

A instalação do DCR compreende apenas a descompactação do arquivo DCR.zip num diretório no disco. Descompacte o arquivo DCR.zip num novo diretório.

Microcontroladores PIC18 - XM 118 -

FORMATAÇÃO E INSTALAÇÃO DO SISTEMA OPERACIONAL WINDOWS SEVEN ORIGINAL

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

Configurações da impressora

MSP430 - Arquitertura

Procedimentos para Instalação do Sisloc (Estação de Trabalho) versão

UCP 8051 (parte 02) Professor Adão de Melo Neto

EXPERIÊNCIA 5: INTERFACE COM TECLADO E DISPLAY

Ashampoo Rescue Disc

Copyright 2014 VW Soluções

Antes de instalar o software

Revisão: Projeto e síntese de Circuitos Digitais em FPGA

Arquitetura do Disciplina de Microcontroladores. Prof. Ronnier Prof. Rubão

LABORATÓRIO DE ARQUITETURA DE COMPUTADORES PREPARAÇÃO 03: INTERRUPÇÕES

Tecnologias Digitais

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

Estrutura Básica de um Computador

18/10/2010. Unidade de Controle Controle. UC Microprogramada

Parte II Arquitetura. professorferlin.blogspot.com. professorferlin.blogspot.com. Sociedade Paranaense de Ensino e Informática

Dispositivos Externos Guia do Usuário

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

29/03/2017. Temporização da CPU SEL-433 APLICAÇÕES DE MICROPROCESSADORES I. Ciclos de Máquina. Ciclos de Máquina

Lista de Exercícios 1

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Dispositivos Externos Guia do Usuário

Período Saulo O. D. Luiz

SSC510 Arquitetura de Computadores 1ª AULA

TUTORIAL DE MANUSEIO DO DESCARREGADOR (software) O software esta disponível no site da Luffe:

APRESENTAÇÃO DO KIT CPLD_EE01

Retrofitting de Robôs. Walter Fetter Lages Universidade Federal do Rio Grande do Sul Departamento de Engenharia Elétrica

PCS-2529 Introdução aos Processadores. Prof. Dr. Paulo Sérgio Cugnasca

Transcrição:

1 / 27 Sistemas Operacionais de Tempo Real - Teclados Matriciais por Henrique Frank W. Puhlmann Introdução Chaves eletromecânicas são uma forma quase primitiva de interface entre um sistema eletrônico e um ser humano. Por meio delas, podemos selecionar, programar e responder a estímulos do sistema. As chaves organizadas em arranjos matriciais, por exemplo, formam dispositivos mais complexos, que conhecemos por teclados. Este artigo trata de rotinas padronizadas em linguagem C para microcontroladores da família MCS-51, para configurar e tratar as particularidades de um teclado, gerando os sinais de estímulo e realizando a leitura, realizando também debouncing por software, identificando a(s) tecla(s) acionada(s) e preparando uma rotina para o tratamento dessa(s) tecla(s). Para uma melhor compreensão do que será tratado nesse artigo, recomendo a leitura dos seguintes artigos técnicos: Leitura de chaves mecânicas e o processo de debounce Teclado matricial e varredura de teclas Sistemas Operacionais de Tempo Real - Introdução Sistemas Operacionais de Tempo Real - Timers

2 / 27 Arquitetura de Hardware Na biblioteca de rotinas padronizadas, que será apresentada a seguir, são consideradas duas formas distintas de seleção da matriz de teclas: Seleção por linhas codificadas A seleção por linhas codificadas, como ilustrado na Figura 1, pode ser realizada utilizando-se um decodificador/ Multiplexador na saída dos sinais de seleção. Um componente desse tipo é o 74LS139 [1]. Nessa forma de seleção do teclado são utilizados poucos pinos do port para codificar o número da linha de seleção a ser ativada em código binário. Ou seja, 1 bit seleciona até duas linhas, 2 bits quatro etc. A intenção foi a de economizar pinos nos ports do microcontrolador, especialmente se o teclado for grande. A rotina da biblioteca para essa configuração foi batizada de ROTINA DE LEITURA DE MATRIZ DE CONTATOS I.. Figura 1: Teclado matricial com seleção por linhas codificadas Seleção por linhas separadas A seleção com linhas separadas é realizada conforme ilustrado na Figura 2. A rotina da biblioteca para essa configuração foi batizada de ROTINA DE LEITURA DE MATRIZ DE CONTATOS II.

3 / 27 Figura 2: Teclado matricial com seleção por linhas separadas Rotinas padronizadas em C para teclados matriciais O código em linguagem C para os teclados matriciais segue o mesmo padrão do desenvolvido para os timers em Sistemas Operacionais de Tempo Real Timers. Tem um conjunto de definições e variáveis, uma parte a ser inserida na rotina de interrupção do timer, de forma que quando o timer virtual do teclado terminar a contagem, é sinalizado para o programa principal que a contagem terminou. No programa principal são inseridas algumas inicializações, as rotinas de leitura do teclado, debounce e tratamento da tecla. Essa solução é um pouco diferente da implementada para os displays de 7 segmentos, pois entende-se que tratar teclado não é uma tarefa prioritária para um sistema e não necessita de uma temporização precisa. Assim, o trecho de código para a leitura do teclado não foi colocado dentro da rotina de interrupção do timer. Assim ela é executada na medida em que é possível. Definições e variáveis A seguir os códigos exemplo referentes às definições e configurações correspondentes às arquiteturas descritas anteriormente. Esse trecho de código é inserido tipicamente num arquivo do tipo.h do programa.

4 / 27 ROTINA DE LEITURA DE MATRIZ DE CONTATOS I (Sinais de seleção codificados) - Definições e Inicializações

ROTINA DE LEITURA DE MATRIZ DE CONTATOS II (Sinais de seleção separados) - Definições e Inicializações 5 / 27

6 / 27 São utilizadas algumas convenções com relação às definições e uso das constantes. Em todo o programa, 1 quer dizer ligado ou ativo e 0 desligado ou inativo. Este trecho de código é na sua essência o configurador do teclado, amarrando as particularidades do hardware com o software. O que deve ser configurado: #define FREQ_DE_INTERRUP_TIMER_MATRIZ_DE_CONTATOS: Define a frequência com a qual é realizada um a varredura completa do teclado. 10 vezes por segundo é uma taxa razoável; #define NUMERO_DE_LINHAS_DA_MATRIZ: Define o número de linhas de seleção da matriz de teclas; #define PORTA_DE_ENTRADA_DA_MATRIZ: Define em que port estão conectadas as entradas do teclado; #define PORTA_DE_SAIDA_DA_SELECAO_DA_MATRIZ: Define em que port estão conectadas as linhas de seleção das teclas; #define MASCARA_DA_MATRIZ: Aqui é definida a posição e abrangência das linhas de entrada; #define MASCARA_DA_SELECAO: Filtra os bits dos sinais de seleção; #define SELETOR_DOS_SINAIS_DE_SELECAO: Define posição do primeiro bit do conjunto de seleção que será deslocado em anel para selecionar as colunas de teclas ; #define SAIDAS_INVERTIDAS : Colocar essa linha como comentário, se acaso as linhas de seleção não precisarem ser invertidas; #define INCREMENTO_PARA_O_CONTADOR_DE_SELECAO: Define o "mais 1" no contador, no caso da seleção codificada; unsigned char ucmatrizdecontatosdeentrada[numero_de_linhas_da_matriz]: É necessário iniciar com zeros essa matriz; As demais variáveis e constantes são calculadas automaticamente pelo programa. Rotina de debounce - Definições e Inicializações

7 / 27 Rotina de Identificação de Contatos - Definições e Inicializações Código a ser inserido no corpo do programa principal O código a seguir testa um flag (bflagdetemporizacaodamatrizdecontatos) que é ativado pela rotina de interrupção quando for terminada a contagem do temporizador virtual de leitura do teclado. Se o flag foi acionado, é realizada a varredura do teclado e testado se há teclas acionadas. Se houver teclas acionadas, a rotina sinaliza com outro flag (bflagdenovaleituradematrizdecontatos) de que há contatos acionados. Nesse código estão indicadas as rotinas de debounce, identificação dos contatos acionados e de execução de ações em função dos contatos acionados. Esses códigos serão apresentados mais adiante.

8 / 27 ROTINA DE LEITURA DE MATRIZ DE CONTATOS I (Sinais de seleção codificados)

ROTINA DE LEITURA DE MATRIZ DE CONTATOS II (Sinais de seleção separados) 9 / 27

10 / 27 Rotina de debounce Na saída da rotina de leitura de contatos é acionado um flag (bflagdenovaleituradematrizdecontatos) para sinalizar que há novos dados. Esse flag é testado e se afirmativo inicia-se o processo de debounce. A rotina de debounce basicamente testa se o que foi lido está estável há pelo menos N leituras. Se não, é reiniciado o contador de debounce. Como a frequência de leitura do teclado é baixa, o valor de N pode ser pequeno também, por exemplo 2 ou 3. Quando a rotina decide que a leitura está estável e tem tecla acionada, é acionado um flag (bflagdeterminodedebounce) para ativar o próximo passo do tratamento de teclas.

11 / 27 Rotina que identifica os contatos acionados Esta rotina varre a matriz de teclas, verifica se há teclas acionadas. Se positivo, determina a posição dessas teclas e o número total de teclas acionadas. Se houver teclas acionadas, a rotina sinaliza com um flag (bflagresultadosmatrizdecontatos) para ativar o próximo passo do programa de tratamento de teclas.

12 / 27 Rotina de execução de ações em função dos contatos Código a ser inserido na rotina de interrupção do Timer 0 O trecho de código a seguir implementa um temporizador virtual para temporização do início de varredura do teclado. Sempre que o contador termina a contagem, o contador é reinicializado e é sinalizado que a temporização terminou.

13 / 27 EXEMPLO Nesse programa foi aproveitado o mesmo programa desenvolvido para a demonstração de operação dos timers e displays de 7 segmentos de tempo real, acrescidos os trechos relativos ao teclado. Aqui será programado o Timer 0 no modo 2 de operação, com o microcontrolador operando com um clock de 4 MHz e uma frequência de interrupção de 1,5 khz. Foram definidos 3 displays de 7 segmentos do tipo II com a seleção separada, e atualizados a cada 30 contagens cada um. Também foi definido um teclado matricial, cujas linhas de entrada estão alocadas aos bits 0 a 2 do Port 2 e as linhas de seleção aos bits 4 a 7 do mesmo Port. Confira o código no quadro abaixo.

14 / 27

15 / 27

16 / 27

17 / 27

18 / 27

19 / 27

20 / 27

21 / 27

22 / 27

23 / 27

24 / 27 Simulação do Exemplo Se você quiser simular o programa exemplo acima e explorá-lo um pouco mais, siga os seguintes passos:. Instale o KEIL C51 μvision [2]; Baixe o arquivo Testa_Teclado.zip [3]; Instale os arquivos de Testa_Teclado.zip num diretório para testes; Navegue até o diretório de testes e acione o arquivo Testa_teclado.uvproj (2 clickes ) (Figura 3). Figura 3: Arquivos no diretório de teste Nesse instante deverá abrir o programa Keil e a tela deverá ser a retratada na Figura 4. Esse painel permite navegar no código em C, editá-lo e compilá-lo. Não é necessário fazer isso para realizar a simulação, mas você poderá posteriormente alterar alguns parâmetros do código e testar o programa com as novas alterações.

25 / 27 Figura 4: Programa Keil pronto com o programa exemplo carregado A seguir coloque o programa no modo de Debug (Figura 5, Figura 6 e Figura 7) para que se possa iniciar a simulação. Figura 5: Selecionando o modo Debug do programa

26 / 27 Antes de entrar no modo de depuração, aparece na tela a mensagem da Figura 6. Clique no OK para continuar. Figura 6: Aviso de que no modo de avaliação, o código fica limitado a 2K Figura 7: Modo Debug de operação Observe que já estão destacados os painéis de monitoramento do Timer 0, do Port 1, cujo bit 1 deverá ser alternado a cada término de contagem do temporizador de software do teste do timer e cujos bits 5, 6 e 7 são usados como linhas de seleção dos 3 displays, e o Port 3, onde aparecem os códigos de cada dígito de 7 segmentos. Nessa simulação, aparecem os números 1, 2 e 3 respectivamente nos displays 0, 1 e 2. Também aparece o painel de monitoramento do Port 2, onde os bits de 0 a 2 são as entradas do teclado e os bits 4 a 7 os sinais de seleção da matriz É possível utilizar as teclas de função F11 para executar o programa passo a passo ou F5 para entrar em execução. Recomendo que você inicie a simulação utilizando o passo a passo para poder observar detalhadamente como que funciona o mecanismo de operação desse programa.

27 / 27 Resumo Neste artigo técnico foram apresentadas algumas possíveis soluções padronizadas para a leitura e tratamento de teclados matriciais com auxílio de um timer de hardware. Essas soluções constituem uma biblioteca padronizada para a utilização dos teclados matriciais em microcontroladores da família MCS-51, codificada em C, para ser compilada no programa da Keil. Depois foi desenvolvido um programa exemplo para que você possa simular o que foi apresentado e observar os detalhes dessa implementação. Repare que a aplicação tem uma complexidade razoável e foi montada a partir das rotinas de biblioteca em menos de meia hora. E funciona!!!! Este artigo é o quarto da série de artigos que abordam algumas funções comuns em projetos de sistemas embarcados de tempo real. Confira os demais artigos (em breve). Sistemas Operacionais de Tempo Real Sistemas Operacionais de Tempo Real - Introdução - Apresentação introdutória do que é um sistema operacional e as características que o tornam um sistema de tempo real. Também são apresentadas algumas estruturas que facilitam o seu projeto. Bibliotecas de funções e rotinas padronizadas em linguagem C para MCS-51 Timers - É apresentada uma biblioteca desenvolvida em linguagem C para a inicialização e o uso dos Timers do MCS-51; Displays de 7 segmentos É apresentada uma biblioteca desenvolvida em linguagem C para a inicialização e o uso em displays de 7 segmentos; Teclados Matriciais (este artigo) É apresentada uma biblioteca desenvolvida em linguagem C para varredura, leitura, debounce, identificação da tecla acionada e desvio para a rotina de tratamento. A forma como as rotinas foram escritas, permitem sua fácil reutilização em outros projetos; Periféricos (Em breve) - É apresentada uma biblioteca desenvolvida em linguagem C para a inicialização e o uso de alguns periféricos, tais como conversores A/D, sensor de temperatura e memórias seriais. Referências [1] http://www.ti.com/lit/ds/symlink/sn54s139.pdf [2] https://www.keil.com/demo/eval/c51.htm [3] http://www.embarcados.com.br/download/testa_teclado.zip