Code:
void Read_Volt_Temp()
{
volatile long value;
int results[3];
unsigned char degC;
// Temp Sensor ben trong uC
ADC10CTL1 = INCH_10 + ADC10DIV_3; // Temp Sensor ADC10CLK/4
ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE;
for( degC = 240; degC > 0; degC-- ); // delay to allow reference to settle
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
__bis_SR_register(CPUOFF + GIE); // LPM0 with interrupts enabled
results[0] = ADC10MEM;
ADC10CTL0 &= ~ENC;
// Volt-meter
ADC10CTL1 = INCH_6; // ADC ->> volt-meter
ADC10CTL0 =SREF_1|ADC10SHT_2|REFON|ADC10ON|ADC10IE|ADC10SR|REFBURST;
for( degC = 240; degC > 0; degC-- ); // delay to allow reference to settle
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
__bis_SR_register(CPUOFF + GIE); // LPM0 with interrupts enabled
results[1] = ADC10MEM;
ADC10CTL0 &= ~ENC;
// Temp Sensor ben ngoai uC (lm35) kenh A7
ADC10CTL1 = INCH_7; // ADC ->> volt-meter
ADC10CTL0 = SREF_1 + ADC10SHT_2 + REFON + ADC10ON + ADC10IE;
for( degC = 240; degC > 0; degC-- ); // delay to allow reference to settle
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
__bis_SR_register(CPUOFF + GIE); // LPM0 with interrupts enabled
results[2] = ADC10MEM;
ADC10CTL0 &= ~ENC;
ADC10CTL0 &= ~(REFON + ADC10ON); // turn off A/D to save power
//============================================================================
//============================================================================
// Xu ly ket qua Temp Sensor ben trong uC
value = results[0];
degC_uC = ((value - 673) * 423) / 1024;
// Xu ly ket qua dien ap
value = results[1];
//volt = (value*25)/512;
// Hien thi du lieu dien ap
volt= (int)((value*quantum)*1000);
//__no_operation();
// Xu ly ket qua lm35
value = results[2];
degC_lm35 = (float)(value/6.8);
}
Anh cho em hỏi làm sao để config để đọc nhiệt độ bằng cảm biến nhiệt bên trong MCU được vậy anh????
Chỗ thanh ghi ADC10AE0
mình phải config sao anh???
ADC10AE0 |= ??? ;(Thanh ghi này có 8 bit ah, trong khi Cảm biến nhiệt bên trong MCU là kênh 10??)