1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
#include "System_Monitor.h"
#include "Components.h"
#include "delay.h"
#include "wdt.h"
#define u16Base_Vol 0u
#define u16ENTER_LOW_N_RANGE 7000U
#define u16EXIT_LOW_N_RANGE 7500U
#define u16ENTER_LOW_Y_RANGE 9000U
#define u16EXIT_LOW_Y_RANGE 10000U
#define u16EXIT_HIGH_Y_RANGE 0xffffu
#define u16ENTER_HIGH_Y_RANGE 0xffffu
#define u16EXIT_HIGH_N_RANGE 0xffffu
#define u16ENTER_HIGH_N_RANGE 0xffffu
#define u16Top_Vol 0xffffu
void Delay_ms(uint32_t u32Ms);
// #pragma alignvar(8)
static const monitorlib_uint16_t SysFun_Range [ 26u ] = {
u16Base_Vol,
u16ENTER_LOW_N_RANGE,
u16EXIT_LOW_N_RANGE,
u16ENTER_LOW_Y_RANGE,
u16EXIT_LOW_Y_RANGE,
u16EXIT_HIGH_Y_RANGE,
u16ENTER_HIGH_Y_RANGE,
u16EXIT_HIGH_N_RANGE,
u16ENTER_HIGH_N_RANGE,
u16Top_Vol,
2500,
50u,
u16Base_Vol,
u16ENTER_LOW_N_RANGE,
u16EXIT_LOW_N_RANGE,
u16ENTER_LOW_Y_RANGE,
u16EXIT_LOW_Y_RANGE,
u16EXIT_HIGH_Y_RANGE,
u16ENTER_HIGH_Y_RANGE,
u16EXIT_HIGH_N_RANGE,
u16ENTER_HIGH_N_RANGE,
u16Top_Vol,
2u,
2u,
2u,
0u,
};
monitorlib_uint16_t Sys_Read_KL30_Voltage_F(void)
{
monitorlib_uint16_t u16Voltage;
u16Voltage = (monitorlib_uint16_t)ADC_Conv_Single_Channel(ADC_CH_KL30_VOLTAGE);
return u16Voltage;
}
monitorlib_uint16_t Sys_Read_KL15_Voltage_F(void)
{
monitorlib_uint16_t u16Voltage;
u16Voltage = (monitorlib_uint16_t)ADC_Conv_Single_Channel(ADC_CH_KL15_VOLTAGE);
return u16Voltage;
}
monitorlib_uint16_t Sys_Read_KL30_Voltage(void)
{
monitorlib_uint16_t u16Voltage;
u16Voltage = (monitorlib_uint16_t)ADC_Read_Signal(ADC_CH_KL30_VOLTAGE);
return u16Voltage;
}
monitorlib_uint16_t Sys_Read_KL15_Voltage(void)
{
monitorlib_uint16_t u16Voltage;
u16Voltage = (monitorlib_uint16_t)ADC_Read_Signal(ADC_CH_KL15_VOLTAGE);
return u16Voltage;
}
monitorlib_uint8_t Sys_Read_KL30_Valid(void)
{
monitorlib_uint8_t u8Valid;
u8Valid = ADC_Read_Signal_Valid(ADC_CH_KL30_VOLTAGE);
return u8Valid;
}
monitorlib_uint8_t Sys_Read_KL15_Valid(void)
{
monitorlib_uint8_t u8Valid;
u8Valid = ADC_Read_Signal_Valid(ADC_CH_KL15_VOLTAGE);
return u8Valid;
}
monitorlib_uint8_t System_LINE_KL15(void)
{
static monitorlib_uint8_t u8KL15 = 0;
if (Sys_Read_KL15_Voltage() >= 5500u )
{
u8KL15 = 1u;
}
else if((Sys_Read_KL15_Voltage() >= 5000u)&&(Sys_Read_KL15_Voltage() < 5500u))
{
;
}
else
{
u8KL15 = 0;
}
return u8KL15;
}
void Common_BlockDelay(monitorlib_uint32_t u32Ms)
{
Gen_TimeDelay(u32Ms * 1000u, 50u);
}
void Sys_LogicProcess(void)
{
}
void Sys_KL30_Init(void)
{
MonitorExt_st m_st;
m_st.COM_Delay = Common_BlockDelay;
m_st.SysGet_KL15Line = System_LINE_KL15;
m_st.SysGet_KL15_Valid = Sys_Read_KL15_Valid;
m_st.SysGet_KL30_Valid = Sys_Read_KL30_Valid;
m_st.SysGet_KL15_value = Sys_Read_KL15_Voltage;
m_st.SysGet_KL30_value = Sys_Read_KL30_Voltage;
m_st.SysGet_KL15_value_Force = Sys_Read_KL15_Voltage_F;
m_st.SysGet_KL30_value_Force = Sys_Read_KL30_Voltage_F;
m_st.SysMonitorLogic = Sys_LogicProcess;
Sys_Set_Pata(SysFun_Range, &m_st);
System_Monitor_KL30Init( );
}
void Sys_WakeUp_Init(void)
{
MonitorExt_st m_st;
m_st.COM_Delay = Common_BlockDelay;
m_st.SysGet_KL15Line = System_LINE_KL15;
m_st.SysGet_KL15_Valid = Sys_Read_KL15_Valid;
m_st.SysGet_KL30_Valid = Sys_Read_KL30_Valid;
m_st.SysGet_KL15_value = Sys_Read_KL15_Voltage;
m_st.SysGet_KL30_value = Sys_Read_KL30_Voltage;
m_st.SysGet_KL15_value_Force = Sys_Read_KL15_Voltage_F;
m_st.SysGet_KL30_value_Force = Sys_Read_KL30_Voltage_F;
m_st.SysMonitorLogic = Sys_LogicProcess;
Sys_Set_Pata(SysFun_Range, &m_st);
System_Monitor_WakeupInit( );
}
void Delay_ms(uint32_t u32Ms)
{
uint32_t i = 0;
uint32_t u32Counter = 0;
for (u32Counter = 0; u32Counter < u32Ms; u32Counter++)
{
for (i = 0; i < 44; i++)
{
__NOP();
__NOP();
__NOP();
}
WDT_Restart();
}
}