Temperature Sensor Functions. More...
Functions | |
| void | get_cal_values (void) |
| Read OSC Calibration Values. | |
| void | calibrate_inter_osc (enum vcc v) |
| Calibrate the internal OSC. | |
| S16 | read_temp_sensor (void) |
| Read and return temperature from internal temperature sensor. | |
| U16 | get_temp_sensor_val (void) |
| Read and return internal temperature sensor ADC channel. | |
Temperature Sensor Functions.
| void get_cal_values | ( | void | ) |
Read OSC Calibration Values.
Read OSC Calibration Values.
Definition at line 77 of file cal_inter_rc.c.
References flash_read_sig(), n_step, offset, osc_cal_25_3v, osc_cal_25_5v, osc_cal_85_3v, period, temp_sensor_25, and temp_sensor_85.
Referenced by calibrate_inter_osc().
{
U8 temp_sensor_25_lo;
U8 temp_sensor_25_hi;
U8 temp_sensor_85_lo;
U8 temp_sensor_85_hi;
osc_cal_25_3v = flash_read_sig(0x01);
osc_cal_85_3v = flash_read_sig(0x03);
osc_cal_25_5v = flash_read_sig(0x05);
temp_sensor_25_lo = flash_read_sig(0x38);
temp_sensor_25_hi = flash_read_sig(0x39);
temp_sensor_85_lo = flash_read_sig(0x3A);
temp_sensor_85_hi = flash_read_sig(0x3B);
temp_sensor_25 = (temp_sensor_25_hi << 8) + temp_sensor_25_lo;
temp_sensor_85 = (temp_sensor_85_hi << 8) + temp_sensor_85_lo;
offset = (osc_cal_25_5v) - (osc_cal_25_3v);
n_step = osc_cal_25_3v - osc_cal_85_3v;
period = (temp_sensor_85 - temp_sensor_25)/n_step;
}


| void calibrate_inter_osc | ( | enum vcc | v ) |
Calibrate the internal OSC.
Calibrate the internal OSC.
| enum | vcc: vcc_5 or vcc_3 |
Definition at line 101 of file cal_inter_rc.c.
References get_cal_values(), get_temp_sensor_val(), offset, osc_cal_25_3v, osc_cal_85_3v, period, temp_sensor_25, temp_sensor_85, temp_value, and vcc_3.
Referenced by main(), and update_osc_cal_task().
{
U8 osc_cal;
get_cal_values();
osc_cal = osc_cal_25_3v;
temp_value = get_temp_sensor_val();
if(temp_value < temp_sensor_25)
{
for (U16 t = temp_sensor_25; t>0; t-=period)
{
osc_cal++;
if(t<temp_value)
break;
}
}
else if(temp_value >= temp_sensor_85)
osc_cal = osc_cal_85_3v;
else if(temp_value > temp_sensor_25)
{ for (U16 t = temp_sensor_25; t<temp_sensor_85; t+=(2*period))
{
osc_cal--;
if(t>temp_value)
break;
}
}
if(vcc_3)
{
OSCCAL = osc_cal;
}
else OSCCAL = osc_cal + offset;
}


| S16 read_temp_sensor | ( | void | ) |
Read and return temperature from internal temperature sensor.
Definition at line 63 of file temp_sensor.c.
References get_temp_sensor_val().
{
get_temp_sensor_val();
#warning TODO....
return 1;
}

| U16 get_temp_sensor_val | ( | void | ) |
Read and return internal temperature sensor ADC channel.
Definition at line 72 of file temp_sensor.c.
References ADC_TEMP_SENSOR_CHANNEL, Is_adc_conv_finished, and Start_conv_channel.
Referenced by calibrate_inter_osc(), and read_temp_sensor().
{
Start_conv_channel(ADC_TEMP_SENSOR_CHANNEL);
while (!Is_adc_conv_finished());
return (U16)(ADCL+((U16)(ADCH<<8)));
}

1.7.2