Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: paco1980 en 27 de Abril de 2007, 17:40:48
Título: timer 0 sin oscilador interno
Publicado por: paco1980 en 27 de Abril de 2007, 17:40:48
Me expongo a que me critiquen de que he puesto el mismo tema en dos hilos, pero es que aqui veo que me escuchais más. ( y no es por ofender, pero es que soy muy impaciente) Os parecerá una tontería, pero es la primera vez que intento hacerlo y no se como empezar. Vamos a ver, como lo que quiero es utilizar un cristal externo para temporizar por timer 1 y así poder poner el pic en modo sleep, lo que necesito es configurar el timer 0 interno para que trabaje a 32kHz, y así poner el pic al menor consumo. y es que no tengo ni idea de como hacerlo. Podrian ayudarme? Gracias.
Título: Re: timer 0 sin oscilador interno
Publicado por: paco1980 en 27 de Abril de 2007, 17:42:31
perdon. el titulo es equivocado. queria decir sin oscilador externo, poruqe supongo que habrá que configurar el timer 0 para que el pic rule.
Título: Re: timer 0 sin oscilador interno
Publicado por: sander en 27 de Abril de 2007, 18:18:47
Podrias dar mas datos como el PIC que estas usando?? ademas que no entendi exactamente que es lo que quieres, podrias decir de que valor es el cristal externo que quieres usar para el tmr1 y con que señal quieres que funcione el tmr0.
saludos
Título: Re: timer 0 sin oscilador interno
Publicado por: paco1980 en 27 de Abril de 2007, 19:01:50
hombre sander. Aqui me tienes jugando con el mplab sim ahor que me rula. Vamos a ver. Todo esto viene de atras, de mi primer post con el tema del consumo. Voy a utilizar el pic16f917, con tecnología nanowatt, pero mientras no me lo den, sigo con mi pic 16f877 practicando. He estado programando en c, pero cosas sencillas, con el timer0 con oscilador externo etc. lo que pretendo es dejar el pic en modo sleep, y a parte de despertarlo por el típico port b, también quiero contar tiempo mientras este duerme, y según tengo entendido, la una forma de hacerlo es con el timer 1. Pero supongo que tengo que configurar también el timer 0 para que ande el pic. Un saludito
Título: Re: timer 0 sin oscilador interno
Publicado por: paco1980 en 27 de Abril de 2007, 19:05:46
Por cierto, he visto tu post en unicrom sobre mplab, y si se aceptan peticiones, yo elijo que te bases en la versión v7.14 ¡puestos a pedirrr¡¡ jajaj
Título: Re: timer 0 sin oscilador interno
Publicado por: sander en 27 de Abril de 2007, 19:39:53
Bueno pues paco1980, creo que ya tengo mas idea de lo que pretendes hacer , bueno voy a poner lo que entendi para ver si lo tengo claro, si usas un pic 16f877 necesitaras un oscilador externo un cristal o una red RC para que funcione el procesador del pic y ademas usaras un cristal externo para usar el tmr1 durante el sleep, cuando dices que usabas el tmr0 con oscilador externo supongo que le ponias una señal de reloj por RA4 y usabas el tmr0 en modo contador. me imagino (no lo he probado y tampoco estoy seguro) que si quieres evitar que el tmr0 no comsuma corriente este no debera incrementarse y para esto tendrias que configurarlo en modo contador y poner el pin RA4 como entrada y colocar una resistencia a VDD o GND , a no ser que quieras usarlo como temporizador internamente, y espero y te ayude .
Sobre el post en unicrom estoy haciendo los priemeros capitulos con la version 7.52 que es la mas reciente
Saludos
Título: Re: timer 0 sin oscilador interno
Publicado por: paco1980 en 28 de Abril de 2007, 13:35:38
Vamos ha ver, yo siempre he trabajado con el timer 0 poniendole un cristal, pero lo que quiero es no ponerle cristal, creía que el pic llevaba cristal interno programable. De todas formas, como lo que quiero es configurar el timer 1, ¿ no hace falta que programe el pic para el timer 0, verdad? Es que tengo la duda de lo de los cristales. ¿Un pic puede funcionar sin cristal u oscilador interno?. Puff cada vez estoy más perdido. Un saludo
Título: Re: timer 0 sin oscilador interno
Publicado por: vszener en 28 de Abril de 2007, 15:17:46
Hay ciertos pic's que traen internamente el oscilador interno e incluso, en la mayoria de casos, es programable. Pero en otros pic¡s, no traen el periférico del oscilador interno.
Ante la duda revisa el data sheet del dispositivo. Y si aún sigues teniendo dudas, que revisando el data sheet no debería pasarte, ponle un cristal externo, una red RC, ...
Suerte!!! ;)
Título: Re: timer 0 sin oscilador interno
Publicado por: paco1980 en 28 de Abril de 2007, 18:10:29
vALE, GRACIAS POR LA INFORMACIÓN. El 16f877 no trae oscilador interno, por lo que hay que ponerle cristal a la fuerza entre osc1 y osc2. Hasta hay bien. Ya consigo programar el Timer1, pero para que funcione internamenta, y lo que quiero es colocarle otro cristal entre sus pines ( RC0 y RC1) y por lo tanto desbordarlo desde este cristal, pero el problema es que no se configurarlo para este modo de funcionamiento.Que instruccion debo utilizar? Yo creía que era Setup_timer_1(t1_external) pero no me hace nada. (no se me desborda.
Un saludito.
Título: Re: timer 0 sin oscilador interno
Publicado por: vszener en 29 de Abril de 2007, 14:50:12
Al declarar la función
Código: C
Setup_timer_1(t1_external);
Estás configurando el timer1 como contador de impulsos externos.
Para poner un cristal externo al timer1, por ejemplo para que funcione como un RTC, mirate el data sheet, donde te expondrán los registros apropiados y sus respectivos bits.
Suerte!!! ;)
Título: Re: timer 0 sin oscilador interno
Publicado por: paco1980 en 30 de Abril de 2007, 13:54:41
según he recopilado del datasheet, la única forma de que el timer 1 despierte en un sleep es configurado como contador externo asincrono. Pero estoy muy perdido. Según esto hay que poner a set el control bit T1SYNC of the T1CON register, pero no se como implementarlo en c, ya que uso el ccs y me olvide por completo de lo poco que aprendí en ensamblador. ¿ El modo contador asincrono se puede implementar con un cristal externo? puff, ustedes lo verán facil, pero yo soy muy nuevo en este tipo de dudas. Un saludo
Título: Re: timer 0 sin oscilador interno
Publicado por: vszener en 01 de Mayo de 2007, 06:43:51
No hace falta un oscilador externo, simplemente el pic recibirá impulsos aleatorios por el pin del timer1 habilitado para tal función y los irá acumulando hasta llegar a desbordarse y producir una interrupción o un aviso de desbordamiento.