Bar Logo Dual Active Bridge Development Board (Part-No. )
 
Content
     
Loading...
Searching...
No Matches
dev_temp.c
1
2/*
3 * File: dev_Temp.c
4 * Author: M70027
5 *
6 * Created on Jan 17, 2024, 13:30 PM
7 */
8
15#include "dev_temp.h"
16#include <stdlib.h>
17
18#include "config/hardware.h"
19#include "config/macros.h"
21#include "pwrctrl/pwrctrl.h"
22
23
31TEMP_SETTINGS_t* devTempDataPtr = &devTempData;
32
33// Private Function Call Prototypes
34static uint16_t Average_Temp_ADC_Samples(void);
35static uint16_t Temp_Calculate_Average(uint16_t * buffer, uint16_t size);
36
37
38
52
53
65
66
73uint16_t Dev_Temp_AverageValue(void){
74 return (devTempData.AdcAverage);
75}
76
88
89 static int8_t temperatureCelsius;
90 if (devTempData.AdcAverage == 0)
91 temperatureCelsius = 0;
93 temperatureCelsius =(int8_t)(__builtin_mulsu(TEMPERATURE_FACTOR, devTempData.AdcAverage) >> 15) + TEMPERATURE_OFFSET;
94 return temperatureCelsius;
95}
96
97
108
109
118{
119 // making sure that array does not go out of bounds.
121 {
124 }
125
126 // use API from power controller to read temperature
129
130}
131
132
145
146
153static uint16_t Temp_Calculate_Average(uint16_t * buffer, uint16_t length) {
154 uint16_t index = 0;
155 uint32_t sum = 0;
156 for (index = 0; index <length; index++)
157 sum +=buffer[index];
159}
160
161
Contains temperature initialization and execution functions.
#define MAX_NUM_SAMPLES_TEMP_BUFFER
These have to be renamed to make the temp device driver abstract.
Definition dev_temp.h:35
#define MAX_NUM_SAMPLES_TEMP_BUFFER_AS_EXP_OF_TWO
for bit shifting
Definition dev_temp.h:36
Contains public functions relevant for power control communication interface.
#define TEMPERATURE_OFFSET
Definition hardware.h:75
#define TEMPERATURE_FACTOR
Definition macros.h:157
uint16_t Dev_Temp_AverageValue(void)
Returns the average adc temperature reading.
Definition dev_temp.c:73
uint8_t Dev_Temp_Is_Over_Temperature(void)
Returns the status of the Over Temperature flag.
Definition dev_temp.c:105
void Dev_Temp_Task_100ms(void)
Executes the Temperature reading every 100ms.
Definition dev_temp.c:60
void Dev_Temp_Get_ADC_Sample(void)
Gets the temperature ADC sample.
Definition dev_temp.c:117
void Dev_Temp_Initialize(void)
Initializes the temperature data structure.
Definition dev_temp.c:45
static uint16_t Temp_Calculate_Average(uint16_t *buffer, uint16_t size)
Averages the temperature ADC samples.
Definition dev_temp.c:153
TEMP_SETTINGS_t devTempData
Data Object of temperature settings.
Definition dev_temp.c:30
int8_t Dev_Temp_Get_Temperature_Celcius(void)
This converts the raw values to temperature celcius as per device lookup table.
Definition dev_temp.c:87
static uint16_t Average_Temp_ADC_Samples(void)
Returns the temperature average value.
Definition dev_temp.c:139
uint16_t PwrCtrl_GetAdc_Temperature(void)
API function to get the raw ADC value for temperature.
A custom data type for temperature measurement.
Definition dev_temp.h:43
uint8_t OverTemperatureFlag
Over temperature flag.
Definition dev_temp.h:44
uint16_t TempBuffer[MAX_NUM_SAMPLES_TEMP_BUFFER]
buffer for calcualting average.
Definition dev_temp.h:49
uint16_t BufferIndex
buffer index
Definition dev_temp.h:52
uint8_t SensorLost
if sensor is present
Definition dev_temp.h:45
uint16_t AdcReading
temperature value raw sampled from ADC
Definition dev_temp.h:46
uint16_t AdcAverage
temperature
Definition dev_temp.h:47
uint16_t TemperatureCelcius
temperature celcius.
Definition dev_temp.h:48
uint16_t BufferFull
flag to monitor if full then allow averaging.
Definition dev_temp.h:50