Autor Tema: Ayuda con DS1621  (Leído 6010 veces)

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

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Ayuda con DS1621
« Respuesta #15 en: 28 de Octubre de 2003, 22:47:00 »
La opción force_hw no la he visto en el manual, pero sí la NOFORCE_SW (Use hardware I2C functions) que en teoría debe de hacer lo mismo (no forzar sofware <--> forzar hardware). Prueba así, a ver.

Un saludo

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: Ayuda con DS1621
« Respuesta #16 en: 29 de Octubre de 2003, 09:39:00 »
Si, también probé como tu comentas y noforce_hw. Ahora he probado en el programa primero que me hice y me funciona. Pero en uno más largo que estamos realizando no??? raro...
Otra cosa, me es imposible escribir sobre el registro config, TH y TL.
Por ejemplo, escriba lo que escriba en config simpre al leer me devuelve 139 (quiero recordar).
Como no me fio mucho de la dll, estamos esperando que nos lleguen los componentes para probarlo físicamente. Ya os contaré.... Ni que decir tiene que si alguien es capaz de escribir correctamente y al simular en proteus le sale lo que debe que me lo comente... ok!!

Una cosa que no me queda clara es la precisión que tiene el DS1631. El DS1621 dice que tiene una precisión de 0.5ºC y si te fijas en los registros de la temperatura tienes 8bytes para la la parte entera con signo, y 1bit de otro byte (el 7 en concreto) para indicar si es x.5º (pag4 datasheet). Me van entendiendo???. Pues bien, el DS1631 dice al principio que tiene una precisión de 0.5ºC también, pero si nos fijamos, ahora el 2ºbyte, no sólo genera ese 7º bit, sino que genera los 4bit altos. Y en la tabla (pag7 datasheet) donde vienen los ejemplos vemos temperaturas como +25.0625, vamos que tengo una resolución de 0.0625.
Que opinan??

Saludos!!
Saludos desde Huelva (ESPAÑA)

Desconectado litris

  • PIC16
  • ***
  • Mensajes: 226
RE: Ayuda con DS1621
« Respuesta #17 en: 27 de Noviembre de 2003, 05:51:00 »
¿Que version as usado de proteus?por que al cargar me da un error de version en la 6 sp1 y en la 5.20.07.

Saludos.

Ya!!! he instalado la 6.2 sp4 y ahora si funciona

Desconectado Blanca Sánchez

  • PIC16
  • ***
  • Mensajes: 108
    • PicsMexico: Programación con Microcontroladores
Re: Ayuda con DS1621
« Respuesta #18 en: 14 de Mayo de 2007, 02:28:49 »
hola, que tal:

Yo también estoy trabajando con el DS1621 pero he tenido muchas dificultades para poder realizar la comunicación I2C. He revisado otros ejemplos que no incluyen el DS1621, pero si hablan de la comunicación I2C. Es inútil que envíe un comando sensor pues no me envía el ACK (donde el esclavo reconoce su dirección y la operación a realizar sobre él R/W'). Se que tiene mucho tiempo que se escribió en este mensaje pero quisiera saber si puedes subir tu programa nuevamente, pues veo que ya no está.

He visto que tu programa está en CCS... Yo programo en C18 y por tanto no pienso "fusilarme" tu programa, pues yo también quiero entender como funciona a detalle este protocolo de comunicaciones pues quiero implementarlo en memorias y otros dispositivos. De hecho, he estado programando en ensamblador para verificar algunos programas que hay en estos foros, pues en ensamblador habilitas "bit a bit", mientras que en C18 sólo escribes una instrucción y desconoces como funciona a detalle el programa.

Muchas gracias de antemano..

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Ayuda con DS1621
« Respuesta #19 en: 15 de Mayo de 2007, 05:39:36 »
En C18 también se escribe bit a bit....

Suerte!!! ;)
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado c4_esp_VR

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
    • www.muchotrasto.com
Re: Ayuda con DS1621
« Respuesta #20 en: 05 de Junio de 2009, 04:46:11 »
Hola compañeros:

Por no escribir un nuevo hilo empiezo en este ya que está relacionado.

Estoy intentando simular el DS1621 con el proteus pero no funciona ni para atrás y no sé porqué, ya que es relativamente sencillo.

