Visualización en 7 segmentos
Moderator: Benj
-
- Posts: 91
- Joined: Fri Oct 27, 2017 9:50 am
- Has thanked: 13 times
- Been thanked: 10 times
- Contact:
Visualización en 7 segmentos
Hola,
Como principiante que soy en Flowcode, tengo una nueva consulta para ver si me pueden ayudar.
Se trata de lo siguiente:
Estoy realizando un temporizador regresivo. La parte del ajuste del valor de la temporización y puesta en marcha creo que ya la tengo implementada, salvo depuraciones posteriores durante las pruebas. Esto lo veo visualizando los valores de las distintas variables durante la ejecución del programa.
El problema lo tengo al intentar visualizar los valores en un display (2 dígitos) de 7 segmentos. Los valores serán de un máximo de 60 y no se como poder descomponer el numero en 2 dígitos separados para visualizar cada numero en un digito. Actualmente tengo una macro que me va actualizando el valor del tiempo, este valor cuando alcanza el valor de 10, me pasa el primer digito(unidades) a 0 y me incrementa en una unidad el segundo(decenas). Ahora bien cuando sucede eso, el valor del digito de unidades ya no se vuelve a incrementar, sin embargo cuando el tiempo llega a 20, 30, 40 50 o 60 (valor máximo) el digito de las decenas si se incrementa.
¿Me pueden ayudar a solucionar esta cuestión?
Adjunto el proyecto (sin finalizar) y una imagen de la macro donde se actualizan los valores.
Muchas Gracias
F..
Como principiante que soy en Flowcode, tengo una nueva consulta para ver si me pueden ayudar.
Se trata de lo siguiente:
Estoy realizando un temporizador regresivo. La parte del ajuste del valor de la temporización y puesta en marcha creo que ya la tengo implementada, salvo depuraciones posteriores durante las pruebas. Esto lo veo visualizando los valores de las distintas variables durante la ejecución del programa.
El problema lo tengo al intentar visualizar los valores en un display (2 dígitos) de 7 segmentos. Los valores serán de un máximo de 60 y no se como poder descomponer el numero en 2 dígitos separados para visualizar cada numero en un digito. Actualmente tengo una macro que me va actualizando el valor del tiempo, este valor cuando alcanza el valor de 10, me pasa el primer digito(unidades) a 0 y me incrementa en una unidad el segundo(decenas). Ahora bien cuando sucede eso, el valor del digito de unidades ya no se vuelve a incrementar, sin embargo cuando el tiempo llega a 20, 30, 40 50 o 60 (valor máximo) el digito de las decenas si se incrementa.
¿Me pueden ayudar a solucionar esta cuestión?
Adjunto el proyecto (sin finalizar) y una imagen de la macro donde se actualizan los valores.
Muchas Gracias
F..
- Attachments
-
- Actualizar valores.zip
- (71.25 KiB) Downloaded 265 times
-
- TEMPORIZADOR_REGRESIVO_01.fcfx
- (30.59 KiB) Downloaded 288 times
-
- Matrix Staff
- Posts: 9520
- Joined: Sat May 05, 2007 2:27 pm
- Location: Northamptonshire, UK
- Has thanked: 2585 times
- Been thanked: 3815 times
- Contact:
Re: Visualización en 7 segmentos
Probar diagrama de flujo adjunto
Try Attached flowchart.
Try Attached flowchart.
- Attachments
-
- TEMPORIZADOR_REGRESIVO_02.fcfx
- (26.12 KiB) Downloaded 284 times
Martin
-
- Posts: 91
- Joined: Fri Oct 27, 2017 9:50 am
- Has thanked: 13 times
- Been thanked: 10 times
- Contact:
Re: Visualización en 7 segmentos
Gracias por la respuesta y sobre todo por la corrección del programa.
Llevo parte de la tarde revisando los cambios que me has propuesto y sobre todo estudiando el porque y como se han realizado.
No obstante tengo una pregunta adicional, ya que todo funciona correctamente, pero detecto un pequeño defecto que no se si será por estar viendo el programa en simulación. Se trata de lo siguiente:
Una vez programado un tiempo determinado, en el display se aprecia correctamente el decremento perro cuando la cuenta llega a 0 (variable de Tiempo Total =0) el display se queda marcando el valor "01".
Creo que no debería de pasar pues según el programa cuando el tiempo total es 0 se para el programa hasta que se deshabilita el interruptor de "Start_Stop".
Otra cosa y que no tiene nada que ver con el programa en cuestion, aprovecho el post para una pregunta general: ¿en el panel de sistema no se pueden colocar etiquetas que identifiquen los elementos colcados?
Una vez mas gracias.
F.
Llevo parte de la tarde revisando los cambios que me has propuesto y sobre todo estudiando el porque y como se han realizado.
No obstante tengo una pregunta adicional, ya que todo funciona correctamente, pero detecto un pequeño defecto que no se si será por estar viendo el programa en simulación. Se trata de lo siguiente:
Una vez programado un tiempo determinado, en el display se aprecia correctamente el decremento perro cuando la cuenta llega a 0 (variable de Tiempo Total =0) el display se queda marcando el valor "01".
Creo que no debería de pasar pues según el programa cuando el tiempo total es 0 se para el programa hasta que se deshabilita el interruptor de "Start_Stop".
Otra cosa y que no tiene nada que ver con el programa en cuestion, aprovecho el post para una pregunta general: ¿en el panel de sistema no se pueden colocar etiquetas que identifiquen los elementos colcados?
Una vez mas gracias.
F.
-
- Matrix Staff
- Posts: 9520
- Joined: Sat May 05, 2007 2:27 pm
- Location: Northamptonshire, UK
- Has thanked: 2585 times
- Been thanked: 3815 times
- Contact:
-
- Posts: 91
- Joined: Fri Oct 27, 2017 9:50 am
- Has thanked: 13 times
- Been thanked: 10 times
- Contact:
Re: Visualización en 7 segmentos
Gracias nuevamente por la respuesta.
Ya coloqué las etiquetas y pude corregir el que el display no se quedase marcando el valor 01 al llegar a su tiempo final.
F.
Ya coloqué las etiquetas y pude corregir el que el display no se quedase marcando el valor 01 al llegar a su tiempo final.
F.
-
- Posts: 91
- Joined: Fri Oct 27, 2017 9:50 am
- Has thanked: 13 times
- Been thanked: 10 times
- Contact:
Re: Visualización en 7 segmentos
¿Me pueden indicar si mis cálculos son correctos?
Acabo de terminar el programa de temporización descendente y antes de pasarlo al pcb quería estar seguro de que lo realizado veces esta correctamente.
Cuando lo simulo estimo que la lógica es la correcta, pero en los valores de tiempos que obtengo tengo una duda porque no son los que he diseñado, pienso que debe ser por estar en simulación y que en la realidad son correctos. Los he calculado varias y siempre me han dado los mismos.
Utilizo 2 interrupciones, una del TMR0 y otra del TMR1, agradecería que me indicasen si mis cálculos son correctos o no:
Para el TMR0:
Con un oscilador de 8MHz, oscilador interno y un prescaler de 1:128, Flowcode me dice la frecuencia de interrupción es de 61,035Hz o lo que es lo mismo 0,016384sg. Necesito obtener 60 segundos por lo que utilizo un contador de1sg por lo que cuento 61 veces esa interrupción y cuando se alcanza ese valor, incremento otra variable hasta contar otra vez 60.
Para el TMR1:
Con un oscilador de 8MHz, oscilador interno y un prescaler de 1:8, Flowcode me dice la frecuencia de interrupción es de 3,815Hz o lo que es lo mismo 0,2621234sg. Necesito obtener 12 segundos por lo que utilizo un contador hasta que cuento 458 veces esa interrupción.
Adjunto el fichero del programa.
Muchas Gracias
F.
Acabo de terminar el programa de temporización descendente y antes de pasarlo al pcb quería estar seguro de que lo realizado veces esta correctamente.
Cuando lo simulo estimo que la lógica es la correcta, pero en los valores de tiempos que obtengo tengo una duda porque no son los que he diseñado, pienso que debe ser por estar en simulación y que en la realidad son correctos. Los he calculado varias y siempre me han dado los mismos.
Utilizo 2 interrupciones, una del TMR0 y otra del TMR1, agradecería que me indicasen si mis cálculos son correctos o no:
Para el TMR0:
Con un oscilador de 8MHz, oscilador interno y un prescaler de 1:128, Flowcode me dice la frecuencia de interrupción es de 61,035Hz o lo que es lo mismo 0,016384sg. Necesito obtener 60 segundos por lo que utilizo un contador de1sg por lo que cuento 61 veces esa interrupción y cuando se alcanza ese valor, incremento otra variable hasta contar otra vez 60.
Para el TMR1:
Con un oscilador de 8MHz, oscilador interno y un prescaler de 1:8, Flowcode me dice la frecuencia de interrupción es de 3,815Hz o lo que es lo mismo 0,2621234sg. Necesito obtener 12 segundos por lo que utilizo un contador hasta que cuento 458 veces esa interrupción.
Adjunto el fichero del programa.
Muchas Gracias
F.
- Attachments
-
- TEMPORIZADOR_REGRESIVO.fcfx
- (32.57 KiB) Downloaded 270 times
-
- Matrix Staff
- Posts: 9520
- Joined: Sat May 05, 2007 2:27 pm
- Location: Northamptonshire, UK
- Has thanked: 2585 times
- Been thanked: 3815 times
- Contact:
Re: Visualización en 7 segmentos
¿Qué versión de flowcode estás usando?
what version of flowcode are you using?
what version of flowcode are you using?
Martin
-
- Posts: 91
- Joined: Fri Oct 27, 2017 9:50 am
- Has thanked: 13 times
- Been thanked: 10 times
- Contact:
Re: Visualización en 7 segmentos
La versión que tengo es: 8.0.0.6
En mi pregunta anterior hay un error con el texto del TMR1 indico que necesito 12 segundos. En realidad son 120 por eso la cuenta de 458 interrupciones
En mi pregunta anterior hay un error con el texto del TMR1 indico que necesito 12 segundos. En realidad son 120 por eso la cuenta de 458 interrupciones
-
- Matrix Staff
- Posts: 9520
- Joined: Sat May 05, 2007 2:27 pm
- Location: Northamptonshire, UK
- Has thanked: 2585 times
- Been thanked: 3815 times
- Contact:
Re: Visualización en 7 segmentos
Error causado por un oscilador interno que funciona a una frecuencia incorrecta.
OSCCON ajusta la velocidad del oscilador interno. Coloque el bloque de código C al inicio de Main.
Flowcode requiere actualización: Más preciso si usa timer2:
OSCCON ajusta la velocidad del oscilador interno. Coloque el bloque de código C al inicio de Main.
Flowcode requiere actualización: Más preciso si usa timer2:
Martin
-
- Posts: 91
- Joined: Fri Oct 27, 2017 9:50 am
- Has thanked: 13 times
- Been thanked: 10 times
- Contact:
Re: Visualización en 7 segmentos
Muchas gracias de nuevo.
Independientemente de la precisión usando el TMR2.
He realizado los cambios propuestos y los tiempos ahora en simulación son mas lentos, pero el tiempo del TMR0 que obtengo ahora es justamente la mitad de lo programado.
Es decir que si programo un tiempo de 60, al dar al interruptor de Start_Stop el display se está decrementando cada segundo cuando en realidad según lo programado si no me he equivocado, el display se debería de decrementar cada minuto.
Independientemente de la precisión usando el TMR2.
He realizado los cambios propuestos y los tiempos ahora en simulación son mas lentos, pero el tiempo del TMR0 que obtengo ahora es justamente la mitad de lo programado.
Es decir que si programo un tiempo de 60, al dar al interruptor de Start_Stop el display se está decrementando cada segundo cuando en realidad según lo programado si no me he equivocado, el display se debería de decrementar cada minuto.
- Attachments
-
- TEMPORIZADOR_REGRESIVO.fcfx
- (33.48 KiB) Downloaded 276 times
-
- Posts: 91
- Joined: Fri Oct 27, 2017 9:50 am
- Has thanked: 13 times
- Been thanked: 10 times
- Contact:
Re: Visualización en 7 segmentos
Por otra parte también acabo de comprobar que el tiempo de interrupción del TMR1 sigue siendo muy rápido, prácticamente me está dando un tiempo aproximado de 2sg en vez de los 2 minutos.
-
- Matrix Staff
- Posts: 9520
- Joined: Sat May 05, 2007 2:27 pm
- Location: Northamptonshire, UK
- Has thanked: 2585 times
- Been thanked: 3815 times
- Contact:
-
- Posts: 91
- Joined: Fri Oct 27, 2017 9:50 am
- Has thanked: 13 times
- Been thanked: 10 times
- Contact:
Re: Visualización en 7 segmentos
Gracias,
Lo raro es que no diese ningún error al compilar.
En cuanto pueda lo pruebo en hardware. Pero se me sigue haciendo muy raro que el tiempo se ajusto 1/10 del tiempo ajustado.
¿Puede revisar la rutina del TMR0 y ver si hay algo mal?
Lo raro es que no diese ningún error al compilar.
En cuanto pueda lo pruebo en hardware. Pero se me sigue haciendo muy raro que el tiempo se ajusto 1/10 del tiempo ajustado.
¿Puede revisar la rutina del TMR0 y ver si hay algo mal?
-
- Matrix Staff
- Posts: 9520
- Joined: Sat May 05, 2007 2:27 pm
- Location: Northamptonshire, UK
- Has thanked: 2585 times
- Been thanked: 3815 times
- Contact: