TODOPIC

Microcontroladores PIC => - Niple - => Mensaje iniciado por: LED05 en 04 de Julio de 2014, 02:05:25

Título: Ayuda con Contador Ascendente Descendente
Publicado por: LED05 en 04 de Julio de 2014, 02:05:25
Hola amigos del foro... resulta que hace meses vengo intentando realizar este proyecto y no logro de que me salga!
Es un contador ascendente descendente que suma o resta de a 5 unidades. (es decir 00, 05, 10,etc..). Hice el proyecto en Niple 5.2 y lo quiero simular en Proteus 8 y no funciona. Quisiera corrigan mis errores o me dijeran en que me estoy equivocando...
Adjunto archivos para vuestro analisis...
Como no logro que ni siquiera prendan los 7 segmentos, solo coloquè un pulsador hasta que sepa me estoy equivocando.

Desde ya gracias...
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: Fer_TACA en 04 de Julio de 2014, 12:27:44
Mejor adjunta el fichero NPL de Niple.
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: LED05 en 04 de Julio de 2014, 23:54:17
Disculpa colega pero el sitio no me permite subir adjuntos con extensiòn *.NPL. Alguna sugerencia...pasos a seguir?
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: lucegiar2005 en 05 de Julio de 2014, 10:15:46
Hola ¿como estàs? Comprimirlos con rar o zip sirve para la subida. Un abrazo
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: lucegiar2005 en 06 de Julio de 2014, 12:49:44
Mirà, acà te dejo algo hecho en Niple 6 ev2, creo que es lo que deseas hacer, fijae y comentà
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: LED05 en 06 de Julio de 2014, 23:39:36
Aqui subo los archivos comprimidos en winrar como sugirieron...la verdad no se me habia ocurrido....
Gracias por el aporte y tambien gracias a Lucegiar2005 por el archivo que me pasò.  ;-)
 
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: lucegiar2005 en 07 de Julio de 2014, 09:18:03
El archivo que pasaste es de la versiòn 5.2, algo antigua y no puedo habrirla. Taampoco te sevirà el .nplde lo que te pasè porque es de versiòn reciente. Un abrazo
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: LED05 en 29 de Octubre de 2014, 08:38:40
Hola colega, tanto tiempo...
Tengo la ultima version de Niple, asi que ahora creo que va a ser mas facil conseguir ayuda.
Hice un nuevo diseño de este proyecto y estoy seguro de que funciona, pero Proteus me dice que
"simulation is not running in real time due to excessive cpu".
Mi pregunta es: ¿Por que entonces sì puedo simular el proyecto tuyo sin ningun problema?

Aprovecho para decirte que lo que me pasaste era realmente lo que necesitaba, muchas gracias. Igual tengo que usarlo como guia para adaptarlo a lo que preciso. Por el presente necesito que cuente de 00 a 60 en saltos de a 5, pues es para un timer que tengo que hacer en el que eligo los minutos con un maximo de 1 hora.

desde ya muchas gracias y aguardo tu respuesta! ;-)
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: lucegiar2005 en 29 de Octubre de 2014, 12:15:48
Hola, como va todo? Que la simulación no corra en tiempo real puede ser por distintos motivos: maquina en la que se ejecuta, SO, recursos asignados, etc., algunos de los cuales tienen opciones de resolución (bajando el fram-rate por ejemplo) según su origen. De todos modos si se desarrolla lento pero correctamente la probabilidad es que funcione bien en real. Si bien me decís que los saltos serán de 5 en 5, lo que me indica una precisión de 5 segundos (si fuecen seg/100 no contarías hasta 60) no aclarás si será configurable el tiempo de stop, cual timer usarías, etc.. Danos más datos y lo que hayas hecho.
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: LED05 en 30 de Octubre de 2014, 09:38:57
Hola amigo..!
Explico bien asi no hay confusiones!
Tengo que controlar un motor; asi que uno enciende el dispositivo... dos displays de 7 segmentos inicializan en cero, y alli tengo dos pulsadores ( up y down ); el operador selecciona cuantos minutos quiere... presionando "up" aumenta: 00, 05, 10, 15...60, o si se pasa y quiere volver con el pulsador "down" desciende tambien de a 5 min (ej. 25, 20, 15...etc).
Luego de seleccionar el tiempo, otro pulsador "comenzar" inicia el el resto de la rutina.
Mi idea es hacer por el momento esta parte del diseño y despues pasar a la otra etapa ya que no estoy muy diestro todavia programando...

