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.
#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();
}
}