Os dejo el circuito del Proteus y el código del PIC que es muy fácil de ver, el ejemplo es el mismo o muy similar al que se puede encontrar en el compilador. Llevo un día entero dándole y nada...que no lo consigo.  :( :( :(

Código: [Seleccionar]
#include <18F4550.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=12000000)
#use rs232(baud=19200, xmit=PIN_C6, rcv=PIN_C7, stream=PC)

#define RESET_BUTTON    PIN_E2
#include <DS1621.c>

int current_temp, max_temp, min_temp;

void reset_temp()  {

   current_temp = read_temp();
   min_temp=current_temp;
   max_temp=current_temp;
}

void main(void) {

   printf("Hola mundo\r\n");
   init_temp();
   delay_ms(6);

   reset_temp();
   
   while(true)
   {   
    current_temp = read_temp();

   if(input(RESET_BUTTON)==0)
      reset_temp();
   else if(current_temp>max_temp)
      max_temp=current_temp;
   else if(current_temp<min_temp)
      min_temp=current_temp;

   printf("\fCurrent Temp: %U F\nMin: %U Max: %U\r\n",current_temp,min_temp,max_temp);
   delay_ms(1000);     
   }
}

Muchas gracias compañeros foreros.

Desconectado c4_esp_VR

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
    • www.muchotrasto.com
Re: Ayuda con DS1621
« Respuesta #21 en: 05 de Junio de 2009, 04:52:31 »
Bueno ya está solucionado...que le vamos a hacer...me faltaban las resistencias de pull-up  en la comunicación I2C :D :D :D

Muchas gracias por todo compañeros

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Ayuda con DS1621
« Respuesta #22 en: 05 de Junio de 2009, 06:14:00 »
Jeje, ya puedes tachar ese error de la lista "Errores que todo el mundo comete y te hacen perder un tiempo precioso".

Al menos te servirá como a mí, para que jamás se te vuelva a olvidar.

Desconectado c4_esp_VR

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
    • www.muchotrasto.com
Re: Ayuda con DS1621
« Respuesta #23 en: 05 de Junio de 2009, 06:21:00 »
Citar
Jeje, ya puedes tachar ese error de la lista "Errores que todo el mundo comete y te hacen perder un tiempo precioso".
Al menos te servirá como a mí, para que jamás se te vuelva a olvidar.

Desde luego que no se me vuelve a olvidar  :D :D :D

Por si a alguien como yo se le olvida y ve este link las resitencia de pull up para I2C se recomiendan poner entre 1k8 y 4k7  :mrgreen: :mrgreen: :mrgreen:

Un saludete a todos.

Desconectado linus101

  • PIC10
  • *
  • Mensajes: 8
Re: Ayuda con DS1621
« Respuesta #24 en: 12 de Agosto de 2010, 10:56:12 »
Buenas,

Estoy intentando programar un DS1621 con CCS y no hay manera...

He usado como base el ejemplo que lleva proteus, y no sé dónde puede estar el error.

Lo he montado con un 16F88. Mis conexiones del DS1621 son:

pin 1- al B1 del pic
pin 2- al B0 del pic
pin 8- Vdd
resto de pines a masa

El código en C es este:

#include <16F88.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT - afecta al A6
#FUSES NOPUT                    //No Power Up Timer *
#FUSES NOMCLR                   //Master Clear pin enabled - afecta al A5
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOFCMEN                  //Fail-safe clock monitor disabled
#FUSES NOIESO                   //Internal External Switch Over mode disabled
#FUSES CCPB3

#use delay(clock=8000000)
#include "lcd_refrigerador.c"

#define DAL_SCL   PIN_B0
#define DAL_SDA   PIN_B1

#include <ds1621.c>

void main() {
   signed long value;
   lcd_init();
   delay_ms(1000);

  lcd_putc("\f");
      printf(lcd_putc,"preparando");
      delay_ms(1000);
   init_temp();
   delay_ms(1000);
   
  do {
      value = read_high_temp();
    delay_ms(1500);
     lcd_putc("\f");
      printf(lcd_putc,"%Ld",value);
      delay_ms(1000);
   } while (TRUE);
}




Lo único que obtengo es que el LCD muestra "preparando"... y ahí se queda bloqueado.  ¿Alguna idea?

Gracias.

Desconectado linus101

  • PIC10
  • *
  • Mensajes: 8
Re: Ayuda con DS1621
« Respuesta #25 en: 14 de Agosto de 2010, 07:15:01 »
Arreglado,

No había colocado las resistencias pull-up en SCL y SDA.

Perdonad mi ignorancia...


 

anything