|
@@ -1,4 +1,5 @@
|
1
|
1
|
#include <stdio.h>
|
|
2
|
+#include <stdlib.h>
|
2
|
3
|
#include "main.h"
|
3
|
4
|
#include "Bluecell_operate.h"
|
4
|
5
|
#include "PE43711.h"
|
|
@@ -257,6 +258,7 @@ uint8_t MBIC_TxDataArray[256] = {0,};
|
257
|
258
|
void Boot_LED_Toggle(void){
|
258
|
259
|
if(LedTimerCnt > 500){
|
259
|
260
|
HAL_GPIO_TogglePin(BOOT_LED_GPIO_Port,BOOT_LED_Pin);
|
|
261
|
+ HAL_GPIO_TogglePin(LED_ACT_GPIO_Port,LED_ACT_Pin);
|
260
|
262
|
LedTimerCnt = 0;
|
261
|
263
|
// printf("LED OF OFF\r\n");
|
262
|
264
|
}
|
|
@@ -974,6 +976,8 @@ void Bluecell_TableSave(uint8_t* data){
|
974
|
976
|
|
975
|
977
|
}
|
976
|
978
|
uint8_t Txdata[512];
|
|
979
|
+extern HAL_StatusTypeDef EEPROM_M24C08_Zerowrite(uint8_t devid,uint16_t Address);
|
|
980
|
+
|
977
|
981
|
bool Bluecell_Operate(uint8_t* data){
|
978
|
982
|
uint8_t datatype = data[BLUECELL_TYPE];
|
979
|
983
|
|
|
@@ -1048,6 +1052,7 @@ bool Bluecell_Operate(uint8_t* data){
|
1048
|
1052
|
CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
|
1049
|
1053
|
// printf("ATT_DL1_PATH ON\r\n");
|
1050
|
1054
|
}
|
|
1055
|
+ bluecell_Currdatastatus.ATT_DL1_PATH = data[BLUECELL_DATA];
|
1051
|
1056
|
|
1052
|
1057
|
|
1053
|
1058
|
break;
|
|
@@ -1062,18 +1067,19 @@ bool Bluecell_Operate(uint8_t* data){
|
1062
|
1067
|
CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
|
1063
|
1068
|
|
1064
|
1069
|
}
|
|
1070
|
+ bluecell_Currdatastatus.ATT_UL1_PATH = data[BLUECELL_DATA];
|
1065
|
1071
|
// printf("Function : %s Line %d \r\n",__func__,__LINE__);
|
1066
|
1072
|
break;
|
1067
|
1073
|
case ATT_SelfTest1 :
|
1068
|
1074
|
if(data[BLUECELL_DATA]==0){
|
1069
|
|
- HAL_GPIO_WritePin(_PATH_SW1_GPIO_Port,_PATH_SW1_Pin,GPIO_PIN_RESET);//CLOCK
|
1070
|
|
- HAL_GPIO_WritePin(PATH_SW1_GPIO_Port,PATH_SW1_Pin,GPIO_PIN_SET);//CLOCK
|
|
1075
|
+ HAL_GPIO_WritePin(_PATH_SW1_GPIO_Port,_PATH_SW1_Pin,GPIO_PIN_RESET);//CLOCK
|
|
1076
|
+ HAL_GPIO_WritePin(PATH_SW1_GPIO_Port,PATH_SW1_Pin,GPIO_PIN_SET);//CLOCK
|
1071
|
1077
|
}
|
1072
|
1078
|
else{
|
1073
|
1079
|
HAL_GPIO_WritePin(_PATH_SW1_GPIO_Port,_PATH_SW1_Pin,GPIO_PIN_SET);//CLOCK
|
1074
|
1080
|
HAL_GPIO_WritePin(PATH_SW1_GPIO_Port,PATH_SW1_Pin,GPIO_PIN_RESET);//CLOCK
|
1075
|
1081
|
}
|
1076
|
|
- bluecell_Prevdatastatus.Selftest1 = data[BLUECELL_DATA];
|
|
1082
|
+ bluecell_Currdatastatus.Selftest1 = data[BLUECELL_DATA];
|
1077
|
1083
|
// printf("Function : %s Line %d \r\n",__func__,__LINE__);
|
1078
|
1084
|
break;
|
1079
|
1085
|
case ATT_DL2_PATH :
|
|
@@ -1082,7 +1088,11 @@ bool Bluecell_Operate(uint8_t* data){
|
1082
|
1088
|
}
|
1083
|
1089
|
else{
|
1084
|
1090
|
HAL_GPIO_WritePin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin,GPIO_PIN_SET);//CLOCK
|
|
1091
|
+ bluecell_Prevdatastatus.ATT_DL2_H = ~bluecell_Prevdatastatus.ATT_DL2_H;
|
|
1092
|
+ bluecell_Prevdatastatus.ATT_DL2_L = ~bluecell_Prevdatastatus.ATT_DL2_L;
|
|
1093
|
+ CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
|
1085
|
1094
|
}
|
|
1095
|
+ bluecell_Currdatastatus.ATT_DL2_PATH = data[BLUECELL_DATA];
|
1086
|
1096
|
// printf("Function : %s Line %d \r\n",__func__,__LINE__);
|
1087
|
1097
|
break;
|
1088
|
1098
|
|
|
@@ -1097,6 +1107,7 @@ bool Bluecell_Operate(uint8_t* data){
|
1097
|
1107
|
bluecell_Prevdatastatus.ATT_UL2_L = ~bluecell_Prevdatastatus.ATT_UL2_L;
|
1098
|
1108
|
CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
|
1099
|
1109
|
}
|
|
1110
|
+ bluecell_Currdatastatus.ATT_UL2_PATH = data[BLUECELL_DATA];
|
1100
|
1111
|
break;
|
1101
|
1112
|
case ATT_SelfTest2 :
|
1102
|
1113
|
if(data[BLUECELL_DATA]==0){
|
|
@@ -1106,7 +1117,7 @@ bool Bluecell_Operate(uint8_t* data){
|
1106
|
1117
|
HAL_GPIO_WritePin(PATH_SW2_GPIO_Port,PATH_SW2_Pin,GPIO_PIN_RESET);//CLOCK
|
1107
|
1118
|
HAL_GPIO_WritePin(_PATH_SW2_GPIO_Port,_PATH_SW2_Pin,GPIO_PIN_SET);//CLOCK
|
1108
|
1119
|
}
|
1109
|
|
- bluecell_Prevdatastatus.Selftest2 = data[BLUECELL_DATA];
|
|
1120
|
+ bluecell_Currdatastatus.Selftest2 = data[BLUECELL_DATA];
|
1110
|
1121
|
// printf("Function : %s Line %d \r\n",__func__,__LINE__);
|
1111
|
1122
|
break;
|
1112
|
1123
|
case ATT_DL3_PATH :
|
|
@@ -1119,6 +1130,7 @@ bool Bluecell_Operate(uint8_t* data){
|
1119
|
1130
|
bluecell_Prevdatastatus.ATT_DL3_L = ~bluecell_Prevdatastatus.ATT_DL3_L;
|
1120
|
1131
|
CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
|
1121
|
1132
|
}
|
|
1133
|
+ bluecell_Currdatastatus.ATT_DL3_PATH = data[BLUECELL_DATA];
|
1122
|
1134
|
// printf("Function : %s Line %d \r\n",__func__,__LINE__);
|
1123
|
1135
|
break;
|
1124
|
1136
|
case ATT_UL3_PATH :
|
|
@@ -1131,6 +1143,7 @@ bool Bluecell_Operate(uint8_t* data){
|
1131
|
1143
|
bluecell_Prevdatastatus.ATT_UL3_L = ~bluecell_Prevdatastatus.ATT_UL3_L;
|
1132
|
1144
|
CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
|
1133
|
1145
|
}
|
|
1146
|
+ bluecell_Currdatastatus.ATT_UL3_PATH = data[BLUECELL_DATA];
|
1134
|
1147
|
// printf("Function : %s Line %d \r\n",__func__,__LINE__);
|
1135
|
1148
|
break;
|
1136
|
1149
|
case ATT_SelfTest3 :
|
|
@@ -1142,7 +1155,7 @@ bool Bluecell_Operate(uint8_t* data){
|
1142
|
1155
|
HAL_GPIO_WritePin(PATH_SW3_GPIO_Port,PATH_SW3_Pin,GPIO_PIN_RESET);//CLOCK
|
1143
|
1156
|
HAL_GPIO_WritePin(_PATH_SW3_GPIO_Port,_PATH_SW3_Pin,GPIO_PIN_SET);//CLOCK
|
1144
|
1157
|
}
|
1145
|
|
- bluecell_Prevdatastatus.Selftest3 = data[BLUECELL_DATA];
|
|
1158
|
+ bluecell_Currdatastatus.Selftest3 = data[BLUECELL_DATA];
|
1146
|
1159
|
// printf("Function : %s Line %d \r\n",__func__,__LINE__);
|
1147
|
1160
|
break;
|
1148
|
1161
|
case ATT_DL4_PATH :
|
|
@@ -1155,6 +1168,7 @@ bool Bluecell_Operate(uint8_t* data){
|
1155
|
1168
|
CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
|
1156
|
1169
|
|
1157
|
1170
|
}
|
|
1171
|
+ bluecell_Currdatastatus.ATT_DL4_PATH = data[BLUECELL_DATA];
|
1158
|
1172
|
// printf("Function : %s Line %d \r\n",__func__,__LINE__);
|
1159
|
1173
|
break;
|
1160
|
1174
|
case ATT_UL4_PATH:
|
|
@@ -1167,6 +1181,7 @@ bool Bluecell_Operate(uint8_t* data){
|
1167
|
1181
|
bluecell_Prevdatastatus.ATT_UL4_L = ~bluecell_Prevdatastatus.ATT_UL4_L;
|
1168
|
1182
|
CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
|
1169
|
1183
|
}
|
|
1184
|
+ bluecell_Currdatastatus.ATT_UL4_PATH = data[BLUECELL_DATA];
|
1170
|
1185
|
// printf("Function : %s Line %d \r\n",__func__,__LINE__);
|
1171
|
1186
|
break;
|
1172
|
1187
|
case ATT_SelfTest4 :
|
|
@@ -1177,7 +1192,7 @@ bool Bluecell_Operate(uint8_t* data){
|
1177
|
1192
|
HAL_GPIO_WritePin(_PATH_SW4_GPIO_Port,_PATH_SW4_Pin,GPIO_PIN_SET);//CLOCK
|
1178
|
1193
|
HAL_GPIO_WritePin(PATH_SW4_GPIO_Port,PATH_SW4_Pin,GPIO_PIN_RESET);//CLOCK
|
1179
|
1194
|
}
|
1180
|
|
- bluecell_Prevdatastatus.Selftest4 = data[BLUECELL_DATA];
|
|
1195
|
+ bluecell_Currdatastatus.Selftest4 = data[BLUECELL_DATA];
|
1181
|
1196
|
// printf("Function : %s Line %d \r\n",__func__,__LINE__);
|
1182
|
1197
|
break;
|
1183
|
1198
|
case ALC1_EN :
|
|
@@ -1278,11 +1293,13 @@ bool Bluecell_Operate(uint8_t* data){
|
1278
|
1293
|
break;
|
1279
|
1294
|
case Bluecell_StatusSave:
|
1280
|
1295
|
// printf("Copy Complete");
|
1281
|
|
- Bluecell_StructCpy(&DataWrite[0],&bluecell_Currdatastatus.bluecell_header,sizeof(BLUESTATUS_st));
|
1282
|
|
- EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_BASE),&DataWrite[0],sizeof(BLUESTATUS_st));
|
1283
|
|
- Bluecell_StructCpy(&Txdata[0],&DataWrite[0],sizeof(BLUESTATUS_st));
|
1284
|
|
- Txdata[sizeof(BLUESTATUS_st) - 2] = STH30_CreateCrc(&Txdata[BLUECELL_TYPE], sizeof(BLUESTATUS_st) - 3);
|
1285
|
|
- Uart1_Data_Send(&Txdata[0], sizeof(BLUESTATUS_st));
|
|
1296
|
+// Bluecell_StructCpy(&DataWrite[0],&bluecell_Currdatastatus.bluecell_header,sizeof(BLUESTATUS_st));
|
|
1297
|
+// EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_BASE),&DataWrite[0],sizeof(BLUESTATUS_st));
|
|
1298
|
+// Bluecell_StructCpy(&Txdata[0],&DataWrite[0],sizeof(BLUESTATUS_st));
|
|
1299
|
+// Txdata[sizeof(BLUESTATUS_st) - 2] = STH30_CreateCrc(&Txdata[BLUECELL_TYPE], sizeof(BLUESTATUS_st) - 3);
|
|
1300
|
+// Uart1_Data_Send(&Txdata[0], sizeof(BLUESTATUS_st));
|
|
1301
|
+ EEPROM_M24C08_Zerowrite(EEPROM_M24C08_ID ,(EEPROM_ATT_BASE));
|
|
1302
|
+
|
1286
|
1303
|
break;
|
1287
|
1304
|
|
1288
|
1305
|
case Bluecell_DL1_USER:
|
|
@@ -1332,6 +1349,9 @@ bool Bluecell_Operate(uint8_t* data){
|
1332
|
1349
|
if(datatype != Bluecell_StatusReq){
|
1333
|
1350
|
Bluecell_StructCpy(&DataWrite[0],&bluecell_Currdatastatus.bluecell_header,sizeof(BLUESTATUS_st));
|
1334
|
1351
|
EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_BASE),&DataWrite[0],sizeof(BLUESTATUS_st));
|
|
1352
|
+// Bluecell_StructCpy(&Txdata[0],&DataWrite[0],sizeof(BLUESTATUS_st));
|
|
1353
|
+// Txdata[sizeof(BLUESTATUS_st) - 2] = STH30_CreateCrc(&Txdata[BLUECELL_TYPE], sizeof(BLUESTATUS_st) - 3);
|
|
1354
|
+// Uart1_Data_Send(&Txdata[0], sizeof(BLUESTATUS_st));
|
1335
|
1355
|
}
|
1336
|
1356
|
return true;
|
1337
|
1357
|
}
|
|
@@ -1340,11 +1360,6 @@ void DataStatusSet(void){
|
1340
|
1360
|
bluecell_Currdatastatus.bluecell_type = Bluecell_StatusReq;
|
1341
|
1361
|
bluecell_Currdatastatus.bluecell_length = sizeof(bluecell_Currdatastatus) - 3;
|
1342
|
1362
|
bluecell_Currdatastatus.bluecell_crcindex = sizeof(bluecell_Currdatastatus) - 2 + 1;
|
1343
|
|
- bluecell_Currdatastatus.Selftest1 = HAL_GPIO_ReadPin(_PATH_SW1_GPIO_Port,_PATH_SW1_Pin);
|
1344
|
|
- bluecell_Currdatastatus.Selftest2 = HAL_GPIO_ReadPin(_PATH_SW2_GPIO_Port,_PATH_SW2_Pin);
|
1345
|
|
- bluecell_Currdatastatus.Selftest3 = HAL_GPIO_ReadPin(_PATH_SW3_GPIO_Port,_PATH_SW3_Pin);
|
1346
|
|
- bluecell_Currdatastatus.Selftest4 = HAL_GPIO_ReadPin(_PATH_SW4_GPIO_Port,_PATH_SW4_Pin);
|
1347
|
|
- bluecell_Currdatastatus.ATT_DL1_PATH = HAL_GPIO_ReadPin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin);//CLOCK;
|
1348
|
1363
|
bluecell_Currdatastatus.ATT_DL2_PATH = HAL_GPIO_ReadPin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin);//CLOCK;
|
1349
|
1364
|
bluecell_Currdatastatus.ATT_DL3_PATH = HAL_GPIO_ReadPin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin);//CLOCK;
|
1350
|
1365
|
bluecell_Currdatastatus.ATT_DL4_PATH = HAL_GPIO_ReadPin(PATH_EN_DL4_GPIO_Port,PATH_EN_DL4_Pin);//CLOCK;
|
|
@@ -1356,44 +1371,8 @@ void DataStatusSet(void){
|
1356
|
1371
|
|
1357
|
1372
|
|
1358
|
1373
|
|
1359
|
|
- /*bluecell_Currdatastatus.ATT_AGC1_ONOFF;
|
1360
|
|
- bluecell_Currdatastatus.ATT_ALC1_ONOFF;
|
1361
|
|
- bluecell_Currdatastatus.ATT_AGC2_ONOFF;
|
1362
|
|
- bluecell_Currdatastatus.ATT_ALC2_ONOFF;
|
1363
|
|
- bluecell_Currdatastatus.ATT_AGC3_ONOFF;
|
1364
|
|
- bluecell_Currdatastatus.ATT_ALC3_ONOFF;
|
1365
|
|
- bluecell_Currdatastatus.ATT_AGC4_ONOFF;
|
1366
|
|
- bluecell_Currdatastatus.ATT_ALC4_ONOFF;
|
1367
|
|
- bluecell_Currdatastatus.ATT_ALC1_MIN_H;
|
1368
|
|
- bluecell_Currdatastatus.ATT_ALC1_MIN_L;
|
1369
|
|
- bluecell_Currdatastatus.ATT_ALC1_MAX_H;
|
1370
|
|
- bluecell_Currdatastatus.ATT_ALC1_MAX_L;
|
1371
|
|
- bluecell_Currdatastatus.ATT_ALC2_MIN_H;
|
1372
|
|
- bluecell_Currdatastatus.ATT_ALC2_MIN_L;
|
1373
|
|
- bluecell_Currdatastatus.ATT_ALC2_MAX_H;
|
1374
|
|
- bluecell_Currdatastatus.ATT_ALC2_MAX_L;
|
1375
|
|
- bluecell_Currdatastatus.ATT_ALC3_MIN_H;
|
1376
|
|
- bluecell_Currdatastatus.ATT_ALC3_MIN_L;
|
1377
|
|
- bluecell_Currdatastatus.ATT_ALC3_MAX_H;
|
1378
|
|
- bluecell_Currdatastatus.ATT_ALC3_MAX_L;
|
1379
|
|
- bluecell_Currdatastatus.ATT_ALC4_MIN_H;
|
1380
|
|
- bluecell_Currdatastatus.ATT_ALC4_MIN_L;
|
1381
|
|
- bluecell_Currdatastatus.ATT_ALC4_MAX_H;
|
1382
|
|
- bluecell_Currdatastatus.ATT_ALC4_MAX_L; */
|
1383
|
1374
|
}
|
1384
|
1375
|
void Bluecell_DataInit(){
|
1385
|
|
- HAL_GPIO_WritePin(PATH_SW1_GPIO_Port,_PATH_SW1_Pin,bluecell_Currdatastatus.Selftest1 );
|
1386
|
|
- HAL_GPIO_WritePin(_PATH_SW1_GPIO_Port,_PATH_SW1_Pin,bluecell_Currdatastatus.Selftest1 );
|
1387
|
|
-
|
1388
|
|
- HAL_GPIO_WritePin(PATH_SW2_GPIO_Port,_PATH_SW2_Pin,bluecell_Currdatastatus.Selftest2 );
|
1389
|
|
- HAL_GPIO_WritePin(_PATH_SW2_GPIO_Port,_PATH_SW2_Pin,bluecell_Currdatastatus.Selftest2 );
|
1390
|
|
-
|
1391
|
|
- HAL_GPIO_WritePin(PATH_SW3_GPIO_Port,_PATH_SW3_Pin,bluecell_Currdatastatus.Selftest3 );
|
1392
|
|
- HAL_GPIO_WritePin(_PATH_SW3_GPIO_Port,_PATH_SW3_Pin,bluecell_Currdatastatus.Selftest3 );
|
1393
|
|
-
|
1394
|
|
- HAL_GPIO_WritePin(PATH_SW4_GPIO_Port,_PATH_SW4_Pin,bluecell_Currdatastatus.Selftest4 );
|
1395
|
|
- HAL_GPIO_WritePin(_PATH_SW4_GPIO_Port,_PATH_SW4_Pin,bluecell_Currdatastatus.Selftest4 );
|
1396
|
|
-
|
1397
|
1376
|
|
1398
|
1377
|
|
1399
|
1378
|
HAL_GPIO_WritePin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin,bluecell_Currdatastatus.ATT_DL1_PATH);
|
|
@@ -1410,39 +1389,44 @@ void DataStatusSet(void){
|
1410
|
1389
|
|
1411
|
1390
|
CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
|
1412
|
1391
|
if(bluecell_Currdatastatus.Selftest1==0){
|
|
1392
|
+// printf("Selftest1 : 0 \r\n");
|
1413
|
1393
|
HAL_GPIO_WritePin(_PATH_SW1_GPIO_Port,_PATH_SW1_Pin,GPIO_PIN_RESET);//CLOCK
|
1414
|
1394
|
HAL_GPIO_WritePin(PATH_SW1_GPIO_Port,PATH_SW1_Pin,GPIO_PIN_SET);//CLOCK
|
1415
|
1395
|
}else{
|
|
1396
|
+// printf("Selftest1 : 1 \r\n");
|
1416
|
1397
|
HAL_GPIO_WritePin(_PATH_SW1_GPIO_Port,_PATH_SW1_Pin,GPIO_PIN_SET);//CLOCK
|
1417
|
1398
|
HAL_GPIO_WritePin(PATH_SW1_GPIO_Port,PATH_SW1_Pin,GPIO_PIN_RESET);//CLOCK
|
1418
|
1399
|
}
|
1419
|
|
- if(bluecell_Currdatastatus.Selftest2=0){
|
|
1400
|
+ if(bluecell_Currdatastatus.Selftest2==0){
|
|
1401
|
+// printf("Selftest1 : 0 \r\n");
|
1420
|
1402
|
HAL_GPIO_WritePin(_PATH_SW2_GPIO_Port,_PATH_SW2_Pin,GPIO_PIN_RESET);//CLOCK
|
1421
|
1403
|
HAL_GPIO_WritePin(PATH_SW2_GPIO_Port,PATH_SW2_Pin,GPIO_PIN_SET);//CLOCK
|
1422
|
1404
|
}else{
|
|
1405
|
+// printf("Selftest2 : 1 \r\n");
|
1423
|
1406
|
HAL_GPIO_WritePin(_PATH_SW2_GPIO_Port,_PATH_SW2_Pin,GPIO_PIN_SET);//CLOCK
|
1424
|
1407
|
HAL_GPIO_WritePin(PATH_SW2_GPIO_Port,PATH_SW2_Pin,GPIO_PIN_RESET);//CLOCK
|
1425
|
1408
|
}
|
1426
|
|
- if(bluecell_Currdatastatus.Selftest3=0){
|
|
1409
|
+ if(bluecell_Currdatastatus.Selftest3==0){
|
|
1410
|
+// printf("Selftest1 : 0 \r\n");
|
1427
|
1411
|
HAL_GPIO_WritePin(_PATH_SW3_GPIO_Port,_PATH_SW3_Pin,GPIO_PIN_RESET);//CLOCK
|
1428
|
1412
|
HAL_GPIO_WritePin(PATH_SW3_GPIO_Port,PATH_SW3_Pin,GPIO_PIN_SET);//CLOCK
|
1429
|
1413
|
}else{
|
|
1414
|
+// printf("Selftest3 : 1 \r\n");
|
1430
|
1415
|
HAL_GPIO_WritePin(_PATH_SW3_GPIO_Port,_PATH_SW3_Pin,GPIO_PIN_SET);//CLOCK
|
1431
|
1416
|
HAL_GPIO_WritePin(PATH_SW3_GPIO_Port,PATH_SW3_Pin,GPIO_PIN_RESET);//CLOCK
|
1432
|
1417
|
}
|
1433
|
|
- if(bluecell_Currdatastatus.Selftest4=0){
|
|
1418
|
+ if(bluecell_Currdatastatus.Selftest4==0){
|
|
1419
|
+// printf("Selftest4 : 0 \r\n");
|
1434
|
1420
|
HAL_GPIO_WritePin(_PATH_SW4_GPIO_Port,_PATH_SW4_Pin,GPIO_PIN_RESET);//CLOCK
|
1435
|
1421
|
HAL_GPIO_WritePin(PATH_SW4_GPIO_Port,PATH_SW4_Pin,GPIO_PIN_SET);//CLOCK
|
1436
|
1422
|
}else{
|
|
1423
|
+// printf("Selftest4 : 1 \r\n");
|
1437
|
1424
|
HAL_GPIO_WritePin(_PATH_SW4_GPIO_Port,_PATH_SW4_Pin,GPIO_PIN_SET);//CLOCK
|
1438
|
1425
|
HAL_GPIO_WritePin(PATH_SW4_GPIO_Port,PATH_SW4_Pin,GPIO_PIN_RESET);//CLOCK
|
1439
|
1426
|
}
|
1440
|
1427
|
|
1441
|
1428
|
|
1442
|
1429
|
DataStatusSet();
|
1443
|
|
-// Bluecell_StructCpy(&Txdata[0],&bluecell_Currdatastatus.bluecell_header,sizeof(BLUESTATUS_st));
|
1444
|
|
-// Txdata[Txdata[BLUECELL_LENGTH] + 1] = STH30_CreateCrc(&Txdata[BLUECELL_TYPE], Txdata[BLUECELL_LENGTH]);
|
1445
|
|
-// Uart1_Data_Send(&Txdata[0], sizeof(BLUESTATUS_st));
|
1446
|
1430
|
}
|
1447
|
1431
|
uint8_t* MBIC_HeaderDataSetting(uint8_t* data){
|
1448
|
1432
|
ResultData[MBIC_PREAMBLE_0] = MBIC_PREAMBLE0;
|
|
@@ -1477,7 +1461,7 @@ uint8_t* MBIC_HeaderDataSetting(uint8_t* data){
|
1477
|
1461
|
bool MBIC_Operate(uint8_t* data){
|
1478
|
1462
|
uint16_t datatype = 0;
|
1479
|
1463
|
uint8_t Length = 0;
|
1480
|
|
- uint8_t SubData[256] = 0;
|
|
1464
|
+ uint8_t SubData[256] = {0,};
|
1481
|
1465
|
/*AID*/
|
1482
|
1466
|
datatype = ((data[MBIC_PROT_SUB_DATA_INDEX] << 8) & 0xFF00) // 2byte Data
|
1483
|
1467
|
|((data[MBIC_PROT_SUB_DATA_INDEX + 1] << 8) & 0x00FF) ;
|
|
@@ -1608,10 +1592,60 @@ bool MBIC_Operate(uint8_t* data){
|
1608
|
1592
|
return true;
|
1609
|
1593
|
}
|
1610
|
1594
|
|
|
1595
|
+uint16_t Ascendingcompare(const void *a, const void *b) // 오름차순 비교 함수 구현
|
|
1596
|
+{
|
|
1597
|
+ uint16_t num1 = *(int *)a; // void 포인터를 int 포인터로 변환한 뒤 역참조하여 값을 가져옴
|
|
1598
|
+ uint16_t num2 = *(int *)b; // void 포인터를 int 포인터로 변환한 뒤 역참조하여 값을 가져옴
|
1611
|
1599
|
|
|
1600
|
+ if (num1 < num2) // a가 b보다 작을 때는
|
|
1601
|
+ return -1; // -1 반환
|
|
1602
|
+
|
|
1603
|
+ if (num1 > num2) // a가 b보다 클 때는
|
|
1604
|
+ return 1; // 1 반환
|
|
1605
|
+
|
|
1606
|
+ return 0; // a와 b가 같을 때는 0 반환
|
|
1607
|
+}
|
|
1608
|
+uint16_t Descendingcompare(const void *a, const void *b) // 내림차순 비교 함수 구현
|
|
1609
|
+{
|
|
1610
|
+ uint16_t num1 = *(uint16_t *)a; // void 포인터를 uint16_t 포인터로 변환한 뒤 역참조하여 값을 가져옴
|
|
1611
|
+ uint16_t num2 = *(uint16_t *)b; // void 포인터를 uint16_t 포인터로 변환한 뒤 역참조하여 값을 가져옴
|
|
1612
|
+
|
|
1613
|
+ if (num1 > num2) // a가 b보다 클 때는
|
|
1614
|
+ return -1; // -1 반환
|
|
1615
|
+
|
|
1616
|
+ if (num1 < num2) // a가 b보다 작을 때는
|
|
1617
|
+ return 1; // 1 반환
|
|
1618
|
+
|
|
1619
|
+ return 0; // a와 b가 같을 때는 0 반환
|
|
1620
|
+}
|
|
1621
|
+void DascendigFunc(uint16_t* data,uint32_t size ){
|
|
1622
|
+
|
|
1623
|
+ int temp;
|
|
1624
|
+ for(int i = 0 ; i < size - 1 ; i ++) {
|
|
1625
|
+ for(int j = i+1 ; j < size ; j ++) {
|
|
1626
|
+ if(data[i] < data[j]) {
|
|
1627
|
+ temp = data[j];
|
|
1628
|
+ data[j] = data[i];
|
|
1629
|
+ data[i] = temp;
|
|
1630
|
+ }
|
|
1631
|
+ }
|
|
1632
|
+ }
|
|
1633
|
+}
|
|
1634
|
+
|
|
1635
|
+uint32_t SumFunc(uint16_t* data,uint16_t size){
|
|
1636
|
+ uint32_t ret = 0;
|
|
1637
|
+ for (uint16_t i = 0; i < size; i++) // 배열의 요소 개수만큼 반복
|
|
1638
|
+ {
|
|
1639
|
+ ret += data[i]; // sum과 배열의 요소를 더해서 다시 sum에 저장
|
|
1640
|
+ }
|
|
1641
|
+ return ret;
|
|
1642
|
+}
|
1612
|
1643
|
|
1613
|
1644
|
extern volatile uint32_t ADC1_Average_value[4];
|
1614
|
1645
|
extern volatile uint32_t ADC3_Average_value[5];
|
|
1646
|
+extern volatile uint16_t ADC1valuearray[4][ADC_AVERAGECNT];
|
|
1647
|
+extern volatile uint16_t ADC3valuearray[5][ADC_AVERAGECNT];
|
|
1648
|
+
|
1615
|
1649
|
uint16_t ADC1Ret[4];
|
1616
|
1650
|
uint16_t ADC3Ret[5];
|
1617
|
1651
|
|
|
@@ -1619,11 +1653,33 @@ void ADC_Check(void){
|
1619
|
1653
|
static uint8_t Cnt = 0;
|
1620
|
1654
|
double Volt_Calc_val = 3.3 / 4095;
|
1621
|
1655
|
double ret = 0;
|
|
1656
|
+ uint16_t MIN_ADC[ADC3_CNT] = {0,};
|
|
1657
|
+ uint16_t cnt[ADC3_CNT] = {0,};
|
1622
|
1658
|
// if(AdcTimerCnt > 10){
|
1623
|
|
-
|
|
1659
|
+ // 정렬할 배열, 요소 개수, 요소 크기, 비교 함수를 넣어줌
|
|
1660
|
+
|
|
1661
|
+
|
|
1662
|
+
|
1624
|
1663
|
if(adc3cnt >= 500){
|
|
1664
|
+ for(int i = 0; i < ADC1_CNT; i++){
|
|
1665
|
+ DascendigFunc(&ADC3valuearray[i][0],ADC_AVERAGECNT);
|
|
1666
|
+ MIN_ADC[i] = ADC3valuearray[i][0] - 12;
|
|
1667
|
+ for(int a = 0; a < ADC_AVERAGECNT; a++){
|
|
1668
|
+// printf("ADC3valuearray[%d][%d] : %d \r\n",i,a,ADC3valuearray[i][a]);
|
|
1669
|
+ if(ADC3valuearray[i][a] < MIN_ADC[i]){
|
|
1670
|
+ cnt[i] = a;
|
|
1671
|
+// printf("cnt[i] %d \r\n",cnt[i]);
|
|
1672
|
+ break;
|
|
1673
|
+ }else{
|
|
1674
|
+ cnt[i] = ADC_AVERAGECNT;
|
|
1675
|
+ }
|
|
1676
|
+ }
|
|
1677
|
+ ADC3_Average_value[i] = SumFunc(&ADC3valuearray[i][0],cnt[i]);
|
|
1678
|
+// printf("ADC3_Average_value[%d] : %d / %f \r\n",i,ADC3_Average_value[i],ADC3_Average_value[i]/cnt[i] * Volt_Calc_val);
|
|
1679
|
+ }
|
|
1680
|
+
|
1625
|
1681
|
for(int i = 0; i < 5; i++){
|
1626
|
|
- ADC3Ret[i] = ADC3_Average_value[i] / adc3cnt;
|
|
1682
|
+ ADC3Ret[i] = ADC3_Average_value[i] / cnt[i];
|
1627
|
1683
|
ADC3_Average_value[i] = 0;
|
1628
|
1684
|
}
|
1629
|
1685
|
adc3cnt = 0;
|
|
@@ -1669,9 +1725,27 @@ void ADC_Check(void){
|
1669
|
1725
|
printf("ADC3Ret[4] : %d DL4 : %f\r\n",ADC3Ret[4],ret);
|
1670
|
1726
|
#endif // PYJ.2020.04.26_END --
|
1671
|
1727
|
}
|
|
1728
|
+
|
1672
|
1729
|
if(adc1cnt >= 500){
|
|
1730
|
+ for(int i = 0; i < ADC1_CNT; i++){
|
|
1731
|
+ DascendigFunc(&ADC1valuearray[i][0],ADC_AVERAGECNT);
|
|
1732
|
+ MIN_ADC[i] = ADC1valuearray[i][0] - 12;
|
|
1733
|
+ for(int a = 0; a < ADC_AVERAGECNT; a++){
|
|
1734
|
+// printf("ADC1valuearray[%d][%d] : %d \r\n",i,a,ADC1valuearray[i][a]);
|
|
1735
|
+ if(ADC1valuearray[i][a] < MIN_ADC[i]){
|
|
1736
|
+ cnt[i] = a;
|
|
1737
|
+// printf("cnt[i] %d \r\n",cnt[i]);
|
|
1738
|
+ break;
|
|
1739
|
+ }else{
|
|
1740
|
+ cnt[i] = ADC_AVERAGECNT;
|
|
1741
|
+ }
|
|
1742
|
+ }
|
|
1743
|
+ ADC1_Average_value[i] = SumFunc(&ADC1valuearray[i][0],cnt[i]);
|
|
1744
|
+// printf("ADC1_Average_value[%d] : %d / %f \r\n",i,ADC1_Average_value[i],ADC1_Average_value[i]/cnt[i] * Volt_Calc_val);
|
|
1745
|
+ }
|
|
1746
|
+
|
1673
|
1747
|
for(int i = 0; i < 4; i++){
|
1674
|
|
- ADC1Ret[i] = ADC1_Average_value[i] / adc1cnt;
|
|
1748
|
+ ADC1Ret[i] = ADC1_Average_value[i] / cnt[i];
|
1675
|
1749
|
ADC1_Average_value[i] = 0;
|
1676
|
1750
|
}
|
1677
|
1751
|
adc1cnt = 0;
|