TODOPIC

Microcontroladores PIC => - Niple - => Mensaje iniciado por: juanpi2908 en 15 de Julio de 2014, 15:53:29

Título: Configuracion de tmr0 como contador de señal externa
Publicado por: juanpi2908 en 15 de Julio de 2014, 15:53:29
Hola gente!!

Tengo una pregunta muy básica, como se configura tmr0 para utilizarlo como contador de señal externa?
estuve buscando por el foro, hay cosas parecidas pero no pude solucionar mi duda  :5], no entiendo porque en

la ventana de configuración debajo de  preescalado e incrementos dice "tiempo entre interrupciones 13mS.:107uS" ,
como sabe Niple esto sino sabe que tipo de frecuencia va a ingresar por RA0?

Adjunte imagen de la ventana de configuración, espero no haber metido la pata con esta pregunta
y pasar vergüenza como otras veces  :mrgreen: :mrgreen:   jeejee je

Muchas gracias por el tiempo concedido  :)




 
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: Fer_TACA en 15 de Julio de 2014, 17:24:08
El pin RA4, no RA0, como indicas debe estar configurado como entrada. pero esto solo sirve para introducir pulsos por ese pin para que el contador interno (TMR0) tome esos pulsos como base de tiempo para realizar pulsos.

pero tienes razón en la apreciación de las interrupciones.

 :oops: :oops: :oops:
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: lucegiar2005 en 15 de Julio de 2014, 18:11:08
Solo por meter la cuchara, no creo que pueda hoy probar lo que pienso, quizà se deje la configuraciòn de cantidad de pulsos para determinar el evento que disparala interrupciòn, si alcanzo lo hago pero sino podrian probarlo. Un abrazo
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: Fer_TACA en 16 de Julio de 2014, 02:09:59
Desde Niple me informan que la entrada de pulsos externa no sirve para realizar el calculo de tiempo de la interrupcion y que lo van a deshabilitar/cambiar/modificar.
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: juanpi2908 en 17 de Julio de 2014, 09:14:39
Gracias muchachos :-)!!!

Empecé a hilar fino después que un proyecto no me funciono, envié mi consulta
a la gente de Niple ya que cuando configuro la -conversión de binario a BCD- del

registro TMR0 se abre una ventana de windows diciendo que hay una falla y debo
cerrar el programa, veremos que pasa, aa con respecto a la entrada de pulsos si

utilice RA4, me equivoque al escribir aquí :?

Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: Fer_TACA en 17 de Julio de 2014, 17:46:58
El problema de la configuración queda arreglado y saldrá en la nueva revisión del programa ya de forma correcta y disponible para todos los usuarios
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: lucegiar2005 en 21 de Julio de 2014, 11:56:24
Realmente no entiendo la finalidad de TMR0 como contador cuando lo podés hacer con cualquier pin, me rsulta algo poco practico hacerlo de este modo. Si alguien me desembrutece se lo agradesco.
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: juanpi2908 en 21 de Julio de 2014, 16:33:35
Al utilizar tmr0 como contador externo este cuenta paralelamente al programa, ósea no tienes que hacer una interrupción o tener
lineas de programa para contar los pulsos, tmr0 cuenta los pulsos a través de RA4 y los escribe en su registro sin intervención
de software, pero ojo ojazoo siempre incrementa, según tu proyecto puede o no servirte.

En un proyecto, te ahorras tener que leer un pin e incrementar en 1. solo tienes que ver el valor del registro TMR0 y listo

En mi caso estoy utilizando interrupción por flanco, para señal A de encoder y cambio de estado para un teclado y necesitaba contar
los pulsos de señal cero del encoder y lo que me quedo disponible es contar por TMR0, ademas el pulso de cero se da en el momento
en que se ejecuta interrupción por flanco, asi que ni modo de contarlo por soft. :shock:

Todavía no e podido montar la electronica, ya que tengo problemas con Niple en la conversión de "binario a BCD" del registro TMR0
ya envié mis duadas a NIple hace semana y media pero aun no tengo noticias  :(
 
Si dije alguna burrada por favor corrijanme estoy apenas empezando con todo esto  :lol: :lol:

Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: lucegiar2005 en 21 de Julio de 2014, 18:32:20
 :shock: :shock: Te agradesco la desasnada, no conocìa esta funciòn del TMR0, ahora veremos en que la usamos, si bien es limitada por el registro de 8 bits, siempre serà de utilidad en algùn momento.  :-/ :-/ Un abrazo
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: juanpi2908 en 21 de Julio de 2014, 22:00:40
También podes usar tmr1 de 16 bits, abrazos
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: lucegiar2005 en 22 de Julio de 2014, 06:43:07
Ok, gracias.
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: juanpi2908 en 22 de Julio de 2014, 14:10:38
Como ejercicio realice un programita para contar por tmr0, utilice 628A y lcd
y un swich para dar los pulsos por RA4, pero no cuenta muy bien :5] me desconcierta

