Linguagem descritiva de hardware
Moderadores: 51, guest2003
por 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
por 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.
-

Iran
- Word
-
- Mensagens: 558
- Registrado em: 16 Out 2006 18:10
- Localização: Imperatriz - MA
por 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
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