TODOPIC
Otros Microcontroladores / Dispositivos programables => Lógica Programable => Mensaje iniciado por: CesarGomez en 18 de Abril de 2017, 15:39:11
-
buen día señores, en una materia de mi carrera, debo realizar un cronometro, una de mis preguntas es como realizar el antirrebote ya que debo tener tres pulsadores un start/stop, un lap y un reset, anexo mi programa el cual tambien tengo otro incoveniente con la estructura de este, adjunto imagenes y programa en txt, agradezco cualquier colaboracion y sugerencia, muchas gracias.
- Tienes que ingresar para ver archivos adjuntos - - Tienes que ingresar para ver archivos adjuntos -
-
Yo lo que suelo hacer es coger una variable y ponerla a su valor medio y esperar a que desborde un limite por arriba o por abajo. Por ejemplo, inicializa una variable a 1000 y cada vez que veas un '1' en la linea le sumas 1 y cuando veas un '0' le restas 1, si ves que la variable llega a 500 es que tienes un '0' lógico y si llega a 1500 es que tienes un '1' lógico. Claro que eso tienes que ajustarlo a tú reloj porque evaluarlo a 100mhz de ciclo de reloj (facil en una fpga) puede ser evaluarlo demasiado rápido: entonces cambias los valores a los que se desborda...
En C es sencillo, en hdl supongo que también pero estoy oxidado :P
Saludos!
-
Algo asi como dice manwewe
http://www.digilogic.es/pulsador-antirrebote-en-vhdl-debouncing/
-
muchas gracias manwenwe y KILLERJC por estar atentos a mi inquietud, la verdad lo estoy haciendo por medio de un contador el cual contara segun la formula del link enviado por KILLERJC, este contara hasta 250.000 e ira incrementando las decimas de segundos y asi sucesivamente con cada formato, el problema es que utilizo en dos ocasiones el reloj y un contador y me muestra el error en la imagen adjunta, adjuntare el programa para facilitar entendimiento - Tienes que ingresar para ver archivos adjuntos - , gracias.
-
Si no me equivoco el problema viene porque hay 2 o mas procesos que asignan valores a un mismo registro/variable/etc.
divisor100hz asigna valores a C1,M1,etc
Pero sincronizacion lo hace tambien
Hace mucho que no "programo" en VHDL, pero no te conviene hacer como una especie de "modulo" que transforme el binario en 7 segmentos, de esa forma repetis el modulo para cada "salida" en binario. A mi entender parece que queres hacer todo junto.