Si alguien me pude dar una mano agradecido :lol:

Adjunto archivo .npl

Un error de Niple al crear interrupción de tmr0 automáticamente, ver captura adjuntada,
no la pude corregir manualmente, dice "Origen:Frec. Osc" debería decir "Origen:RB4/TOCK"

Muchas braciass.
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: magoni en 10 de Octubre de 2014, 16:34:12
Hola a todos los amigos del foro: Soy nuevo aquí,pero tengo Niple en la version 6 y me estoy complicando un poco con el TRM0. A diferencia tuya, Juanpi yo hice un temporizador de 2 seg.por frecuencia interna, para familiarizarme con el tempo y la interupcion.Basicamente repetí el tutorial de Niple en YouTube.Claro que en la nueva versión !!! Prender un led cuando pasa 2 seg. nada mas que eso es el programa, pero no se si estoy haciendo algo mal o hay algún fallo en la versión. Puedo mandar lo que hice ,es muy básico ,pero si alguien lo testeo, les agradeceria que lo postee.
Perdón que desvié un poco el hilo de lo que venia preguntando Juanpi ,pero no me parecía hacer un tema aparte con el TRM0. Por favor si tienen alguna ayuda se los agradeceré.
Saludos a todos los foristas.
Atte. Miguel.
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: juanpi2908 en 10 de Octubre de 2014, 19:38:08
Hola magoni bienvenido, si subes el .npl mejor!! si lo que quieres hacer es prender un led después de que pasen dos seg
 tienes que asignar valor 1 al pin de salida donde esta el led, esto es dentro del entorno de la interrupción, pero como te
dije antes mejor si subes el npl asi se entiende mejor lo que quieres hacer
Recuerda comprimir el npl en rar o algo parecido sino no lo podrás subir

saludos!!!  :-)
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: magoni en 12 de Octubre de 2014, 00:42:51
Hola Juanpi:Como estàs? Agradezco tu tiempo y tu pronta respuesta.Acà adjunto el proyecto (elemental,pero no comprendido) del encendido del led a los 2 seg.Seguramente serà para vos muy sencillo,y me sabràs guiar.
Bueno estuve tratando de pegar los graficos,pero no pude!!!.Los envio adjuntados.
Espero me puedas ayudar,nuevamente gracias.
Atte, Miguel
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: magoni en 12 de Octubre de 2014, 00:45:05
Juanpi: adjunto otros archivos relacionados
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: lucegiar2005 en 12 de Octubre de 2014, 08:59:27
Te paso una modificación y fijate si te aclara un poco el panorama. Un abrazo
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: juanpi2908 en 12 de Octubre de 2014, 14:20:44
Hola lo que as echo esta bien, lo que yo modificaría seria la configuración del pin reset, lo tenes en entrada
pero no la usas, si decides pasarla a reset ponle una resistencia pull up

La modificación que te propone Santiago esta buena, podrás ver como actúa tmr0 cada 2 segundos.

No as mencionado cual es la falla

