31#ifndef DEV_ISO_VOLTAGE_SENSE_H
32#define DEV_ISO_VOLTAGE_SENSE_H
43#include "input_capture/sccp2.h"
45#define InputCapture_CallbackRegister SCCP2_InputCapture_CallbackRegister
46#define InputCapture_bufferoverflow SCCP2_InputCapture_HasBufferOverflowed
47#define InputCapture_BufferEmpty SCCP2_InputCapture_IsBufferEmpty
48#define CCP_TIMER_HIGH_REG CCP2TMRH
49#define CCP_TIMER_LOW_REG CCP2TMRL
50#define CCP_INTERRUPT_FLAG IFS1bits.CCP2IF
51#define CCP_BUF_L CCP2BUFL
52#define CCP_INPUT_CAPTURE_BUFFER 4
64#define MAX_NUM_SAMPLES_ISO_BUFFER 128
65#define MAX_NUM_SAMPLES_ISO_BUFFER_AS_EXP_OF_TWO 7
85#define OV_THRESHOLD_VOLT 900
86#define OV_THRESHOLD_SCALING 0.282
87#define OV_THRESHOLD_RAW (OV_THRESHOLD_VOLT / OV_THRESHOLD_SCALING )
89#define OV_THRESHOLD_HYST 140
90#define OV_THRESHOLD_HYST_HALF (OV_THRESHOLD_HYST/2)
92#define OV_UPPER_THRESHOLD_WITH_HYST OV_THRESHOLD_RAW + OV_THRESHOLD_HYST_HALF
94#define OV_LOWER_THRESHOLD_WITH_HYST OV_THRESHOLD_RAW - OV_THRESHOLD_HYST_HALF
96#define UV_THRESHOLD_VOLT 500
97#define UV_THRESHOLD_SCALING 0.282
98#define UV_THRESHOLD_RAW (UV_THRESHOLD_VOLT / UV_THRESHOLD_SCALING)
100#define UV_THRESHOLD_HYST 140
101#define UV_THRESHOLD_HYST_HALF (OV_THRESHOLD_HYST/2)
103#define UV_UPPER_THRESHOLD_WITH_HYST UV_THRESHOLD_RAW + UV_THRESHOLD_HYST_HALF
105#define UV_LOWER_THRESHOLD_WITH_HYST UV_THRESHOLD_RAW - UV_THRESHOLD_HYST_HALF
117#define INTERRUPT_COUNTS_MIN 6
118#define INTERRUPT_COUNTS_MAX 9
119#define FAULT_PERSISTENCE_COUNT 8
155void Dev_Iso_Voltage_Sens_Init(
void);
156void Dev_Iso_Voltage_Task_1ms(
void);
157uint16_t Dev_Get_Iso_Voltage(
void);
158uint16_t Dev_Get_Iso_Voltage_avg(
void);
159uint8_t Dev_Iso_Voltage_Is_OV (
void);
160uint8_t Dev_Iso_Voltage_Is_UV (
void);
161void Dev_Reset_Average_Buffer(
void);
uint8_t reset_buffer
reset voltage_buffer
uint8_t no_signal_flag
if no signal is present
uint16_t voltage_buffer_idx
current index of averaging buffer
uint8_t under_voltage_flag
under voltage flag
uint16_t voltage_buffer[MAX_NUM_SAMPLES_ISO_BUFFER]
buffer for averaging
uint8_t buffer_full
flag to monitor if full then allow averaging.
uint8_t over_voltage_flag
Over voltage flag.
uint16_t voltage_averaged
voltage averaged raw
uint16_t voltage_raw
voltage value raw
uint8_t error_flag
error_flag
a custom data type for isolated voltage measurement