Autor Tema: Sensor de temperatura DS1631 con i2c para microcontrolador PIC16F887  (Leído 1960 veces)

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

Desconectado dek018

  • PIC10
  • *
  • Mensajes: 1
Buenas noches, lo que pasa es que tengo que usar un sensor digital (DS1621) para pasar el dato de la temperatura a una PIC16F887 en C, y no sé cómo funcione para mandar los datos: si tengo que usar alguna dirección de EEPROM y cómo acceder a ella desde el código (y también si tengo que almacenar la temperatura del sensor en la EEPROM del mismo ni cómo hacerlo). Ando medio perdido y me gustaría que me ayudaran un poco sobre cómo "recibir" el dato del sensor hacia la PIC. La parte de código que llevo es esta (pero creo que esto es sólo para configurar i2c y no escribe nada, en el main no tengo nada aún:

#include "16f887.h"
#device adc=10
#fuses XT,NOWDT
#use delay(clock=4000000)
#use i2c(MASTER,SDA=PIN_C4,SCL=PIN_C3)
#include <math.h>                //Necesaria para los cálculos matemáticos
#include <lcd.c>
#define I2C_DS1631 0x92 /* Direccion base para Ds1631 1001 y resto a cero E2 E1 E0 = 0 0 0 */

void write_ext_eeprom(long int address,BYTE data)
   {
      short int status;
      i2c_start();
      i2c_write(0xa0);
      i2c_write(address>>8);
      i2c_write(address);
      i2c_write(data);
      i2c_stop();
      i2c_start();
      status=i2c_write(0x0a);
     
      while(status==1)
      {
         i2c_start();
         status=i2c_write(0x0a);
      }
   }
   
BYTE read_ext_eeprom(long int address)
   {
      BYTE data;
      i2c_start();
      i2c_write(0xa0);
      i2c_write(address>>8);
      i2c_start();
      i2c_write(0xa1);
      data=i2c_read(0);
      i2c_stop();
      return(data);
   }

En otro proyecto usé un sensor a analógico de temperatura, y para leerla fue  muy sencillo, simplemente utilicé: value = Read_ADC(); Para este sensor digital (utilizando i2c), cuál sería el "equivalente"? Saludos y gracias... :)

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Sensor de temperatura DS1631 con i2c para microcontrolador PIC16F887
« Respuesta #1 en: 14 de Mayo de 2014, 08:26:08 »
Porque no usas las librerias del ds1631 que trae CCS ??
Buscala en Picc > drivers > ds1631.c

Ademas hay una libreria para uso de la memoria eeprom interna que se llama internal_eeprom.c, creo que si usas las librerias ahorras tiempo de desarrollo, ya que estan probadas en cientos de aplicaciones.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.


 

anything