Saludos  :-)

Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: magoni en 12 de Octubre de 2014, 17:30:20
Hola Colegas:Juanpi y Samtiago.Miren me està pasando que quiero usar la interrupcion por TRM0, y tengo la version 6.0.3 de Niple.Hice un monton de pruebas temporizando 2 seg. y coloque distintos led de colores para que me dè la pauta donde lo pierdo al programa.(hice video,pero pesa mucho)Lo tratarè de describir. Empezamos con la config.de TRM0 y sigo encendiendo un led amarillo.Cuando se interrumpe entra en la rama del led verde (si tiempo_t0)es =1.Pero despues dseguidamente recorre la rama del tiempo_t0=0 .encendiendo el led rojo ;quedando para siempre allì.¿? .No se que pasa que nunca sale de la interrpcion?Porque si saliese tendrìa que encender el led amarillo de regreso de la llamada de interrupcion.
Santiago, probé lo que me mandaste pero quedaba encendiendo y apagando el RA1,pero por eso le agreguè un led afuera (en el principal)para ver que saliese de la interrpciòn!!!, pero no!. No se reinicia y no sale de la interrupcion, me parece. Pruebenlo ,y saquen uds. una conclusiòn. No entiendo la funciòn de la bandera tiempo_t0!!.Si se pone en 1 cuando termina el tiempo...no habrìa que ponerla en =0,al salir de la interrupciòn? Eso lo probè y no hizo nada.
Estoy desorientado !!!! .O es una falla de la versiòn o no se usarla adecuadamente. A propòsito; Uds tienen la misma versiòn( 6.0.3)?
Un abrazo y adjunto lo que hice a ver que concluyen uds.
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: lucegiar2005 en 13 de Octubre de 2014, 09:05:02
Estimado magoni: el circuito que te pasé es igual al tuyo, solo le agregué para que hiciese lo que observas, cuando entra a la interrupción, y está cumplido el tiempo, se fija el estado de RA1 y lo cambia, así permanece hasta la proxima vez que interrumpa TMR0 "con tiempo cumplido" (TMR0 entrará varias veces en el transcurso de 2 seg, pero determina el tiempo en base a sus registros ligados para llegar al tiempo requerido, poniendo el Bit tiempo_t0=1)y repita el cambio. Esto te indica que entra y sale correctamente de la interrupción. En el que hiciste RA0 solo pasará a 1 y quedará así, la interrupción hace un salto a un subprograma o rutina, lo ejecuta y retorna al codigo que estaba ejecutando. En este caso lo hace en un nop siempre y retorna a él, por lo que lo que haces con RA0 queda fuera del código que se está ejecutando, un laso nop. Te aconsejo que subas tambien los archivos de simulación, no siempre tenemos tiempo o deseos de hacer uno acorde a cada circuito que comentamos, y en el tambien puede estar el error. Un abrazo
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: magoni en 13 de Octubre de 2014, 13:56:20
Hola Santiago: Entiendo lo que vos programaste que haga, pero tu programa a los 2 seg. enciende el led (puesto en RA1)  y no lo apaga nunca !!! Eso no està bièn!!.Por eso digo que no sale de la interrupciòn!
Duda: ese bit de tiempo_t0 se pone en cero cuando sale de la llamada de interrpciòn? O sea sale al programa ppal. con ese bit en cero?.
Bueno ,no esta funcionando mi interrupciòn.No se que otra cosa probar...
Les agradezco su interes.
Atte. Miguel
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: lucegiar2005 en 13 de Octubre de 2014, 19:10:45
Fijate que ocurre con el que te modifiqué porque funciona correctamente, en esta maquina no en tiempo real, pero prende y apaga secuencialmente. El bit se pone a 1 cuando completa el tiempo, no cada vez que interrumpe (c/16 mseg), cuando se cumplen las 125 interrupciones necesarias para 2 seg. Mira la configuración y verás reflejado lo que te digo.
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: magoni en 14 de Octubre de 2014, 12:58:00
Hola Santiago:Me parece que ahora está funcionando.Me parece que incurria en el error de colocar dentro de la interrupción (en la desesperación) una rutina que tardaba más que el tiempo del TMR0,o sea si el temporizador lo seteaba en 2 seg.;dentro de la interrupción le hacía hacer algo que lo demoraba más de 2seg. y eso me llevaba a una confusión.
Desde ya ,muchas gracias a vos y a Juanpi por el tiempo dedicado.
Atte.Miguel
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: juanpi2908 en 14 de Octubre de 2014, 14:06:33
Hola magoni, buenísimo que hallas solucionado el problema, igualmente fijate que RA4 lo tienes como entrada y no se utiliza
y esto a veces te trae problemas, tenés que ponerle resistencias para que funcione correctamente como también a RA5
El ultimo NPL que subiste tenia este mismo problema, además no se por que preguntabas por RA7 en el programa
principal, también designaste RA0 al led amarillo en prg. principal y al verde en interrupción, lo modifique fijate como te
funciona, el tiempo de interrupción (tmr0) lo subí a 5 segundos para que se pueda ver el led verde durante 1 seg además
cuando entra en la interrupción apaga el led amarillo y al volver al programa principal lo vuelve a prender, el led verde lo puse en
RA2 "creo", espero te sirva
Saludos!!
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: magoni en 19 de Octubre de 2014, 11:35:04
Hola Juanpi: Te agradezco tu tiempo.Gracias a tu aporte y de Santiago, entemdì como funciona la interrupciòn.Respondiendo a Juanpi: Me quedaron seteadas entradas del proyecto que estoy haciendo y si puede complicar si las dejo flotando. El RA7 lo usè porque me quedaban todas del mismo lado y con los ppines consecutivos,nada màs.
Nuevamente gracias,
Tengo una consulta de otro tema:Tengo que accionar dos motroes de paso simultanemente,pero con distintos controles pero al mismo tiempo.Se puede hacer con Niple?O se me ocurre algo multiplexado,no?
No sabria si hacer nuevo TEMA.
Abrazo
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: juanpi2908 en 20 de Octubre de 2014, 09:48:53
Hola magoni, por lo de los motores si se puede, busca dentro de Niple pwm, yo no tengo experiencia con ellos, por ahora.
Saludos  :-)
Título: Re: Configuracion de tmr0 como contador de señal externa
Publicado por: lucegiar2005 en 20 de Octubre de 2014, 13:14:29
Se puede controlar en modo cuasi simultaneo, dependerá de la velocidad de respuesta que nececites, del pic elegido por sus pines y reloj, etc.