-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgstruct_pvdcs.c
136 lines (116 loc) · 6.36 KB
/
gstruct_pvdcs.c
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "struct_code.h"
#include <time.h>
#include "gstruct.h"
#define GPS_version_pvdcs "V0.2 Beta"
void GenerateC_PVDCS_File(struct OporaDataStruct ors, char* file)
{
char date[100];
char filec[200];
int i, j;
unsigned int PVDCS;
strcpy(filec,file);
strcat(filec,"_pvdcs.h");
strcat(file,"_pvdcs.c");
FILE* fl = fopen(file,"w");
struct tm* tkm;
const time_t timer=time(NULL);
tkm=localtime(&timer);
strftime(date, 100,"%d.%m.%Y %H:%M:%S", tkm);
fprintf(fl, "/*!\n\\file\n\\brief Заголовочный файл настройки детектора напряжения\n\\author Cosov O.O\n\\Version %s \n\\date %s\n*/\n", GPS_version_pvdcs,date);
fprintf(fl,"#include \"");
strcpy(filec,strstr(filec,"\\"));
while(strchr(filec,'\\'))
{
strcpy(filec,filec+1);
}
fprintf(fl,filec);
fprintf(fl,"\"");
fprintf(fl,"//Init Function_pvdcs \n");
fprintf(fl,"void InitFunction_pvdcs() {");
fprintf(fl, "\n");
fprintf(fl, "/*!\n \\breif PVDCS\n");
fprintf(fl, "\n Регистр детектора напряжения питания");
if (ors.PVDCS.PVDEN == On)
{
fprintf(fl, "\n Датчик напряжения питания Ucc включен");
PVDCS |= 1;
}
else fprintf(fl, "\n Датчик напряжения питания Ucc выключен");
switch (ors.PVDCS.PLS)
{
case 0b000: fprintf(fl, "\n уровень напряжения для сравнения с напряжением батарейного питания - 2.0 В");break;
case 0b001: fprintf(fl, "\n уровень напряжения для сравнения с напряжением батарейного питания - 2.2 В");break;
case 0b010: fprintf(fl, "\n уровень напряжения для сравнения с напряжением батарейного питания - 2.4 В");break;
case 0b011: fprintf(fl, "\n уровень напряжения для сравнения с напряжением батарейного питания - 2.6 В");break;
case 0b100: fprintf(fl, "\n уровень напряжения для сравнения с напряжением батарейного питания - 2.8 В");break;
case 0b101: fprintf(fl, "\n уровень напряжения для сравнения с напряжением батарейного питания - 3.0 В");break;
case 0b110: fprintf(fl, "\n уровень напряжения для сравнения с напряжением батарейного питания - 3.2 В");break;
case 0b111: fprintf(fl, "\n уровень напряжения для сравнения с напряжением батарейного питания - 3.4 В");break;
}
PVDCS |= ors.PVDCS.PLS << 3;
switch (ors.PVDCS.PBLS)
{
case 0b00: fprintf(fl, "\n Уровень напряжения для сравнения с напряжением основного пиания - 1.8 В");break;
case 0b01: fprintf(fl, "\n Уровень напряжения для сравнения с напряжением основного пиания - 2.2 В");break;
case 0b10: fprintf(fl, "\n Уровень напряжения для сравнения с напряжением основного пиания - 2.6 В");break;
case 0b11: fprintf(fl, "\n Уровень напряжения для сравнения с напряжением основного пиания - 3.0 В");break;
}
PVDCS |= ors.PVDCS.PBLS << 1;
if (ors.PVDCS.PVBD == lower)
{
fprintf(fl, "\n Напряжение питания меньше чем уровень задаваемый PBLS");
PVDCS |= 1 << 6;
}
else fprintf(fl, "\n Напряжение питания больше чем уровень задаваемый PBLS");
if (ors.PVDCS.PVD == lower)
{
fprintf(fl, "\n Напряжение питания меньше чем уровень задаваемый PLS");
PVDCS |= 1 << 7;
}
else fprintf(fl, "\n Напряжение питания больше чем уровень задаваемый PLS");
if (ors.PVDCS.IEPVBD == On)
{
fprintf(fl, "\n Прерывание датчика PVBD разрешено");
PVDCS |= 1 << 8;
}
else fprintf(fl, "\n Прерывание датчика PVBD запрещено");
if (ors.PVDCS.IEPVD == On)
{
fprintf(fl, "\n Прерывание датчика PVD разрешено");
PVDCS |= 1 << 9;
}
else fprintf(fl, "\n Прерывание датчика PVD запрещено");
if (ors.PVDCS.INVB == On)
{
fprintf(fl, "\n На датчике PVBD присутствует инверсия");
PVDCS |= 1 << 10;
}
else fprintf(fl, "\n На датчике PVBD отсутствует инверсия");
if (ors.PVDCS.INV == On)
{
fprintf(fl, "\n На датчике PVD присутствует инверсия");
PVDCS |= 1 << 11;
}
else fprintf(fl, "\n На датчике PVD отсутствует инверсия");
if (ors.PVDCS.PVDBEN == On)
{
fprintf(fl, "\n Датчик напряжения питания Bucc включен");
PVDCS |= 1 << 12;
}
else fprintf(fl, "\n Датчик напряжения питания Bucc выключен");
}
void GenerateHeader_PVDCS_File(struct OporaDataStruct ors, char* file)
{
int i, j;
unsigned int REG_SETTX=0;
unsigned int REG_CLRTX=0;
char* ports="ABCDEF";
strcat(file,"_clk.h");
FILE* fl = fopen(file,"w");
fprintf(fl,"//Init Function_pvdcs \n");
fprintf(fl,"void InitFunction_pvdcs();");
fclose(fl);
}