Autor Tema: Problema con INT_EXT y un DS1307  (Leído 1968 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado holk

  • PIC10
  • *
  • Mensajes: 7
Problema con INT_EXT y un DS1307
« en: 10 de Octubre de 2005, 06:56:00 »
Hola amigos,

  tengo el siguiente problema, a ver si alguien me da alguna pista, he conectado la salida SQW/OUT de un DS1307 a la entrada RB0/INT de un pic16f876 con una resistencia de pullup de 1K, el caso es que no consigo que el pic entre en la rutina de interrupcion, he comprobado que el ds1307 esta generando la señal en su pin -esta configurado a 1Hz con lo cual lo puedo ver fácilmente con un led-, aparte el programa del pic funciona correctamente, ya que si genero "a mano" la interrupcion el pic responde perfectamente -a mano, quiere decir que cojo el pin correspondiente y el paso de 5V a 0V-. He probado con y sin resistencia de pullup y hasta con pulldown -por si acaso pero se supone que necesito pullup ya que la salida del ds1307 es opendrain- pero no soluciona nada, se comporta exactamente igual. Para más información los pines RB1 a RB7 están conectados a un módulo LCD aunque esto no debería influir, además como ya he comentado la interrupción se puede generar.
  En fin, que estoy perdido y falto de ideas por donde seguir.
  Un saludo y gracias.

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
RE: Problema con INT_EXT y un DS1307
« Respuesta #1 en: 10 de Octubre de 2005, 07:08:00 »
pon el código para intentar localizar el fallo RollEyes

Desconectado holk

  • PIC10
  • *
  • Mensajes: 7
RE: Problema con INT_EXT y un DS1307
« Respuesta #2 en: 10 de Octubre de 2005, 07:48:00 »
Hola,

   perdón, olvide adjuntar los archivos, por ahora sólo son pruebas así que seguro que el código se puede mejorar bastante.
   dejo el código en estos enlaces ya que el sistema del foro me dice que no hay espacio disponible para subir los adjuntos Enfurruñado

   http://www.josecarlos.org/temp/datalogger.c
   http://www.josecarlos.org/temp/datalogger.h

   Gracias.      

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
RE: Problema con INT_EXT y un DS1307
« Respuesta #3 en: 10 de Octubre de 2005, 08:13:00 »
creo q el problema lo tienes aquí:

#int_EXT
EXT_isr()
{
   ahora=1;
}

eso es lo q está haciendo tu interrupción.. es decir, se limita a poner ahora a 1.

Por otro lado sería mejor (creo) ponerlo de esta forma:
#int_EXT1  q es el q corresponde a rb0/int

Desconectado holk

  • PIC10
  • *
  • Mensajes: 7
RE: Problema con INT_EXT y un DS1307
« Respuesta #4 en: 10 de Octubre de 2005, 08:40:00 »
  Efectivamente, la interrupcion lo único que realiza es poner la variable ahora a 1, esta variable se utiliza como "disparador" del procedimiento void interrupcion(); y se chequea en el while(TRUE){...} de la función main();
  Según el manual de CCS se debe usar #int_EXT para rb0/int, si miras el fichero 16f876.h viene definida así "#define INT_EXT                   0x0B10", además si genero la interrupción con un pulsador, por ejemplo, si que funciona, actualiza la hora perfectamente en la pantalla, el problema viene cuando quiero que sea la salida SQW del ds1307 la que genere la interrupción.
  De todas formas he probado a usar #int_EXT1 y el compilador me genera un error del preprocesador.

  Gracias. Un saludo.

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
RE: Problema con INT_EXT y un DS1307
« Respuesta #5 en: 10 de Octubre de 2005, 10:57:00 »
Perdona, tienes toooda la razon EXT1 es para RB1 ... ains!

respecto a tu problema... lo único q se me ocurre esq declares ahora como statico para q no se machaque su valor en la ram con otras operaciones...

static int1 ahora=FALSE;

#int_EXT
EXT_isr()
{
   ahora=1;
}

sino es eso realemente no encuentro el problema :S

saludos

Desconectado Duende_Azul

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 902
RE: Problema con INT_EXT y un DS1307
« Respuesta #6 en: 10 de Octubre de 2005, 23:03:00 »
Pon la resistencia de 10K

Desconectado El_Coach

  • PIC12
  • **
  • Mensajes: 79
RE: Problema con INT_EXT y un DS1307
« Respuesta #7 en: 11 de Octubre de 2005, 06:00:00 »
Hola, yo tengo funcionando un RTC con todo igual que tu, es un DS1337, la unica diferencia es, como dice un compañero en el anterior post, que la resistencia de pull-up de la alarma la tengo de 10K, aunque no se hasta que punto puede influir el valor de dicha resistencia. Que yo sepa la resistencia se pone para polarizar la entrada siempre a positivo, pero el valor de la resistencia lo unico que creo que limita es la corriente, para que nunca se pueda producir un cierre. Ojalá el cambio de valor a 10k resuelva tu problema...

Un saludo Giño
"Hazlo o no lo hagas, pero nunca lo intentes"