Autor Tema: Ayuda a programar en hora un pic  (Leído 4259 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado crip

  • PIC10
  • *
  • Mensajes: 6
Ayuda a programar en hora un pic
« en: 17 de Febrero de 2009, 09:09:04 »
Hola a todos!!!

Estoy trabajando en un proyecto, y es que me he atorado. Estoy haciendo un dispositivo con el pic18f2550 y me gustaría que tras desconectarlo del ordenador, el dispositivo funcione con su propia autonomia, es decir que desde el ordenador se le pueda programar y que al desconectarlo y llegar la hora programada funcione y realice la tarea que tiene que realizar. Se como puedo pasarle la hora y la fecha, pero no se como en el pic inicio la cuenta o que funciones puedo utilizar para que desde el momento que recibe la hora y fecha el empiece la cuenta segundo a segundo... No sé si quedará del todo claro el motivo de mi consulta, pero gracias a todos de todas formas!!!

Gracias y un saludo

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Ayuda a programar en hora un pic
« Respuesta #1 en: 17 de Febrero de 2009, 10:31:53 »
No , la verdad que no muy claro.  :?

Explícate un poco mejor , porfa
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado crip

  • PIC10
  • *
  • Mensajes: 6
Re: Ayuda a programar en hora un pic
« Respuesta #2 en: 17 de Febrero de 2009, 10:53:25 »
jajajajaja. Lo siento muxo por no explicarme bien!!

A ver si ahora lo consigo... Bueno la historia es que estoy con el proyecto final de carrera, donde estoy adaptando el protocolo DMX a la domotica. Ya he conseguido comunicarme con el pic, es decir, recibir la tramas del DMX e interpretarlas. Ahora lo que quiero hacer es poder realizar un programación horaria, es decir, que el usuario desde el ordenador tenga la posibilidad de programar el encendido de las luces de la casa, o que se levanten las persianas o cosas de este tipo, a una cierta hora. He pensado obtener la hora y fecha del ordenador y pasarsela al pic por medio de varios canales de los que dispone el protocolo, pues que este se basa en la trasmision de 510 canales que tendrán un valor entre 0 y 255 (esto es explicado a grandes rasgos). Ahora bien, yo recibo la hora, minutos y segundos en el pic, asi como la hora, minutos y segundos a los que tiene que empezar su funcionamiento y que es lo que tengo que hacer para que este, desconectandolo del ordenador, funcione a la hora que el usuario a indicado? hay funciones para tratar eso? es decir, el delay_ms() serviría? o como lo tendría que hacer para que el pic almacene la hora y sepa cuanto tiene que esperar para comenzar su funcionamiento?.

Espero que ahora si...

Muxas Gracias!! Un saludo

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 627
Re: Ayuda a programar en hora un pic
« Respuesta #3 en: 17 de Febrero de 2009, 11:23:01 »
Podrias usar un RTC para que te controle el tiempo, o implementar un contador de horas, minutos y  segundos en el PIC, creo haber visto una hoja de aplicacion de Microchip sobre esto ultimo.

Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Ayuda a programar en hora un pic
« Respuesta #4 en: 17 de Febrero de 2009, 11:53:52 »
Si trabajas en assembler, yo he subido un código de ejemplo para usar un DS1305 (SPI) y otro ejemplo con un DS1302 (i2C) que son integrados relojes de tiempo real.
También he subido una rutina que usando el TMR0 puedes obtener un segundo con mucha precisión y así luego cuentas hasta 60 para 1 minutos, hasta 60 minutos para una hora, etc etc.
 Mira cual de los métodos te conviene más.

Los ejemplos están en Almacén del assembler. Si buscas por el autor (Pibe) lo encuentras enseguida.
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado crip

  • PIC10
  • *
  • Mensajes: 6
Re: Ayuda a programar en hora un pic
« Respuesta #5 en: 17 de Febrero de 2009, 13:51:11 »
Muxas Gracias a los dos por contestarme y sobre todo tan con tanta brevedad!!!. Pibe muxas gracias por tus aportaciones pero no trabajo en assembler porque en la universidad me enseñaron C y ahora me resulta muxo más fácil programar los pics en este lenguaje...

Y sander si me pudiese pasar donde puedo ver la hoja de aplicación, lo podré encontrar en Microchip?

Gracias. Un saludo!!

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 627
Re: Ayuda a programar en hora un pic
« Respuesta #6 en: 17 de Febrero de 2009, 15:54:50 »
Hola crip , la hoja de aplicacion la puedes encontrar en Microchip , aunque aqui te paso el Link

Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Ayuda a programar en hora un pic
« Respuesta #7 en: 24 de Febrero de 2009, 03:00:53 »
Hola.

Pues si la precision en los valores del tiempo es critico, deberias usar un RTC ( :mrgreen: el DS1302 es 3-wire, no I2C  :mrgreen:), pero si no lo es, la idea de pibe es buena y se puede usar el TIMER0 para el conteo de las variables.
El papel lo aguanta todo

Desconectado crip

  • PIC10
  • *
  • Mensajes: 6
Re: Ayuda a programar en hora un pic
« Respuesta #8 en: 24 de Febrero de 2009, 20:54:02 »
Buenas de Nuevo!!!

MLO_ , si la cuestión del tiempo es crítico, porque sería simular un reloj real. He leído por ahí lo del DS1302, ¿me podrías indicar como funciona y que necesito para acoplarlo? Es que como en la página de maxim te dejan pedir algunos samplers, pues me aventure a pedirlos y estoy pendientes de recibirlos. Por que una pregunta: ¿Al utilizar la interrupción int_rda(), podría utilizar I2C a la vez?. Tengo que decir que con DMX recibo tramas continuamente y por lo tanto salta la interrupcion int_rda(), y no se como deshabilitarla para que no salte más y asi poder hacer otras cosas y es que con el disable_interrupts() no tiene muxo resultado. Y ya que estamos con las preguntas, me permitis otra mas: ¿Cuando salta la interrupción, int_rda(), cuando vuelve al programa pricipal, que valores toman las variables definidas en él, las que tenia al saltar la interrupción o las iniciales? es que no se donde esta el punto de retorno de la interrupción, porque tengo una estructura con varias variables a las que las doy un valor en el main, al inicio, cuando avanza en el main, esas variables cambian, pero cuando salta la interrupción y retorna al main, creo que las variables toman los valores iniciales, por lo que mi pregunta sería: ¿Cuando salta la interrupción, las variables toman el valor inicial o no?

Bueno muxas gracias a todos!!!
Un saludo!!!

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Ayuda a programar en hora un pic
« Respuesta #9 en: 24 de Febrero de 2009, 23:35:16 »
Hola.

El DS1302 usa un protocolo denominado 3-wire, el cual se basa en 3 lineas: una de habilitacion del chip, otra la del reloj (es un protocolo sincrono) y la otra para la entrada y salida de datos. El uso es muy simple. Otra opcion, si quieres usar el I2C, es el DS1307.

La interrupcion RDA salta cada vez que llega un byte al buffer de recepcion serial del PIC, el programa principal se interrumpe y hace   lo que esta programado en la interrupcion, normalmente no toma mucho tiempo (por eso la recomendacion de no colocar mucho codigo en las interrupciones), y luego vuelve a donde estaba en el programa principal (cuando el lenguaje de programacion es C). Cada vez que entra a la interrupcion se actualizan las variables que estan en definidas en la interrupcion, como la interrupcion es asincrona, no se le ponen argumentos al llamado de la funcion de la interrupcion (void inter (void)).

Si te cambian las variables del programa principal (o se reinician) es porque de pronto estas usando las vaiables en la interrupcion (habria que revisar el codigo).

Saludos
El papel lo aguanta todo


 

anything