Debouncing ...

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

Debouncing ...

Mensagempor j.silvestre » 18 Fev 2008 16:56

Amiguinhos...

no velho e bom 8051 usa-se uma rotina de debouncing ao se ler uma tecla,
vendo alguns exemplos para o ARM, noto que não é usado rotina de debouncing para se ler uma tecla. è assim mesmo ou recomenda-se uma rotina de debouncing. ?


j.silvestre
j.silvestre
Byte
 
Mensagens: 260
Registrado em: 12 Out 2006 22:15

Re: Debouncing ...

Mensagempor andre_luis » 19 Fev 2008 08:06

j.silvestre,

Verifica pelo circuito se isso já está sendo feito por hardware.

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor xultz » 19 Fev 2008 08:07

Sempre é necessária uma rotina de debounce, porque isso é uma questão de caracterírstica do hardware. Tem alguns macetes que melhoram o sinal do bounce, como colocar um capacitor em paralelo com a chave, mas isso não resolve 100% do problema, e pode ser que o hardware que você viu tinha isso e o programador ficou com preguiça de debouncear a entrada.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor j.silvestre » 19 Fev 2008 08:53

Ok. pessoal

continuarei usando rotinas de debounce.


sds


j.silvestre
j.silvestre
Byte
 
Mensagens: 260
Registrado em: 12 Out 2006 22:15

Mensagempor andre_luis » 19 Fev 2008 09:44

Xultz,

Não conheço o ARM7 profundamente, mas existem uC´s ( como o PIC16 por exemplo ) que possuem entradas em Schmit-trigger, e isso creio que tire a necessidade de realizar o debouncing por firmware.

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor xultz » 19 Fev 2008 11:04

Isso tira a necessidade somente quando a chave é nova, mas é só envelhecer um pouco que durante a comutação ela bate forte e não tem schmidt trigger que salve...
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor j.silvestre » 19 Fev 2008 11:12

humm...


nem nas Application notes da NXP , eles usam debounce...

------------------------------------------------------------------------------------
43 if ((IOPIN0 & 0x00004000) == 0x00000000) //check p0.14 is pushed
44 // Looks for the interrupt button to be pushed
45 {
46 IOCLR0 = 0x00000001; //Turning off test pin to show in shutdown
47 write(mask, 0x0); //Store data to external EEPROM
48 IODIR0 = 0x00800000; //set port 0.23 as an out.
49 IOCLR0 = 0x00800000; //Sets extreme power-down mode
50 }
-------------------------------------------------------------------------------------
veja o exemplo completo.

http://www.nxp.com/acrobat_download/app ... 0535_1.pdf


e agora ??


j.silvestre
j.silvestre
Byte
 
Mensagens: 260
Registrado em: 12 Out 2006 22:15

Mensagempor xultz » 19 Fev 2008 13:16

Veja que este caso é bastante particular. O problema do bounce é, por exemplo, se você precisa contar as pressionadas. Por exemplo, se você vai incrementar uma variável a cad apressionada, o bounce é fatal, e uma pressionada pode incrementar a variável várias vezes. O caso desta app note é particular porque uma chave (no P0.14) faz uma atitude e a outra chave (no flip flop) faz a ação contrária. O que quer dizer que pressionar a primeira chave 1, 2, 5, ou 30 vezes provoca exatamente a mesma coisa: fazer o micro entrar em deep power down. E só sai ressetando o flip flop e realimentando o microcontrolador.
Na hora de fazer a aplicação, é preciso pesar estes fatores.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor andre_luis » 19 Fev 2008 14:11

xultz escreveu:Isso tira a necessidade somente quando a chave é nova...


Mas não é aí que o cunjuto capacitor/resistor entram em cena ?

Realmente, bouncing por hardware nos dias atuais é complicado devido muito mais à questão do espaço ocupado pelos componentes que poderiam ser retirados do circuito. Só usei por HW até hoje por pura preguiça de desenvolver mais uma complexidade na programação, que quase sempre estava no gargalo da capacidade de processamento do uC. Realmente no ARM7 não faz sentido colocar bouncing por HW.

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ


Voltar para ARM

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x