Como la simulacion con 7 segmentos no funcionaba, programe esta parte usando un display lcd en Niple. En Proteus se simula perfectamente ahora. El unico inconveniente es que se inicia el programa bien, se muestran los digitos iniciales ( 00 ), presiono el pulsador "up" para que sume 5 minutos y lo hace bien (aparece 05 en el lcd) pero luego la segunda vez que presiono y en adelante me aparecen cosas raras como si fueran caracteres chinos... alli ya no se que pasa.

Bueno desde ya gracias y espero sugerencias y consejos.
Saludos!

En un rato subo lo que programe para que lo vean y me corrigan.
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: lucegiar2005 en 30 de Octubre de 2014, 11:10:44
OK, espero los archivos y veo la simulación para tratar de comentar el problema, si me da el conocimiento, y buscar soluciones.
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: lucegiar2005 en 30 de Octubre de 2014, 11:53:38
Releyendo tu comentario ultimo te pediría que comentes si el ttiempo es común a ambos o independiente para cada uno, así como el comienzo y fin de los motores simultaneo o no, etc..
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: LED05 en 30 de Octubre de 2014, 17:09:29
Hola... Es un solo motor donde solo hay que elegir el tiempo de funcionamiento que deseamos al comienzo del programa, dar play y listo.

No comprendi mucho tu ultimo mensaje por eso trato de sintetizarlo mas todavia...

Te adjunto lo que hice, en Proteus luego de las pantallas de bienvenida... aparece 00 y al presionar el boton de subir tiempo (que es el conectado a RA1) cambia a 5 pero si presiono otra vez aparecen caracteres raros.

Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: lucegiar2005 en 30 de Octubre de 2014, 17:35:13
El error es mio, cerebro en decadencia debido a los años  :oops: :oops:. No se de donde saqué que eran 2 motores a manejar. Mis disculpas

Nota: deberé hacer el l.Isis, no uso el 8 porque no me gusta como maneja los archivos y lo he desinstalado ha mucho.
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: lucegiar2005 en 30 de Octubre de 2014, 17:59:03
Lo que veo en un ratito que miré, cuando vuelva lo hago más profundo:
-ves 00 porque creaste la pantalla, pero no es por la variable.
-enviás como caracter un byte, imposible hacer eso.
-no has creado la pantalla donde se refleje la variable "conteo" la cual deberás, antes, descomponer a BCD para que se vea en el display.
-En la rutina de selección podés quedar enganchado en un laso cerrado ante un espúreo.
Debo salir, a la vuelta veo si te hago indicativo para que lo termines.
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: lucegiar2005 en 30 de Octubre de 2014, 23:47:20
Fijate si funciona esto.
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: LED05 en 31 de Octubre de 2014, 10:01:19
Hola amigo... Mirà la verdad que ayer de tarde leì tus sugerencias y hubo una palabra que me sacó la venda de los ojos: "VARIABLE"
Me hiciste darme cuenta de cual era mi error!
Por la noche me puse a programar y me saliò todo lo que querìa hacer... funciona perfectamente! :-/
El punto clave estuvo en 2 cosas: Ir modificando el registro "conteo" (la variable) (en funcion de las operaciones matematicas de sumar y restar efectuadas con los pulsadores), esto lo logrè utilizando instrucciones predefinidas como MOVLW y MOVWF (en esta ultima instrucciòn el registro destino F obviamente es "conteo")
Lo segundo fue entender que debia crear nuevas pantallas de visualizacion que no habia hecho.
Y algo mas...Una vez que tenia el registro "conteo" con lo que querìa visualizar, convertirlo a BCD.

Creo que lo justo es concederte el èxito y los laureles de este logro, fue tu orientaciòn lo que me ayudò. ((:-))
Muchisimas gracias...

Adjunto el archivo de simulacion igual para que lo veas y celebremos juntos :-/
Igual cualquier detalle que notes soy todo oìdos...

