TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: max en 11 de Julio de 2006, 15:36:36

Título: real time clock por interrupcion
Publicado por: max en 11 de Julio de 2006, 15:36:36
Hola a todos:
                   Estoy trabajando en un proyecto personal, estoy usando el PIC16F873 junto con un integrado Real Time Clock (RTC) el DS1337 de Dallas. Este integrado posee dos alarmas que permiten interrurpir al PIC una vez por segundo, por minuto, por hora, etc... Mi problema es que no puedo hacer funcionar dicho integrado mediante esas interrupciones, el integrado funciona pero solo logro leer los registros haciendo sucesivas lecturas, por la idea de mi proyecto necesito independizarem del reloj y que este me interrumpa cada minuto y solamente en ese momento leer los registros para actualizar el reloj del Microcontrolador. Si alguien se topo con este problema agradeceria mucho un consejo o una pista qu eme pueda orientar. Desde ya muchas gracias. Saludos.

                                                                                 Ing. Olivera Maximiliano       
Título: Re: real time clock por interrupcion
Publicado por: PantheR en 13 de Julio de 2006, 16:35:39
buENAS TARDES UNA MANERA DE RESOLVER ESTE PROBLEMA ES QUE ACTIVES LA INTERRUPCION DEL TIMER1 CADA UN MINUTO Y EN LA INTERRUPCION LEES LOS REGISTROS DE MINUTOS Y HORAS DEL RTC(DS1307) Y ACTUALIZAS TU HORA DE TU PROYECTO. ESTA SERIA UNA SOLUCION RAPIDA. CUANTO TIEMPO PERDERIAS EN LEER EL RELOJ? UNOS CUANTOS MILISEGUNDOS O HASTA MENOS. ESPERO HABERTE AYUDADO.
Título: Re: real time clock por interrupcion
Publicado por: Deimos en 14 de Julio de 2006, 12:50:28
La solucion que yo propongo es la siguiente:

conectar el RTC a la entrada de eventos del pic, la entrada de timer INT, si la tiene, sino una pata asociada a una interrupcion que pueda ver el cambio. Cada vez que llegue un flanco o cambio, el micro sufrira una interrupcion, pero, esa interrupcion se sirve cuando un contador, que programas con C, llega a 60, o 1200, o lo que te haga falta. No tienes porque servir la interrupcion justo cuando venga el flanco, cuentas el numero de flancos, hasta que sepas que ya has llegado a tener el tiempo que necesitas y ya está.

Para que te hagas una idea, cuando salta la intrr, el pic va al vector de intrr y mira por polling quien ha sido el que ha interrumpido el programa,  y salta a la direccion que le indique el vector. Si por medio metes un trozo de programa, que una vez sabe que ha sido interrupcion por flanco exterior, que mire cuantos flancos ha dado. Si todavia no ha llegado, pues nada, habilitas la intrr y ya está, en el momento que hay una intrr y ademas, ha llegado a contar el numero de flancos necesarios para hacer el tiempo deseado, entonces sí sirves la intr..

Intercalando una variable que cuente el numero de intrr quye provoca el RTC, puedes tu mismo hacerte un prescaler, y da igual si es una intrr o son mil, con este sistema, las intrr no dejan de entrar en el micro, tu solo la sirves cuando han entrado X intrrs concretas.

Espero haberte sido de ayuda

Atentamente

Deimos

http://astroelectronica.iespana.es/
Título: Re: real time clock por interrupcion
Publicado por: paco en 26 de Julio de 2006, 09:09:03
Hola a todos,
Al hilo de lo que estais comentando sobre como hacer funcionar el DS1337 junto con un PIC, os quería hacer la siguiente consulta; Cuando se utiliza un componente de tiempo real como este DS1337, imagino que se deja alimentado y va actualizando la fecha, pero yo me pregunto ¿el PIC no es necesario que esté funcionando, verdad?, caso de que así sea, ¿como habria que dejar las señales de comunicación con el PIC?...en alta impedancia o....?????.  Imagino que si el PIC sigue funcionando le podría dar la utilidad de RTC y ahorrarme el DS1337, pero parece ser que en este sistema de funcionamiento, se debe incluir una rutina que vaya actualizando la fecha...¿estoy en lo cierto?.

Muchas gracias