/*************************************************************************************/
//** Copyright : 2016 BY HOLTEK SEMICONDUCTOR INC **
//** File Name : calculate.c **
//** Description : **
//** MCU : HT67F5652 **
//** Author : Leo **
//** Date : 2016/10/28 **
//** Version : V00 **
//** History : **
/*************************************************************************************/
#include "..\User\Config.h"
/*********************************************************
// Name: 石冢 10TP583T NTC
// Note: R25 = 100K
// B = 3435
*********************************************************/
const U16 LU16C_NTC_TABLE[500] = {
28704 ,28572 ,28441 ,28311 ,28181 ,28052 ,27924 ,27796 ,27669 ,27543 ,27417 ,27292 ,27168 ,27044 ,26921 ,26799 ,26677 ,26556 ,26436 ,26316 ,26197 ,26078 ,25960 ,25843 ,25726 ,25610 ,25495 ,25380 ,25266 ,25152 ,
25039 ,24926 ,24815 ,24703 ,24592 ,24482 ,24373 ,24264 ,24155 ,24047 ,23940 ,23833 ,23727 ,23621 ,23516 ,23412 ,23308 ,23204 ,23101 ,22999 ,22897 ,22795 ,22694 ,22594 ,22494 ,22395 ,22296 ,22198 ,22100 ,22003 ,
21906 ,21809 ,21714 ,21618 ,21523 ,21429 ,21335 ,21242 ,21149 ,21056 ,20964 ,20873 ,20782 ,20691 ,20601 ,20511 ,20422 ,20333 ,20245 ,20157 ,20070 ,19983 ,19896 ,19810 ,19724 ,19639 ,19554 ,19470 ,19386 ,19302 ,
19219 ,19137 ,19054 ,18972 ,18891 ,18810 ,18729 ,18649 ,18569 ,18490 ,18410 ,18332 ,18253 ,18176 ,18098 ,18021 ,17944 ,17868 ,17792 ,17716 ,17641 ,17566 ,17492 ,17417 ,17344 ,17270 ,17197 ,17125 ,17052 ,16980 ,
16909 ,16837 ,16767 ,16696 ,16626 ,16556 ,16486 ,16417 ,16348 ,16280 ,16212 ,16144 ,16076 ,16009 ,15942 ,15876 ,15810 ,15744 ,15678 ,15613 ,15548 ,15483 ,15419 ,15355 ,15291 ,15228 ,15165 ,15102 ,15040 ,14978 ,
14916 ,14854 ,14793 ,14732 ,14671 ,14611 ,14551 ,14491 ,14431 ,14372 ,14313 ,14255 ,14196 ,14138 ,14080 ,14023 ,13965 ,13908 ,13852 ,13795 ,13739 ,13683 ,13627 ,13572 ,13517 ,13462 ,13407 ,13353 ,13299 ,13245 ,
13192 ,13138 ,13085 ,13032 ,12980 ,12927 ,12875 ,12824 ,12772 ,12721 ,12669 ,12619 ,12568 ,12518 ,12467 ,12418 ,12368 ,12318 ,12269 ,12220 ,12171 ,12123 ,12075 ,12026 ,11979 ,11931 ,11884 ,11836 ,11789 ,11743 ,
11696 ,11650 ,11604 ,11558 ,11512 ,11467 ,11421 ,11376 ,11331 ,11287 ,11242 ,11198 ,11154 ,11110 ,11067 ,11023 ,10980 ,10937 ,10894 ,10852 ,10809 ,10767 ,10725 ,10683 ,10641 ,10600 ,10559 ,10517 ,10477 ,10436 ,
10395 ,10355 ,10315 ,10275 ,10235 ,10195 ,10156 ,10117 ,10078 ,10039 ,10000 , 9961 ,9923 ,9885 ,9847 ,9809 ,9771 ,9734 ,9696 ,9659 ,9622 ,9585 ,9549 ,9512 ,9476 ,9440 ,9404 ,9368 ,9332 ,9296 ,
9261 ,9226 ,9191 ,9156 ,9121 ,9086 ,9052 ,9018 ,8984 ,8950 ,8916 ,8882 ,8848 ,8815 ,8782 ,8749 ,8716 ,8683 ,8650 ,8618 ,8585 ,8553 ,8521 ,8489 ,8457 ,8426 ,8394 ,8363 ,8331 ,8300 ,
8269 ,8239 ,8208 ,8177 ,8147 ,8117 ,8086 ,8056 ,8026 ,7997 ,7967 ,7937 ,7908 ,7879 ,7850 ,7821 ,7792 ,7763 ,7734 ,7706 ,7678 ,7649 ,7621 ,7593 ,7565 ,7537 ,7510 ,7482 ,7455 ,7428 ,
7400 ,7373 ,7346 ,7320 ,7293 ,7266 ,7240 ,7213 ,7187 ,7161 ,7135 ,7109 ,7083 ,7057 ,7032 ,7006 ,6981 ,6956 ,6931 ,6906 ,6881 ,6856 ,6831 ,6806 ,6782 ,6757 ,6733 ,6709 ,6685 ,6661 ,
6637 ,6613 ,6589 ,6566 ,6542 ,6519 ,6496 ,6472 ,6449 ,6426 ,6403 ,6381 ,6358 ,6335 ,6313 ,6290 ,6268 ,6246 ,6223 ,6201 ,6179 ,6158 ,6136 ,6114 ,6092 ,6071 ,6050 ,6028 ,6007 ,5986 ,
5965 ,5944 ,5923 ,5902 ,5881 ,5861 ,5840 ,5820 ,5799 ,5779 ,5759 ,5739 ,5719 ,5699 ,5679 ,5659 ,5639 ,5620 ,5600 ,5581 ,5561 ,5542 ,5523 ,5503 ,5484 ,5465 ,5446 ,5428 ,5409 ,5390 ,
5372 ,5353 ,5335 ,5316 ,5298 ,5280 ,5261 ,5243 ,5225 ,5207 ,5189 ,5172 ,5154 ,5136 ,5119 ,5101 ,5084 ,5066 ,5049 ,5032 ,5015 ,4998 ,4981 ,4964 ,4947 ,4930 ,4913 ,4897 ,4880 ,4863 ,
4847 ,4830 ,4814 ,4798 ,4782 ,4765 ,4749 ,4733 ,4717 ,4701 ,4686 ,4670 ,4654 ,4639 ,4623 ,4607 ,4592 ,4577 ,4561 ,4546 ,4531 ,4516 ,4500 ,4485 ,4470 ,4456 ,4441 ,4426 ,4411 ,4396 ,
4382 ,4367 ,4353 ,4338 ,4324 ,4310 ,4295 ,4281 ,4267 ,4253 ,4239 ,4225 ,4211 ,4197 ,4183 ,4169 ,4156 ,4142 ,4128 ,4115
};
/*********************************************************
// Name: 石冢 10TP583T VTP
// Note: 室溫為25°C Vtp和物表溫度對應的表格
*********************************************************/
const S16 LU16C_VTP_TABLE[100] =
{
-1556,-1501,-1446,-1390,-1334,-1277,-1219,-1161,-1102,-1042,-982 ,-921 ,-860 ,-798 ,-735 ,-671 ,-607 ,-543 ,-477 ,-411 ,-344 ,-277 ,-209 ,-140 ,-70 ,
0 ,71 ,143 ,215 ,288 ,362 ,437 ,512 ,588 ,665 ,743 ,821 ,900 ,980 ,1061 ,1142 ,1224 ,1307 ,1391 ,1476 ,1561 ,1647 ,1734 ,1822 ,1911 ,
2000 ,2091 ,2182 ,2274 ,2367 ,2460 ,2555 ,2650 ,2747 ,2844 ,2942 ,3041 ,3141 ,3242 ,3343 ,3446 ,3549 ,3654 ,3759 ,3865 ,3973 ,4081 ,4190 ,4300 ,4411 ,
4523 ,4636 ,4750 ,4864 ,4980 ,5097 ,5215 ,5334 ,5454 ,5575 ,5697 ,5819 ,5943 ,6068 ,6194 ,6322 ,6450 ,6579 ,6709 ,6840 ,6973 ,7106 ,7241 ,7377 ,7513
};
/*********************************************************
// Name: Surface ----> Body
// Note:
*********************************************************/
const U8 LU8_Boby_temp_TABLE[] =
{
53,53,53,53,53,53,53,52,51,50,50,50,50,50,50,50,50,50,49,48,
48,47,47,47,46,46,46,46,46,46,46,46,46,45,45,45,44,43,43,42,
42,40,40,39,38,38,37,36,36,35,34,34,33,32,31,30,29,28,27,26,
25,24,23,22,21,21,20,19,18,17,16,15,15,15,14,16,15,14,13,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,10,
10,10,10,10,10,10,10,10,10
};
volatile __16_type gu16v_correction_K1;
volatile __16_type gu16v_correction_K2;
volatile __16_type gu16v_tcf;
/********************************************************************
Function: fun_Vtp_Calculate
INPUT :
OUTPUT : Vtp*4
NOTE :
********************************************************************/
void fun_Vtp_Calculate(void)
{
// gu16v_vtp.S16 = (S32)gu16v_adc_vtp.S16;
gu16v_vtp.S16 = gu16v_adc_vtp.S16;
}
/********************************************************************
Function: fun_RNTC_Calculate
INPUT :
OUTPUT :
NOTE : 單個通道計算
********************************************************************/
void fun_RNTC_Calculate(void)
{
gu16v_adc_res.S16 = (U32)gu16v_adc_res.S16 * 18000 /(0x7fff - gu16v_adc_res.S16);
}
/********************************************************************
Function: fun_Vsen_Calculate
INPUT :
OUTPUT :
NOTE : NTC 阻值對應的溫度
********************************************************************/
void fun_Vsen_Calculate(void)
{
volatile U16 i;
// gu16v_correction_K2.U16 = 10000;
gu16v_adc_res.S16 = (U32)gu16v_correction_K2.U16*gu16v_adc_res.S16 /10000;
i = 0;
while(1)
{
if(gu16v_adc_res.S16>LU16C_NTC_TABLE[0])
{
break;
}
else if(gu16v_adc_res.S16<LU16C_NTC_TABLE[499])
{
break;
}
else
{
if( gu16v_adc_res.S16<=LU16C_NTC_TABLE[i] && gu16v_adc_res.S16>LU16C_NTC_TABLE[i+1])
{
if(gu16v_adc_res.S16 - LU16C_NTC_TABLE[i+1]>(LU16C_NTC_TABLE[i] - LU16C_NTC_TABLE[i+1])/2)
{
GCC_NOP();
}
else
{
i = i+1;
}
break;
}
i++;
if(i>500)
{
GCC_NOP();
break;
}
}
}
gu16v_temp.S16 = i;
}
/********************************************************************
Function: fun_Tobj_Calculate
INPUT :
OUTPUT :
NOTE : 物表溫度計算
********************************************************************/
void fun_Tobj_Calculate(void)
{
volatile U8 lu8v_ntc_h,lu8v_ntc_l;
volatile S32 gs32v_Vol_temp1;
lu8v_ntc_h = gu16v_temp.S16/10;
lu8v_ntc_l = gu16v_temp.S16%10;
// 獲取 室溫--25°C 的電壓值
gs32v_Vol_temp1 = LU16C_V