Se coloca un programa realizado con MikroC DSPIC
El mismo está probado, solo falta adecuarla al valor real de la temperatura mediante la función
de transferencia dada por la relación 10 mV/C
/*
* Project name:
Temperatura
* Target Platform:
dsPIC;
* Copyright:
Carlos CANAL
* Revision History:
20061103:
- Initial release;
* Description:
Visualizar en forma cruda en el LCD del Modulo DSPICDem1 una
temperatura analógica mediante la lectura del integrado TC1047A.
El cual se encuentra conectado a la entrada analogica AN8 (RB8)
El cual tiene una relación de 10 mV/C. A 25 Cº entrega 750mV.
* Test configuration:
MCU: dsPIC30F6014
Dev.Board: dsPICDem1
Oscillator: External, 7.3728 MHz
Ext. Modules:
Notas:
*/
// #include <built_in.h>
int i ;
unsigned int adcRes, adcRes1;
const char msg[] = "Temperatura placa";
//-------------- Interrupt routine
void main() {
char txt[5];
ADPCFG = 0xFEFF; //RB8 Entrada analógica
// Con cero se selecciona una entrada anlógica
PORTB = 0x0000;
TRISB = 0xFFFF;
TRISG = 0xFCBF; //SDI Entrada, SDO, SCL y SS Salida //all inputs - needed for ADC to work
PORTD = 0;
TRISD = 0;
LATGbits.latG9 = 1; //Subo lalinea SS
Delay_ms(500); //Espero 500 mseg para empezar a configurar el LCD
Spi2_Init_Advanced(_SPI_MASTER, _SPI_8_BIT, _SPI_PRESCALE_PRI_1, _SPI_PRESCALE_SEC_1, _SPI_SS_DISABLE, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_ACTIVE_2_IDLE);
//Inicializo el SPI2 del 30F6014
Delay_1sec; //Espero 1 seg
LATGbits.latG9 = 0; //Bajo la linea SS
Spi2_Write(0x80);
Spi2_Write(0x82);
LATGbits.latG9 = 1;
while (1){
adcRes = Adc_Read(

; //Leo la entrada analogica AN8
WordToStr(adcRes, txt); //
LATGbits.latG9 = 0;
Spi2_Write(0xC5); //Direcciono Fila 1 columna 1
Spi2_Write(0x01);
Spi2_Write(0x01);
for (i = 0; i <= 17; i++) { //Escribo el mensaje
Spi2_Write(0xA8);
Spi2_Write(msg
);
}
Spi2_Write(0xC5); //Direcciono Fila 3 columna 2
Spi2_Write(0x03);
Spi2_Write(0x02);
for (i = 0; i <= 5; i++) { //Escribo la temperatura
Spi2_Write(0xA8);
Spi2_Write(txt);
}
LATGbits.latG9 = 1;
Delay_1sec; //Espero 1 seg
}
}//~!