TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: mos en 19 de Agosto de 2006, 15:06:33

Título: ayuda con sensor temperatura DS-1621 (I2C)
Publicado por: mos en 19 de Agosto de 2006, 15:06:33
Necesito un programita super sencillo en asembler para poder leer la temperatura de este chip, lo estoy intentando y no consigo nada, y con el datasheet no me entero de na, un saludo. :P
Título: Re: ayuda con sensor temperatura DS-1621 (I2C)
Publicado por: vszener en 19 de Agosto de 2006, 15:21:35
En el google puedes encontrar varias librerias para este dispositivo, aqui te dejo un link donde puedes encontrar una de ellas (http://users.swing.be/fg/pic/#DS1621).


Suerte!!! :wink:
Título: Re: ayuda con sensor temperatura DS-1621 (I2C)
Publicado por: Nocturno en 19 de Agosto de 2006, 15:54:01
¿Qué ha pasado con el otro post en el que preguntabas lo mismo y yo te había contestado?, ¿lo has borrado Mos?
Título: Re: ayuda con sensor temperatura DS-1621 (I2C)
Publicado por: mos en 19 de Agosto de 2006, 16:43:01
No encuentro nada para hacerlo funcionar, y ya he probado de todo, no se en que me equivoco, el caso es que en la misma linea utilizo un reloj PCF8583 (I2C), lo que hago es esto: 

1- mando direccion del dispositivo (10010000)
2-genero ACK
3-mando direccion del registro configuracion (AC)
4- genero ACK y mando (00000010) para modo continuo
5-ACK y parada

luego esto para leer la temperatura:
1- mando direccion del dispositivo (10010000)
2-ACK  y direccion a leer (AA)
3- repito direccion  en modo lectura ya (10010001)
4-ACK y recibo byte , otro ACD y otro byte
5- genero NACK y stop
esto parece simple , pero luego no funciona, no se que mas pruebas puedo hacer ni donde me estoy equivocando. :(
Título: Re: ayuda con sensor temperatura DS-1621 (I2C)
Publicado por: BrunoF en 19 de Agosto de 2006, 19:20:03
Hola.
 
para escribir:

1- Envias START
2- mandas direccion del dispositivo (10010000)
3-esperas ACK del DS1621
4-mandas direccion del registro configuracion (AC)
5-Esperas ACK del DS1621 y mandas (00000010) para modo continuo
6- Esperas ACK del DS1621 y STOP

luego esto para leer la temperatura:

1- Envias START y luego mandas direccion del dispositivo (10010000)
2-Esperas ACK del DS1621 y envias direccion a leer (AA)
3- Esperas ACK, envias RESTART y luego repites direccion  en modo lectura ya (10010001)
4- Esperas ACK y recibes byte , generas ACK y recibes otro byte
5- generas NACK y STOP

Asegurate que los pines A0,A1 y A2 del DS1621 esten conectados a masa.
¿En que lenguaje estas programando?

Saludos.
Título: Re: ayuda con sensor temperatura DS-1621 (I2C)
Publicado por: mos en 20 de Agosto de 2006, 04:59:39
;----------------------------------------------------------------------------
       call      Send_Start   ;Envía secuencia de inicio
       movlw   b'10010000'   ;Modo escritura
       call      Send_Byte   ;Dirección del dispositivo DS-1621
   
       movlw   b'10101100'     ;registro configuracion AC
       call      Send_Byte   ;
       
       movlw   b'00000010'
       call      Send_Byte   ;byte para modo continuo
       
       call      Send_Stop
;__________________________________________________________
       

Loop      
     call     Send_Start   ;Envía secuencia de inicio
     movlw     b'10010000'   ;Modo escritura
     call     Send_Byte   ;Dirección del dispositivo
   
     movlw     b'10101010'
     call     Send_Byte   ;Dirección interna a leer (tempera AA)
       
;
     call     Send_Start   ;Envía secuencia de inicio
     movlw     b'10010001'   ;Modo lectura
     call     Send_Byte   ;Dirección del dispositivo
          
     bcf     ACK,0            ;Enviar ACK tras la lectura del byte
     call     Read_Byte   ;Lee el byte de temperatura bajo (byte_L)
     movwf     tempturaL
;               
     bsf     ACK,0      ;Enviar NACK trás la lectura del byte
     call     Read_Byte           ;Lee el byte de  temperatura alta (bite_H)
     movwf    tempturaH
                                       
      call     Send_Stop           ;Envía secuencia de Stop
;      
;               
      movfw   tempturaL
      movwf   Byte_L
      movfw   tempturaH
      movwf   Byte_H
      call        Bits16_BCD
      call      Visualizar_0
      goto      Loop
;
el pic que utilizo es 16f876 y se me sigue resistiendo a funcionar, parece que me odia el chip , vamos, he revisado todos los pasos y nada, lo que es visualizacion y conversion a bcd que es la parte final del programa si me funciona. Gracias compañeros. :P