Hola llego medio tarde con la respuesta, pero estoy en el mismo tema y encontre en el foro de ccs la siguiente libreria
/**************************************************************************************
* max6675.c - communicates with a MAX6675 thermcouple interface chip *
* Copyright Jimbob's Ma 2006 *
* *
* This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License *
* as published by the Free Software Foundation version 2 *
* of the License. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the Free Software *
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
**************************************************************************************/
/*
This is a diver for the MAX6675 K-type thermocouple interface chip. It implements an SPI
bus without the need for dedicated hardware (aka a bit-banged interface). The result from
toFloat_TC() is the temperature in degrees celcius of the thermocouple tip. The rest should
be self-evident. Have a look at the end of the file for example usage.
*/
#ifndef TC_CLK
#define TC_CLK PIN_B1 //edit these pins as necessary
#endif
#ifndef TC_CS
#define TC_CS PIN_B2
#endif
#ifndef TC_DATA
#define TC_DATA PIN_B3
#endif
int1 thermocouple_error; //a handy dandy global error flag to tell you if a thermocouple is connected or not
void init_TC(void)
{
output_low(TC_CLK);
output_low(TC_DATA);
output_high(TC_CS); //if we idle high, the chip keeps doing conversions. Change this if you like
}
int16 read_TC(void) //It takes 200ms (ish) for the MAX6675 to perform a conversion
{
int8 i;
int16 data;
output_low(TC_CS); //stop any conversion processes
delay_us(1); //and give it some time to power up (not very much, admittedly)
for (i=0;i<16;i++){
shift_left(&data,2,input(TC_DATA)); //reads in 2 bytes to data from the pin TC_DATA
output_high(TC_CLK);
output_low(TC_CLK);
}
thermocouple_error=bit_test(data,2); //this is the thermocouple status bit
output_high(TC_CS);
return(data);
}
int16 sortout(int16 raw)
{
return(0x0FFF & (raw>>3)); //returns only the bits converning temperature
}
float toFloat_TC(int16 tmp)
{
return((float)tmp/4.0); //adjusts data to floating point format, and accounts for the decimal point
}
float do_everything(void)
{
init_TC();
delay_ms(200); //200ms is a long time to be doing nothing. use a timer interrupt to avoid wasting time here
return(toFloat_TC(sortout(read_TC())));
}
/*
//example program
#define TC_CLK PIN_B2
#define TC_CS PIN_B2
#define TC_DATA PIN_B1
#include "max6675.c"
void main()
{
char msg[32];
delay_ms(50); //allow oscillator to stabilise
while(1){
delay_ms(800);
sprintf(msg,"%01.2f%cC\r\n",do_everything(),0xB0);
if(thermocouple_error)
printf("Thermocouple not connected\r\n");
else
printf("%s",msg);
}
}
*/
Espero te sea util siaún no la conseguiste. Un abrazo