• Nenhum resultado encontrado

elt024-07-tecladoMatricial

N/A
N/A
Protected

Academic year: 2021

Share "elt024-07-tecladoMatricial"

Copied!
36
0
0

Texto

(1)

Leitura de teclas e teclado matricial

Rodrigo Almeida

Universidade Federal de Itajub´a

[email protected]

(2)
(3)

Multiplexa¸c˜

ao dos displays

Multiplexar: Consiste em combinar diversos sinais num ´

unico canal de

transmiss˜

ao

Vantagens

Redu¸c˜ao de custos com cabeamento e tamanho de placa Utiliza¸c˜ao de uma quantidade maior de dispositivos que sa´ıdas dispon´ıveis

Desvantagens

Perda de tamanho de banda devido a efeitos de overhead Discretiza¸c˜ao do tempo no acionamento dos dispositivos Aumento da complexidade do sistema

(4)
(5)

Multiplexa¸c˜

ao dos displays

Rotina para acionar displays de 7 segmentos multiplexados:

1

colocar no barramento de dados o valor a ser mostrado no display X

2

ligar o display X atrav´

es da linha de comando

3

esperar um tempo adequado para evitar flicker

4

desligar o display

5

escolher o pr´

oximo display (X+1)

6

voltar ao passo 1

(6)

Aten¸c˜

ao

(7)

Vari´

aveis globais-locais

Armazenamento de dados dentro de uma biblioteca

Usado sempre que for necess´ario passar valores entre fun¸c˜oes dentro

de um mesmo arquivo ou armazenar valores que n˜ao podem ser

perdidos ao longo da execu¸c˜ao do programa. Ex: o display que est´a atualmente ligado

´

E feito atrav´es de vari´aveis ”globais-locais”1 As vari´aveis devem possuir o atributo static

Usar sempre o menor tamanho poss´ıvel pois estas vari´aveis s˜ao alocadas permanentemente, reduzindo a mem´oria RAM dispon´ıvel. Devem ser inicializadas dentro da fun¸c˜ao principal da biblioteca

1

Global dentro do escopo da biblioteca, local pois n˜ao pode ser acessada fora do arquivo

(8)
(9)

Leitura de Teclas

Cria¸c˜

ao de um circuito para entrada de informa¸c˜

ao digital

A sa´ıda deve possuir apenas dois estados

O consumo de energia deve ser o m´ınimo poss´ıvel

As tens˜oes devem ser compat´ıveis com o circuito (TTL, CMOS, etc...)

(10)

Exemplo Eletrˆ

onico

(11)

Exemplo Eletromecˆ

anico

(12)

Bounce

Problema de bouncing

Causado pela oscila¸c˜ao mecˆanica da chave Pode gerar acionamentos indevidos no sistema

Solu¸c˜

oes

Via hardware atrav´es de circuito dedicado Via software atrav´es de confirma¸c˜ao temporal

(13)

Bounce

Circuito com bouncing

(14)

Debounce

Debounce por hardware

N˜ao gasta processamento Protege o circuito contra surtos

Auxilia na estabilidade do sistema pois funciona como filtro Gera delay de R × C na resposta

(15)

Debounce

(16)
(17)

Debounce

(18)

Debounce

Debounce por software

Consome tempo e recurso do processador N˜ao necessita de hardware ($$$) extra

Gera delay de acordo com a rotina desenvolvida ´

E preciso conhecer aproximadamente o tempo de estabiliza¸c˜ao da chave

(19)

Debounce

