Contador acionado pelo um switch

Linguagem descritiva de hardware

Moderadores: 51, guest2003

Contador acionado pelo um switch

Mensagempor mafego » 14 Set 2007 07:28

Tenho uma placa PSCOEVAL1. Tenho feito meus treinamentos sobre este maravilhoso chip. Atualmente estou estudanto os contadores e tenho o seguinte programa:

#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#include "stdlib.h"
char buff[10];

void main()
{
M8C_EnableGInt;
Counter8_1_Start();
LCD_1_Start();
LCD_1_Init();
M8C_EnableIntMask(INT_MSK0, INT_MSK0_GPIO);
LCD_1_PrCString("QuadPhase Test");

while(1)
{
BYTE valor;
valor=Counter8_1_bReadCounter();
itoa(buff,valor,10); // convert int to strig
LCD_1_Position(1,0);
LCD_1_PrString(buff);
}
}

Para decrementar o counter e aparecer o resultado no LCD eu pressiono um switch, mas está muito sensível. Ao ativá-lo ele decrementa várias unidades de uma vez só. Como faço para resolver o problema para decrementar apenas uma unidade de cada vez que for pressionado, alguém tem um exemplo?
mafego
Bit
 
Mensagens: 6
Registrado em: 04 Set 2007 20:47

Mensagempor Iran » 14 Set 2007 09:25

mafego,

Seja Bem Vindo. Geralmente isso ocorre devido ao rebote do push button que vc está usando, quando vc pressiona ele apenas uma vez são geradas várias transições que disparam vária interrupções e a contagem é inrementada várias vezes. Existem muitas soluções pra isso, por software o que faço gerammente é na rotina de atendimento da interrupção gerar um atraso pra o sinal se estabilizar e resetatar o flag de interrupção pendente ao final da rotina.

Só uma orientação, esse post deveria ser colocado no tópico PSOC e não aqui em HDL, VHDL.

Zé Iran.
Avatar do usuário
Iran
Word
 
Mensagens: 558
Registrado em: 16 Out 2006 18:10
Localização: Imperatriz - MA

Mensagempor mafego » 14 Set 2007 13:38

Iran escreveu:mafego,

Seja Bem Vindo. Geralmente isso ocorre devido ao rebote do push button que vc está usando, quando vc pressiona ele apenas uma vez são geradas várias transições que disparam vária interrupções e a contagem é inrementada várias vezes. Existem muitas soluções pra isso, por software o que faço gerammente é na rotina de atendimento da interrupção gerar um atraso pra o sinal se estabilizar e resetatar o flag de interrupção pendente ao final da rotina.

Só uma orientação, esse post deveria ser colocado no tópico PSOC e não aqui em HDL, VHDL.

Zé Iran.


Iran.

Realmente vc está certo foi um equivoco, não deveria está postado aqui. Mas como faço para resolver o meu problema de interrupção sucessivas via software?
Já postei minha dúvida corretamente no tópico PSOC. Escreve um exemplo de código.

Obrigado!
mafego
Bit
 
Mensagens: 6
Registrado em: 04 Set 2007 20:47

Mensagempor racerxdl » 17 Nov 2007 02:05

Não sei se te ajuda, mas da uma olhada aqui, tem um exemplo de como corrigir isso (só q em VHDL)

http://www.fpga4fun.com/Debouncer2.html
racerxdl
Bit
 
Mensagens: 16
Registrado em: 20 Dez 2006 13:28


Voltar para Verilog, VHDL, SystemC ( PLAs, CPLDs, FPGAs, etc... )

Quem está online

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

x