TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Vayadespiste en 30 de Enero de 2007, 11:40:03
-
Hola ya se que me dirán que busque en el foro, pero les garantizo que he realizado varias búsquedas y no llego a encontrar lo que necesito.
Estoy con un ds1307 (son pruebas solo) y no hay forma que me funcione, estoy usando las mismas rutinas que uso normalmente para una eeprom 24c16 (probada físicamente no en simuladores) que me funciona correctamente tanto en escritura como en lectura todo con un pic 18f252. La información que encuentro en el foro casi toda se refiera al compilador de ccs que parece que lleva incorporadas las librerías de control, etc yo uso ensamblador y no llego a encontrar la secuencia correcta de funcionamiento.
Así pues la pregunta sería
¿Donde puedo encontrar información en ensamblador sobre este tema?
¿alguno puede mandarme la secuencia de lectura por ejemplo?
Me explico:
Mandar start
Mandar dirección D0
Mandar dirección lectura
recoger dato
¿me dejo algo?, ¿puedo acceder solo a los segundos?
Muchas gracias y un saludo
-
Hola ya se que me dirán que busque en el foro, pero les garantizo que he realizado varias búsquedas y no llego a encontrar lo que necesito.
Estoy con un ds1307 (son pruebas solo) y no hay forma que me funcione, estoy usando las mismas rutinas que uso normalmente para una eeprom 24c16 (probada físicamente no en simuladores) que me funciona correctamente tanto en escritura como en lectura todo con un pic 18f252. La información que encuentro en el foro casi toda se refiera al compilador de ccs que parece que lleva incorporadas las librerías de control, etc yo uso ensamblador y no llego a encontrar la secuencia correcta de funcionamiento.
Así pues la pregunta sería
¿Donde puedo encontrar información en ensamblador sobre este tema?
¿alguno puede mandarme la secuencia de lectura por ejemplo?
Me explico:
Mandar start
Mandar dirección D0
Mandar dirección lectura
recoger dato
¿me dejo algo?, ¿puedo acceder solo a los segundos?
Muchas gracias y un saludo
Creo q seria algo asi:
Mandar start
Mandar dirección D0 ;orden de escritura (para iniciar el puntero del RTC)
Mandar dirección lectura
Mandar STOP
Mandar Start
Mandar direccion D1 ;orden de lectura (Para inicar la lectura del RTC)
recoger dato
Mandar ACK o NACK ; Dependiendo si se quiere seguir recibien datos (ACK) o no (NACK)
Mantar Stop
Qtal... despues de recoger el dato tienes q enviar un acuse de recepcion ACK y en caso de de no recibir ningun otro dato tendras q enviar un NACK. y un bit de STOP...
saludos
-
Muchas gracias Astaroth_25, tomo buena nota y tan pronto pueda lo intento otra vez (soy muy lento).
Seguiré esa secuencia, lo dicho muchas gracias y un saludo.
Rodri.
-
Hace mucho trabaje con el DS1307 en ensamblador, después de mucho buscar encontré el código que utilizé, le borre todo lo que no tenía que ver con el ds1307 para no enredar mas la cosa.
Espero que te sirva
Saludos,
-
mira aveses no es el sotware es el hardware a mi me paso algo asi te digo como me funciono:
lo importante es poner a a gnd la entrada de la pila si no la utilizas luego el cristal parece que es medio sencible eso del cristal ya que en el datasheets tiene una recomendacion para hacer su placa parece que cuando tu proto esta medio sucio no funciona bien el cristal incluso algunos por ahi te dicen ponerlo lo mas cerca de sus pines y que le cortes la patas al cristal para que estas sean lo mas cortas posibles yo me canse de eso e hice un placa con las recomendaciones del datasheet y listo.
-
Gracias a ambos, dhmejia he dado un vistazo por encima al código puesto por ti y mas o menos eso es lo que buscaba solo que tendré que primero hacer funcionar tu programa para ver como funciona y adaptarlo a mi uso, pues me he fijado que define SDA Y SCL en el puerto b y yo uso el MSSP del pic que está en el puerto C, tithanae llevas algo de razon he visto ese consejo que dan en la hoja de datos del 1307 pero yo ahora mismo lo tengo montado todo sobre una protoboard y de aislar el cristal con ese trozo de CI (supongo que para evitar ruidos) no es posible de momento, de todas formas y a los Tres: "Mucha gracias por vuestra ayuda", he avanzado mucho mas con solo las ideas que me aportais y es que llevaba un tiempo enganchado si nada.
Un Saludo.
-
Sr Astaroth_25 he seguido la secuencia que me puso aqui y empieza a leer datos, en concreto 80:??, ya es algo y esoty muy contento, por lomenos voy avanzando algo.
El RTC no le he inicializado, simplemente he conectado a tensión y he realizado la secuencia de lectura, supongo que hay que inicializarlo y colocarle valores correctos para que empiece a dar valores buenos, yo pensaba que nada mas tener tensión empezaba a contar.
Bueno pues lo dicho gracias por la ayuda y un saludo
-
Te recomiendo este link: http://www.todopic.com.ar/foros/index.php?topic=13282.0 (http://www.todopic.com.ar/foros/index.php?topic=13282.0), ahi hay mucha información que deberías leer antes de continuar con el proyecto, esta en lenguaje C pero se explica muy bien el funcionamiento de este integrado.
Con respecto a tu duda, efectivamente se debe inicializar el DS1307, el bit 7 del registro de segundos (dirección 0x00h) debe fijarse en un valor (0 o 1, no recuerdo bien pero en el link esta explicado).
-
Gracias dhmejia, ya seguí ese enlace pero como tu bien comentas está todo en "C" y claro yo solo estoy liado con ensamblador, y cuando veo algo de código "C" ya me marea, por ejemplo tenía llamadas a rutinas (I2C_WRITE) que aunque no las he seguido (casi que no puedo en ese lenguaje) deben llevar ya los ack incorporados a esa llamada, cosa que con la secuencia del Sr. Astaroth_25 y pegando las viejas rutinas que tenía he conseguido que funcione (jejeje bueno no tanto). Voy como ya he comentado voy muy despacio y una vez que ya me lee ahora vamos por la segunda parte y sería que lo haga bien, he mirado en la datasheet y es tal y como dices tu dhmejia hay que poner a 0 el bit7 del registro 00, bueno será otro día pues me acabo de dar cuenta de otro problema y es que me gustaría hacer una interrupción para realizar el setup del reloj pero claro tengo en uso todo el puertob y voy a ver si encuentro (primero en este foro claro) rutinas para escribir en el LCD con 4 pines del puerto b que creo que se puede así dejar libre el portb0.
Gracias dhmejia por su tiempo y un saludo.
Rodri.