1 v o i d m a i n (v o i d) { 2 u n s i g n e d c h a r valTemp , v a l A t u a l , t e m p o ; 3 // i n s e r i r as c o n f i g u r a ¸c ~o e s n e c e s s ´a r i a s a q u i 4 for( ; ; ) { 5 w h i l e( v a l A t u a l == P O R T B ) ; // a g u a r d a u m a m u d a n ¸c a na p o r t a B 6 v a l T e m p = P O R T B ; // na m u d a n ¸c a , a g u a r d a um t e m p o 7 t e m p o = 42; 8 w h i l e ( t e m p o > 0) { 9 if ( v a l T e m p == P O R T B ) {// se n ~a o m u d a r c o n t i n u a a c o n t a r 10 tempo - -; 11 } e l s e { 12 v a l T e m p = P O R T B ; // se mudar , a t u a l i z a e r e i n i c i a 13 t e m p o = 42; 14 } 15 } 16 v a l A t u a l = v a l T e m p ; // v a l o r a t u a l i z a d o ; 17 // A q u i a v a r i ´a v e l e s t ´a p r o n t a p a r a s e r u s a d a 18 } 19 }

(20)
(21)

Leitura Matricial

Para cada tecla inserida no projeto, do modo apresentado at´

e agora, ´

e

necess´

ario um terminal de I/O no microcontrolador

Projetos que exigem muitos terminais s˜

ao mais caros por v´

arios

motivos

O encapsulamento pode gerar entre 5 e 30% de diferen¸ca no pre¸co3 O processo de inser¸c˜ao e soldagem de componentes ´e mais caro4 O tamanho e complexidade da placa aumenta (quantidade da camadas, roteamento, etc...)

Para entradas digitais tipo teclado existe uma alternativa: Leitura por

varredura matricial

3

18f4520 = US$4,47, 18f2550 = US$3,98

4

Geralmente componentes com muitos terminais tem encapsulamento SMD/QFP ou BGA

(22)
(23)

Leitura Matricial

Na leitura por varredura matricial temos:

Aumento da quantidade de chaves que podem ser lidas5

Aumento da complexidade do software

Atraso na detec¸c˜ao de eventos (devido `a varredura)

5

Para N terminais dispon´ıveis no microcontrolador, temos um aumento de N chaves para (N2)2chaves

(24)

Leitura Matricial

1 v o i d m a i n (v o i d) { 2 u n s i g n e d c h a r i , j ; 3 4 // a r m a z e n a v a l o r de c a d a c h a v e 5 u n s i g n e d c h a r c h a v e [4][4] = {{0,0,0,0} ,{0,0,0,0} , 6 {0,0,0,0} ,{0,0,0,0}}; 7 // h a b i l i t a pull−up i n t e r n o 8 B i t C l r ( INTCON2 ,0) ; 9 // a p e n a s A N 0 ´e a n a l ´o g i c o , os d e m a i s s ~a o d i g i t a i s 10 A D C O N 1 = 0 b 0 0 0 0 1 1 1 0; 11 // os 4 ´u l t i m o s b i t s s ~a o e n t r a d a s , os 4 p r i m e i r o s ←-( i n i c i a l m e n t e ) s a ´ı d a s 12 T R I S B = 0 x F 0; 13 T R I S D = 0 x 0 0; 14 for( ; ; ) 15 { 16 // p r o c e s s o de v a r r e d u r a

(25)

Leitura Matricial

1 // p r o c e s s o de v a r r e d u r a 2 for( i = 0; i < 4; i ++) { 3 // a p e n a s a c o l u n a de i n t e r e s s e ´e c o n f i g u r a d a c o m o s a ´ı d a 4 T R I S B = ~((u n s i g n e d c h a r)1< < i ) ; 5 // a p e n a s a c o l u n a de i n t e r e s s e ´e l i g a d a 6 P O R T B = ~((u n s i g n e d c h a r)1< < i ) ; 7 8 for( j = 0; j < 4; j ++) { // j<2 s e m u s a r a f o n t e 9 if (! B i t T s t ( PORTB , j +4) ) { // r e a l i z a o t e s t e p a r a c a d a b i t 10 c h a v e [ i ][ j ] = 1; // a t u a l i z a a m a t r i z 11 }e l s e{ 12 c h a v e [ i ][ j ] = 0; 13 } 14 } 15 }

(26)

Processo de Varredura

Aten¸

ao

O c´

odigo n˜

ao apresenta debounce em software para as teclas.

A opera¸c˜

ao com uma matriz gasta muito processamento e mem´

oria.

Para minimizar estes gastos podemos representar cada chave como

um bit numa vari´

avel.

(27)

Cria¸c˜

ao da biblioteca teclado

(28)

Cria¸c˜

ao da biblioteca teclado

Fun¸

oes necess´

arias para a cria¸c˜

ao de uma biblioteca que realiza a leitura

de um teclado matricial e disponibiliza as teclas pressionadas:

Inicializa¸c˜

ao()

Configura os terminais de acionamento e de leitura

Debounce()

Realiza a leitura das teclas (varredura) Realiza o debounce dos valores

Armazena internamente as teclas pressionadas

LerTeclas()

Retorna uma vari´avel unsigned int

(29)

Cria¸c˜

ao da biblioteca teclado

1 # i n c l u d e " k e y p a d . h " 2 # i n c l u d e " p i c 1 8 f 4 5 2 0 . h " 3 4 s t a t i c u n s i g n e d c h a r v a l o r = 0 x 0 0; 5 s t a t i c u n s i g n e d c h a r t e m p o ; 6 7 v o i d k p I n i t (v o i d) { 8 // q u a t r o e n t r a d a s e q u a t r o s a i d a s ( i n i c i a l m e n t e ) 9 T R I S B = 0 x F 0; 10 // l i g a p u l l up 11 B i t C l r ( INTCON2 , 7) ; 12 // a p e n a s A N 0 ´e a n a l o g i c o , a r e f e r e n c i a ´e b a s e a d a na f o n t e 13 A D C O N 1 = 0 b 0 0 0 0 1 1 1 0; 14 } 15 16 u n s i g n e d c h a r k p R e a d (v o i d) { 17 r e t u r n v a l o r ; 18 }

(30)

Cria¸c˜

ao da biblioteca teclado

1 v o i d k p D e v o u n c e (v o i d) { 2 u n s i g n e d c h a r i , j ; 3 s t a t i c u n s i g n e d int v a l o r N o v o = 0 x 0 0 0 0; 4 s t a t i c u n s i g n e d int v a l o r A n t i g o = 0 x 0 0 0 0; 5 for( i = 0; i < 4; i ++) { 6 T R I S B = ~((u n s i g n e d c h a r)1< < i ) ; 7 P O R T B = ~((u n s i g n e d c h a r)1< < i ) ; 8 // r e a l i z a o t e s t e p a r a c a d a b i t e a t u a l i z a a v a r i ´a v e l 9 for( j = 0; j < 4; j ++) { 10 if (! B i t T s t ( PORTB , j +4) ) { 11 B i t S e t ( v a l o r N o v o , ( i *4) + j ) ; 12 }e l s e{ 13 B i t C l r ( v a l o r N o v o , ( i *4) + j ) ; 14 } 15 } 16 }

(31)

Cria¸c˜

ao da biblioteca teclado

1 // r o t i n a de d e b o u n c e 2 // a c a d a c h a m a d a o t e m p o ´e d e c r e m e n t a d o em 1 u n . 3 if ( v a l o r A n t i g o == v a l o r N o v o ) { 4 t e m p o - -; 5 }e l s e{ 6 t e m p o = 10; 7 v a l o r A n t i g o = v a l o r N o v o ; 8 } 9 if ( t e m p o == 0) { 10 v a l o r = v a l o r A n t i g o ; 11 } 12 }

(32)

Header

Header

1 # i f n d e f T E C L A D O _ H 2 #d e f i n e T E C L A D O _ H 3 u n s i g n e d int L e r T e c l a s (v o i d) ; 4 v o i d D e b o u n c e T e c l a s (v o i d) ; 5 v o i d I n i c i a l i z a T e c l a d o (v o i d) ; 6 # e n d i f // T E C L A D O H

(33)

Uso da Biblioteca

1 # i n c l u d e " p i c 1 8 f 4 5 2 0 . h " 2 # i n c l u d e " c o n f i g . h " 3 # i n c l u d e " k e y p a d . h " 4 5 // i n ´ı c i o do p r o g r a m a 6 v o i d m a i n (v o i d) { 7 k p I n i t () ; 8 // C o n f i g u r a a p o r t a D c o m o s a ´ı d a 9 T R I S D = 0 x 0 0; 10 // d e s l i g a t o d o s os l e d s 11 P O R T D = 0 x F F; 12 for( ; ; ) { 13 k p D e b o u n c e () ; 14 P O R T D = k p R e a d () ; 15 } 16 }

(34)
(35)

Uso da Biblioteca

1 # i n c l u d e " p i c 1 8 f 4 5 2 0 . h " 2 # i n c l u d e " c o n f i g . h " 3 # i n c l u d e " k e y p a d . h " 4 5 // i n ´ı c i o do p r o g r a m a 6 v o i d m a i n (v o i d) { 7 c h a r c o u n t = 0; 8 k p I n i t () ; 9 s s d I n i t () ; 10 for( ; ; ) { 11 k p D e b o u n c e () ; 12 s s d U p d a t e () ; 13 if ( B i t T s t ( k p R e a d () ,0) ) { 14 c o u n t ++; 15 s s d D i g i t ( count ,0) ; 16 } 17 } 18 }

(36)

Contagem de pressionamentos

Porque o c´

odigo anterior n˜

ao funciona?

Estados de uma chave

Detec¸c˜

ao do evento

ao aguardar mudan¸

ca

Executar exemplo na placa.

Referências

Documentos relacionados

Grande Dourados, no uso das atribuições que lhe foram conferidas pela Portaria nº 779, de 26/08/2014, considerando a Portaria nº 1.369/10, de 07/12/2010, que

Apresentaremos neste artigo uma pesquisa cujo principal objetivo é investigar as produções atuais na área de Educação e Educação Matemática que contemplam a formação

a) assegura que o processo produtivo atende às políticas de sustentabilidade e de proteção do meio ambiente do Grupo. b) assegura que a carne não provem de áreas desmatadas

III - as condições incompreensíveis ou contraditórias. Têm-se por inexistentes as condições impossíveis, quando resolutivas, e as de não fazer coisa impossível. Subordinando-se

camada disponibiliza fun¸ c˜ oes para entrada e sa´ıda da rede publish-subscribe,.. cria¸ c˜ ao de t´ opicos, inscri¸ c˜ ao e remo¸ c˜ ao de inscri¸ c˜ oes em t´ opicos

A EBT, em sua terceira edição (divulgada em 2017), demostrou que apenas 38% dos municípios regulamentaram os dispositivos da LAI, comprometendo a geração da transparência passiva e

Na Macrozona de Estruturação Urbana, o substitutivo definiu uma nova macroárea, resultante da divisão da Macroárea de Qualificação da Urbanização Consolidada, que

Paranoicos comportam-se como se o ar estivesse repleto de mensagens codificadas ridicularizando- -os ou conspirando sua destruição. Por décadas o Estado da África do Sul viveu em