Autor Tema: Ayuda con un MAX6675  (Leído 2318 veces)

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

Desconectado alluzin

  • PIC10
  • *
  • Mensajes: 21
Ayuda con un MAX6675
« en: 21 de Abril de 2011, 00:24:48 »
hola a todos!!
 Estoy tratando de hacer un termómetro  digital  utilizando un termopar, un  max6675 y el pic18f4550. La comunicación entre  el  max y el pic  la hago por  SPI por  hardware. Como  he leído la  comunicación por spi por  hardware se transmite en  8 bits  y el max  manda  al pic la información  de la temperatura en  16bits, por lo tanto   capturo  dos veces en  8 bits (sin  hacerle  tratamiento  a  estos  datos)  pero el problema es que en la simulación con proteus me funciona muy bien, pero ya físicamente en el display las  dos variables en las que están los  16bits me  da  cero en  ambas  (aun  exponiendo  la punta del  termopar al calor).
La verdad   soy  nuevo  programando    pics y pues  quisiera  que  me  ayudaran   revisando  mi   programa que  utilizo  para ver si detectan algún  error  ya que  llevo ya  mucho tiempo tratando  de  resolver este problema pero  no he podido. Les expongo mi   programa y la captura de las señales del max y  el pic  de proteus. De ante mano muchas gracias  a todos.

Código: [Seleccionar]
#INCLUDE <18F4550.h>
#device adc=10
#use delay(clock=4000000)
#fuses  XT,NOWDT,HS,NOPROTECT
#include <lcd.c>
//#use SPI(FORCE_HW,MODE=1,STREAM=spi_stream,ENABLE=pin_C7,BITS=16)
#use SPI(master,FORCE_HW, BITS=16, stream=SPI_STREAM, ENABLE=pin_B5)
#use standard_io(B)
#use standard_io(c)
#BYTE TRISB=0x86
int valor;
int aux;

void lec(void)
{
   
   delay_ms(200);
   output_low(PIN_B5);
   valor =spi_read(0);
   aux =spi_read(0);
   output_high(PIN_B5);
   
}

void display()
{

lcd_gotoxy(1,1);
printf(lcd_putc, "cad1= %u\n", valor); // imprecion de la primer cadena con los primeros  8 bits
printf(lcd_putc, "cad2= %u", aux);     //imprecion de la segunda  cadena con los  bits restantes

}


void main()
{
   
   lcd_init();
   trisb=0b10000000;
   while(1)
   {
      output_high(PIN_B5);
      lec();
      display();
                                                                                                                                                                           
   }
}





 

anything