Autor Tema: antirrebotes del push button  (Leído 9897 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kamehouse

  • PIC12
  • **
  • Mensajes: 55
antirrebotes del push button
« en: 20 de Diciembre de 2005, 19:52:00 »
saludos.

  necesito aumentar y disminuir la cuenta de un "registro" en vhdl
  para lo cual uso 2 push button uno para incrementar la cuenta y
  otro para decrementarla eso ya lo tengo, lo que quisiera saber es como     absorber los rebotes del teclado ya que se dispara la cuenta y no se como
controlar los rebotes, ya que quiero contar de uno en uno (1,2,3...)
y con los rebotes no lo consigo. si alguien tiene una idea de como absorberlos
se lo agradezco de antemano.

  gracias

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: antirrebotes del push button
« Respuesta #1 en: 20 de Diciembre de 2005, 22:18:00 »
Es síncrono ese registro?

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: antirrebotes del push button
« Respuesta #2 en: 21 de Diciembre de 2005, 06:21:00 »
Aqui tienes un módulo antirebotes:

Codigo:
--------------------------------------------------------------------------------
-- Modulo para quitar los rebotes de un pulsador.
-- El pulsador se conecta a la señal de entrada "button".
-- La señal "salida" se pone a uno cuando el botón esta pulsado   
-- y sin rebotes durante 3 ciclos de reloj "clk"
-- La señal de reloj "clk" debe ser de 100Hz aproximadamente para obtener
-- un buen antirrebotes.
-- Mientras más bits tenga el registro "shift",
-- mayor será la protección antirebotes

--------------------------------------------------------------------------------

library IEEE;
use IEEE.std_logic_1164.all;
use ieee.numeric_std.all;

entity antirebotes is
  port (
     clk    : in  std_logic;
     rst    : in  std_logic;
     button : in  std_logic;
     salida : out std_logic
   );
end entity antirebotes;

architecture behavioral of antirebotes is

signal shift_reg : std_logic_vector(2 downto 0);

begin    -- architecture behavioral

SHIFT_REG_PROC : process(clk, rst) is
  begin
    if (rst="1") then
     shift_reg <= "000";
   elsif (clk"event and clk="1")   then
     shift_reg <= button & shift_reg(2 downto 1);
   end if;
  end process SHIFT_REG_PROC;

salida <= shift_reg(2) and shift_reg(1) and shift_reg(0);

end architecture behavioral;


Para que funcione correctamente la señal "clk" debe ser de 100 Hz aproximadamente

Desconectado kamehouse

  • PIC12
  • **
  • Mensajes: 55
RE: antirrebotes del push button
« Respuesta #3 en: 22 de Diciembre de 2005, 11:33:00 »
Gracias por la respuesta  antoniof,
me sirvio de muuuucho.
y si es asincrono modulay gracias tambien.



 

anything