Saludos!
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: lucegiar2005 en 31 de Octubre de 2014, 11:17:15
No es mi merito, sino tuyo por buscar y solucionar el error cometido. Lo mio es solo una guia sin demasiadas luces que has sabido interpretar. Me alegra que lo lograras. Veamos por donde sigue el programa. Un abrazo.

Nota: no subiste archivo.
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: LED05 en 31 de Octubre de 2014, 11:28:29
Vos sabes que lo deje en el pendrive! y ahora no lo tengo conmigo, ni bien pueda lo subo...

Estamos en contacto. Gracias
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: Fer_TACA en 31 de Octubre de 2014, 17:07:48
............................................................esto lo logrè utilizando instrucciones predefinidas como MOVLW y MOVWF (en esta ultima instrucciòn el registro destino F obviamente es "conteo")...........................................
Saludos!

Aunque Niple puede trabajar con instrucciones ASM, lo mejor es que para sumar, restar,...... utilices las opciones de operaciones matemáticas del explorador de la derecha del entorno. Te saldrá el proyecto mas claro y entendible sin tener que realizar el programa a tan bajo nivel. ;-)
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: LED05 en 13 de Noviembre de 2014, 16:02:07
Perdòn la demora, me perdi un poco...
Amigo Fer_TACA me expliquè mal en realidad utilicè lo que mencionaste, lo que quise trasmitir es que no estaba usando el registro W y no queria tocar algunas instrucciones que a veces se precisan pero que son parte de la programacion... pero sî te doy la razòn y de hecho me utilicè las operaciones matematicas. Gracias por tu consejo.


Subo el archivo prometido.

Por otro lado y para no postear nuevamente... La parte que sigue es conectar un pulsador ("play) para que inicie el resto de la rutina en base al tiempo elegido. Mi idea es conectar un pulsador a la entrada RB0 y detectar si se presionò el pulsador mediante una interrupcion RB0/INT. Entonces si se presionò el pulsador de inicio volvemos de la interrupciòn y continuamos con la rutina que sigue. Si no se presionò; el programa sigue en la primera parte que es selecciòn del tiempo hasta que se presione el boton "play". Les parece buena idea?
Intentè algo de eso y no me sale...es la primera vez que manejo interrupciones y ademas no se como volver a la primera etapa (si NO se presionò "play") sin que se quede enbucleada alli sin poder salir...
Bueno desde ya gracias...!
 
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: Fer_TACA en 14 de Noviembre de 2014, 07:02:16
Debed de configurar y activar la interrupcion primero.
con eso se te crea de forma automatica una subrutina nueva. Hay pones:
1º  lo que quieras despues de comparar si se presiona el pulsador que quieres al final colocas un bloque de fin de interrupcion.
2º En caso de no estar presionado colocas otro fin de interrupciony listo el programa ya se ancarga solo de hacer el resto y continuar con la parte  principal,de tu proyecto.

Si has adjuntado algo de eso en el fichero que has subido, luego lo reviso y trato de orientarte con mas detalle.
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: Fer_TACA en 14 de Noviembre de 2014, 17:39:25
Por que no adjuntas el fichero npl para revisar lo realizado. Has adjuntado el fichero de proteus y ahí no se puede ver nada.
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: lucegiar2005 en 21 de Noviembre de 2014, 06:49:42
Parece que está trabado LED05, dejo un temporizador para que saque ideas y para que no quede inconcluso el tema.
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: LED05 en 22 de Noviembre de 2014, 18:50:40
Hola estimados amigos! Perdón y mil perdones, no me olvidé de ustedes, es solo que a veces no se dan los tiempos de sentarse...
El consejo de Fer_TACA de la interrupción aplicado y con 100% de éxito. Asi que muchas gracias amigo por tu consejo!
Tambien a Lucegiar2005 por tu archivo.
Ya casi terminé lo que me propuse hacer, lo que me falta y quería preguntarles...
Dentro de la rutina de interrupción (RB0/INT) programé la rutina a seguir por los motores que quiero controlar.
Cuando termine esa rutina (se paren los motores) quiero que me avise mediante un buzzer sonando tres veces (como el aviso que hacen los microondas al terminar). mi pregunta es la siguiente:
Puedo hacer otra pequeña subrutina donde escribo un 1 (por ej en RA0 configurado como salida) que espere 1 segundo que lo vuelva a escribir y asi por tres veces...
U otra forma que se me ocurrió es crear una interrupción mediante el temporizador interno TMRO configurado para que desborde cada 1 segundo y luego active la salida correspondiente al buzzer ( un total de 3 veces).
Es conveniente y se pude hacer el crear la interrupción TMRO dentro de la interrupción RB0/INT?
O sugieren otra manera de encarar el final?
Gracias...
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: lucegiar2005 en 22 de Noviembre de 2014, 21:38:59
Al no tener el npl no se como encaraste el programa, algunas veces la interrupción puede ser extensa y otras no, dependiendo de cual sea y la prioridad del codigo que ejecuta. Dentro de una rutina se puede llamar a otra pero sin que se aniden más de 8 según manual, pero deben ser lo minimo posible. Organizar en subrutinas es lo mejor para el orden y comprensión del progama,  y por cierto que se puede hacer la que propones o cualquier otra. Esa rutina podés hacerla por tiempo fijo o TMRx, dependiendo de tu criterio de desarrollo. Con tiempo fijo declaras un contador a cero, lo incrementás cada vez que se cumple el tiempo y si es igual a tres salís, sino recomenzás. Tambien en secuencias de xT. Hay mil formas de atar al perro y algunos lo hacen con chorizo. Un abrazo.
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: LED05 en 23 de Febrero de 2015, 12:02:13
Hola amigos...al final lo del buzzer se cancela asi que quedó el proyecto terminado y como comenté gracias a las sugerencias de ustedes colegas.
Me queda en el tintero una pequeña fallita que no logro corregir.
Cuando le doy la alimentación inicia todo bien y cuando presiono el pulsador "SUBIR" para seleccionar el tiempo comienza a contar sin parar (como yo quiero, de a 5 minutos, pero sin parar) la unica forma de que pare y muestre en el display por cuanto tiempo va es dejando presionado el pulsador. Mi teoría es que le falta mas antirrebote, que opinan ustedes? tomé una sugerencia del foro pero no tuve resultados...agregando un filtro y un diodo al pulsador mejoro un poco pero no del todo. Sólo me falta este detalle para que ande a la perfección.
Saludos!
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: Fer_TACA en 23 de Febrero de 2015, 15:24:15
habría que ver el código para saber porque cuenta sin parar hasta que no sueltas.
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: LED05 en 23 de Febrero de 2015, 17:59:11
ok Fer_Taca! Subo el asm generado por niple...
Igualmente te comento, no es que cuenta hasta que suelto sino al revés. El display queda en cero esperando la orden de subir o bajar el conteo, cuando presiono PULSADOR SUBIR comienza a subir de a 5 minutos pero sin parar y rapidisimo. Cuando presiono el pulsador "y lo dejo presionado" se detiene y me muestra el conteo o mejor dicho los minutos en donde lo haya "sorprendido al contador"; si suelto el pulsador vuelve a contar sin parar de forma muy rápida como describí.

El control de los pulsadores lo hago en la subrutina llamada "Control de pulsadores"

Desde ya gracias!
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: Fer_TACA en 24 de Febrero de 2015, 02:51:55
 Para revisarlo, es mejor el fichero fuentte de npl.
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: LED05 en 16 de Marzo de 2015, 10:43:59
Hola amigo Fer_TACA.
Te pregunto, subo solo la subrutina donde testeo el estado de los pulsadores para ver si allí está el error?
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: Fer_TACA en 16 de Marzo de 2015, 13:45:07
Lo mejor seria completo, por si acaso
Título: Re: Ayuda con Contador Ascendente Descendente
Publicado por: LED05 en 16 de Marzo de 2015, 17:25:03
Bueno amigo aquí está el archivo.
De paso si querés corregime lo que veas puedo mejorar, acepto cualquier sugerencia para no solo simplificar el programa en general; sino tambien para programar quizás a un nivel mejor.
Es mi primer programa asique sin duda hay mucho que mejorar.
Desde ya gracias por tu valioso tiempo y a los colegas tambien.