瀏覽代碼

ALC Testing 중... ALC 정상 동작 / HFR 알고리즘 아직 미구현 / ALC 동작 최소 동작 시간 0.5초로 변경 / Shutdown 알고리즘 을 위한 타이머 조건문 추가 /

PYJ 5 年之前
父節點
當前提交
930825d69f
共有 3 個文件被更改,包括 95 次插入26 次删除
  1. 92 23
      Bluecell_Src/Bluecell_operate.c
  2. 1 1
      STM32F103ZET_JDASMBIC.elf.launch
  3. 2 2
      Src/main.c

+ 92 - 23
Bluecell_Src/Bluecell_operate.c

@@ -108,6 +108,8 @@ uint8_t DataWrite[sizeof(BLUESTATUS_st)] = {0,};
108 108
 uint8_t Txdata[512];
109 109
 int8_t AutoControl_Save[MBIC_Table_INDEX][sizeof(ALC_dBm_t)];
110 110
 uint16_t ADC1Ret[4];
111
+bool UL_ALC_GainAttenSet[ALC_Alarm_UL_Index_MAX] = {false,};
112
+int16_t ALC_Level_Save[ALC_Alarm_UL_Index_MAX] = {0,};
111 113
 bool Initialize = false;
112 114
 
113 115
 uint16_t ADC3Ret[5];
@@ -3756,24 +3758,43 @@ bool MBIC_Operate(uint8_t* data){
3756 3758
             case  ULO_Gain_Atten1                         :
3757 3759
                 bluecell_Currdatastatus.ATT_UL1_H = data[MBIC_PAYLOADSTART + 3]; 
3758 3760
                 bluecell_Currdatastatus.ATT_UL1_L = data[MBIC_PAYLOADSTART + 4]; 
3761
+                if(bluecell_Currdatastatus.ULO_ALC_ON_OFF == true){
3762
+                    UL_ALC_GainAttenSet[ALC_Alarm_UL1_Index] = true;
3763
+                    ALC_Level_Save[ALC_Alarm_UL1_Index] = bluecell_Currdatastatus.ULO_Level1_H << 8 | bluecell_Currdatastatus.ULO_Level1_L;
3764
+                }
3759 3765
                 CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
3760 3766
 
3761 3767
                 break;
3762 3768
             case  ULO_Gain_Atten2                         :
3763 3769
                 bluecell_Currdatastatus.ATT_UL2_H = data[MBIC_PAYLOADSTART + 3]; 
3764 3770
                 bluecell_Currdatastatus.ATT_UL2_L = data[MBIC_PAYLOADSTART + 4]; 
3771
+                if(bluecell_Currdatastatus.ULO_ALC_ON_OFF == true){
3772
+                    UL_ALC_GainAttenSet[ALC_Alarm_UL2_Index] = true;
3773
+                    ALC_Level_Save[ALC_Alarm_UL2_Index] = bluecell_Currdatastatus.ULO_Level2_H << 8 | bluecell_Currdatastatus.ULO_Level2_L;
3774
+                }
3775
+            
3765 3776
                 CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
3766 3777
 
3767 3778
                 break;
3768 3779
             case  ULO_Gain_Atten3                         :
3769 3780
                 bluecell_Currdatastatus.ATT_UL3_H = data[MBIC_PAYLOADSTART + 3]; 
3770 3781
                 bluecell_Currdatastatus.ATT_UL3_L = data[MBIC_PAYLOADSTART + 4]; 
3782
+                if(bluecell_Currdatastatus.ULO_ALC_ON_OFF == true){
3783
+                    UL_ALC_GainAttenSet[ALC_Alarm_UL3_Index] = true;
3784
+                    ALC_Level_Save[ALC_Alarm_UL3_Index] = bluecell_Currdatastatus.ULO_Level3_H << 8 | bluecell_Currdatastatus.ULO_Level3_L;
3785
+                }
3786
+            
3771 3787
                 CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
3772 3788
 
3773 3789
                 break;
3774 3790
             case  ULO_Gain_Atten4                         :
3775 3791
                 bluecell_Currdatastatus.ATT_UL4_H = data[MBIC_PAYLOADSTART + 3]; 
3776 3792
                 bluecell_Currdatastatus.ATT_UL4_L = data[MBIC_PAYLOADSTART + 4]; 
3793
+                if(bluecell_Currdatastatus.ULO_ALC_ON_OFF == true){
3794
+                    UL_ALC_GainAttenSet[ALC_Alarm_UL4_Index] = true;
3795
+                    ALC_Level_Save[ALC_Alarm_UL4_Index] = bluecell_Currdatastatus.ULO_Level4_H << 8 | bluecell_Currdatastatus.ULO_Level4_L  ;                      
3796
+                }
3797
+            
3777 3798
                 CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
3778 3799
 
3779 3800
                 break;
@@ -4838,11 +4859,11 @@ double AGC_AutoControl_ADC_Compare(double CurrentAdc,uint8_t* CompareAdc,uint8_t
4838 4859
 //        for(int a = 0; a < sizeof(AGC_dBm_t); a++)
4839 4860
 //            printf("AutoControl_Save[%d] : %d \r\n",a,AutoControl_Save[a]);
4840 4861
     if(first_data < CurrentAdc){
4841
-        printf("(RefTable_Data[0]) : %d \r\n",(RefTable_Data[0]));
4862
+//        printf("(RefTable_Data[0]) : %d \r\n",(RefTable_Data[0]));
4842 4863
         return (RefTable_Data[0]);
4843 4864
     }else{
4844
-        printf("Nomal _Table Data %f",(RefTable_Data[LastIndex] - (dot * 0.1)));
4845
-        printf("LastIndex : %d  / dot : %d  TableAdc : %f \r\n",LastIndex,dot,(RefTable_Data[LastIndex] - (dot * 0.1)));
4865
+//        printf("Nomal _Table Data %f",(RefTable_Data[LastIndex] - (dot * 0.1)));
4866
+//        printf("LastIndex : %d  / dot : %d  TableAdc : %f \r\n",LastIndex,dot,(RefTable_Data[LastIndex] - (dot * 0.1)));
4846 4867
         return (RefTable_Data[LastIndex] - (dot * 0.1));
4847 4868
     }
4848 4869
 }
@@ -4979,17 +5000,32 @@ void ALC_Function(){ //DL
4979 5000
   //  int32_t CurrnALC_MIN_SettingValue = 0;
4980 5001
   //  int32_t ALC_Result = 0;
4981 5002
     int16_t Limitdata = 0;
5003
+    static int16_t PrevLimitdata[ALC_Alarm_UL_Index_MAX] = {0,};
4982 5004
     double ResdBm = 0;
4983 5005
     int16_t ResultData = 0;
5006
+    int16_t PrevResultData[ALC_Alarm_UL_Index_MAX] = {0,};    
4984 5007
     int16_t IwillGiveAtten = 0;
4985 5008
     static int8_t* ALC_Table;
5009
+    int16_t tmpcalc = 0;
5010
+    int16_t UL_Atten[ALC_Alarm_UL_Index_MAX] = {0,};
5011
+    int16_t Main_Atten[ALC_Alarm_UL_Index_MAX] = {0,};
5012
+    static int16_t PrevIwillGiveAtten[ALC_Alarm_UL_Index_MAX] ={0,};
4986 5013
 //    uint8_t tempadc[256];
4987 5014
 
4988 5015
     
4989 5016
 //    Bluecell_StructCpy(&AutoControl_Save[0],&ALC_Table_ref.DET_UL_0,sizeof(ALC_dBm_t));
4990 5017
 //    Bluecell_StructCpy(&tempadc[0],&Det_UL1.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));
4991
-    if(ALCTimerCnt > 400){
5018
+    if(ALCTimerCnt > 500){
4992 5019
         if(bluecell_Currdatastatus.ULO_ALC_ON_OFF == true){
5020
+            UL_Atten[ALC_Alarm_UL1_Index] = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_H << 8 | bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_L;
5021
+            UL_Atten[ALC_Alarm_UL2_Index] = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_H << 8 | bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_L;
5022
+            UL_Atten[ALC_Alarm_UL3_Index] = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_H << 8 | bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_L;
5023
+            UL_Atten[ALC_Alarm_UL4_Index] = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_H << 8 | bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_L;
5024
+            Main_Atten[ALC_Alarm_UL1_Index] = bluecell_Currdatastatus.ATT_UL1_H << 8 | bluecell_Currdatastatus.ATT_UL1_L;
5025
+            Main_Atten[ALC_Alarm_UL2_Index] = bluecell_Currdatastatus.ATT_UL2_H << 8 | bluecell_Currdatastatus.ATT_UL2_L;
5026
+            Main_Atten[ALC_Alarm_UL3_Index] = bluecell_Currdatastatus.ATT_UL3_H << 8 | bluecell_Currdatastatus.ATT_UL3_L;
5027
+            Main_Atten[ALC_Alarm_UL4_Index] = bluecell_Currdatastatus.ATT_UL4_H << 8 | bluecell_Currdatastatus.ATT_UL4_L;
5028
+            
4993 5029
 #if 1 // PYJ.2020.06.20_BEGIN -- 
4994 5030
             /***************************************************************************************************************/
4995 5031
             /*                                             ALC 1                                                           */
@@ -5004,22 +5040,23 @@ void ALC_Function(){ //DL
5004 5040
             
5005 5041
             Limitdata = (( bluecell_Currdatastatus.ULO_ALC_Threshold_H << 8) & 0xFF00) ;
5006 5042
             Limitdata +=  bluecell_Currdatastatus.ULO_ALC_Threshold_L ;
5043
+            
5007 5044
             Limitdata /= 10;
5008 5045
             
5009 5046
             
5010 5047
             ResdBm = AutoControl_ADC_Compare(ret,&Det_UL1.Table_Det_15_dBm_H,Det_UL1.Table_Length * 2,ALC_Table);
5011 5048
             ResultData = ResdBm;
5012
-#if 0 // PYJ.2020.06.20_BEGIN -- 
5013
-            printf("==================START================\r\n");
5049
+#if 1 // PYJ.2020.06.20_BEGIN -- 
5050
+            printf("=============ALC ON =====START================\r\n");
5014 5051
             printf("Current UL ADC VALUE : %f \r\n",ret);
5015 5052
             printf("ResdBm : UL1 : %f \r\n",ResdBm);
5016
-            printf("ResdBm  : %x /////  bluecell_Currdatastatus.ULO_Level1_H : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level1_H);
5017
-            printf("ResdBm  : %x /////  bluecell_Currdatastatus.ULO_Level1_L : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level1_L);            
5018
-            printf("==================END================\r\n");
5053
+//            printf("ResdBm  : %x /////  bluecell_Currdatastatus.ULO_Level1_H : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level1_H);
5054
+//            printf("ResdBm  : %x /////  bluecell_Currdatastatus.ULO_Level1_L : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level1_L);            
5055
+
5019 5056
 #endif // PYJ.2020.06.20_END -- 
5020 5057
 
5021 5058
             
5022
-            CurrentATTENVALUE = PE43711_Double(bluecell_Currdatastatus.ATT_UL1_H,bluecell_Currdatastatus.ATT_UL1_L);
5059
+//            CurrentATTENVALUE = PE43711_Double(bluecell_Currdatastatus.ATT_UL1_H,bluecell_Currdatastatus.ATT_UL1_L);
5023 5060
 
5024 5061
             bluecell_Currdatastatus.ULO_Level1_H = ((int16_t)ResultData & 0xFF00) >> 8;
5025 5062
             bluecell_Currdatastatus.ULO_Level1_L = ((int16_t)ResultData & 0x00FF);
@@ -5047,10 +5084,29 @@ void ALC_Function(){ //DL
5047 5084
 
5048 5085
                 bluecell_Currdatastatus.ULO_Level1_H = ((int16_t)ResultData & 0xFF00) >> 8;
5049 5086
                 bluecell_Currdatastatus.ULO_Level1_L = ((int16_t)ResultData & 0x00FF);       
5087
+                printf("ORIGIN ResdBm : %f  %d\r\n",ResdBm,Main_Atten[ALC_Alarm_UL1_Index]);
5088
+                printf("After ResdBm : %f \r\n",ResdBm);
5089
+                Limitdata += (Main_Atten[ALC_Alarm_UL1_Index] / 10);
5050 5090
                 IwillGiveAtten = ALC_Calc(ALC_Alarm_UL1_Index,CurrentATTENVALUE,Limitdata,ResdBm);
5051
-//                printf("CurrentATTENVALUE : %f I WILL GIVE ATTEN  : %d \r\n",CurrentATTENVALUE,IwillGiveAtten);  
5052
-//                printf("ADC : %f Current : %f  Threas : %d : I WILL GIVE ATTEN  : %f \r\n",ret,ResdBm , Limitdata,IwillGiveAtten);  
5091
+                //IwillGiveAtten = ALC_Calc(ALC_Alarm_UL1_Index,CurrentATTENVALUE,Limitdata,ResdBm);                
5053 5092
                 
5093
+//                ResdBm = ResdBm + (Main_Atten[ALC_Alarm_UL1_Index] / 10);
5094
+                IwillGiveAtten += UL_Atten[ALC_Alarm_UL1_Index];
5095
+                if(ResdBm <= (Limitdata - 3)){
5096
+                    if(IwillGiveAtten <= -10){
5097
+                        IwillGiveAtten += 10;
5098
+                    }
5099
+                }
5100
+
5101
+                if(UL_Atten[ALC_Alarm_UL1_Index] + IwillGiveAtten <= -200){
5102
+
5103
+                    tmpcalc = (-200 + (Main_Atten[ALC_Alarm_UL1_Index] * -1));
5104
+                    IwillGiveAtten =tmpcalc;
5105
+                }
5106
+                    
5107
+                printf(" UL_Atten[ALC_Alarm_UL1_Index] : %d I WILL GIVE ATTEN  : %d \r\n", UL_Atten[ALC_Alarm_UL1_Index],IwillGiveAtten);  
5108
+                printf("ADC : %f CURR ATT : %f  Threas : %d : I WILL GIVE ATTEN  : %d \r\n",ret,ResdBm , Limitdata,IwillGiveAtten);  
5109
+                printf("==================END================\r\n");                
5054 5110
 
5055 5111
 //                printf("CurrentATTENVALUE : %f \r\n",CurrentATTENVALUE);
5056 5112
 //                if(CurrentATTENVALUE < 20 && IwillGiveAtten != 0){
@@ -5061,13 +5117,22 @@ void ALC_Function(){ //DL
5061 5117
 //                printf("CurrentATTENVALUE : %f I WILL GIVE ATTEN  : %d \r\n",CurrentATTENVALUE,IwillGiveAtten);  
5062 5118
 //                if(IwillGiveAtten < 0)
5063 5119
 //                printf("CurrentATTENVALUE %f \r\n",CurrentATTENVALUE);
5064
-                if( (IwillGiveAtten > 0) || (CurrentATTENVALUE >= (IwillGiveAtten))){
5065
-                    tempcurratten = CurrentATTENVALUE * 10;
5066
-                    bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_H = (((uint16_t)((tempcurratten + IwillGiveAtten)) & 0xFF00) >> 8);
5067
-                    bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_L = ((uint16_t)(tempcurratten + IwillGiveAtten)) & 0x00FF;
5068
-                    CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
5120
+/*                if(ALC_Level_Save[ALC_Alarm_UL1_Index] != ResultData
5121
+                    || Limitdata != PrevLimitdata[ALC_Alarm_UL1_Index])*/
5122
+                    if(Limitdata != PrevLimitdata[ALC_Alarm_UL1_Index]
5123
+                       ||ResultData!= PrevResultData[ALC_Alarm_UL1_Index]
5124
+                       ||UL_ALC_GainAttenSet[ALC_Alarm_UL1_Index] == true){
5125
+                        if( (IwillGiveAtten > 0) || (CurrentATTENVALUE >= (IwillGiveAtten))){
5126
+                            tempcurratten = CurrentATTENVALUE * 10;
5127
+                            bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_H = (((uint16_t)((tempcurratten + IwillGiveAtten)) & 0xFF00) >> 8);
5128
+                            bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_L = ((uint16_t)(tempcurratten + IwillGiveAtten)) & 0x00FF;
5129
+                            CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
5130
+                        }
5131
+                        PrevLimitdata[ALC_Alarm_UL1_Index] = Limitdata; 
5132
+                        PrevResultData[ALC_Alarm_UL1_Index] = ResultData;
5133
+                        UL_ALC_GainAttenSet[ALC_Alarm_UL1_Index] = false;
5069 5134
                 }
5070
-                CurrentATTENVALUE = PE43711_Double(bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_H,bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_L);             
5135
+//                CurrentATTENVALUE = PE43711_Double(bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_H,bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_L);             
5071 5136
 
5072 5137
 //                 printf("CurrentATTENVALUE : %f\r\n",CurrentATTENVALUE );  
5073 5138
 //                 printf("==================END================\r\n");
@@ -5223,7 +5288,7 @@ void ALC_Function(){ //DL
5223 5288
 //            }
5224 5289
             bluecell_Currdatastatus.ULO_Level1_H = ((int16_t)ResultData & 0xFF00) >> 8;
5225 5290
             bluecell_Currdatastatus.ULO_Level1_L = ((int16_t)ResultData & 0x00FF);
5226
-#if 0 // PYJ.2020.06.20_BEGIN -- 
5291
+#if 1 // PYJ.2020.06.20_BEGIN -- 
5227 5292
             printf("============ALC_OFF======START================\r\n");
5228 5293
             printf("Current UL ADC VALUE : %f \r\n",ret);
5229 5294
             printf("ResdBm : UL1 : %f \r\n",ResdBm);
@@ -6333,7 +6398,8 @@ void ULO_ShutdownAlarmCheck(){
6333 6398
 
6334 6399
         }
6335 6400
         else{
6336
-            if(DET_UL_Shutdown_Off_AlarmTimerCnt[DET_Alarm_UL1_Shutdown_Index] >= MBIC_OFF_MAINTAIN_SEC){
6401
+            if(DET_UL_Shutdown_Off_AlarmTimerCnt[DET_Alarm_UL1_Shutdown_Index] >= MBIC_OFF_MAINTAIN_SEC
6402
+                && bluecell_Currdatastatus.ULO_Shutdown_Retry_Count1 != RETRYCNT_MAX){
6337 6403
                 bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN &= ~ALARM_ULO_SHUTDOWN_P1;
6338 6404
                 bluecell_Currdatastatus.ULO_Shutdown_Alarm1       = false;            
6339 6405
             }
@@ -6409,7 +6475,8 @@ void ULO_ShutdownAlarmCheck(){
6409 6475
 #endif // PYJ.2020.06.21_END -- 
6410 6476
         }
6411 6477
         else{
6412
-            if(DET_UL_Shutdown_Off_AlarmTimerCnt[DET_Alarm_UL2_Shutdown_Index] >= MBIC_OFF_MAINTAIN_SEC){
6478
+            if(DET_UL_Shutdown_Off_AlarmTimerCnt[DET_Alarm_UL2_Shutdown_Index] >= MBIC_OFF_MAINTAIN_SEC
6479
+                && bluecell_Currdatastatus.ULO_Shutdown_Retry_Count2!= RETRYCNT_MAX){
6413 6480
                 bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN &= ~ALARM_ULO_SHUTDOWN_P2;
6414 6481
                 bluecell_Currdatastatus.ULO_Shutdown_Alarm2       = false;            
6415 6482
             }
@@ -6452,7 +6519,8 @@ void ULO_ShutdownAlarmCheck(){
6452 6519
 
6453 6520
         }
6454 6521
         else{
6455
-            if(DET_UL_Shutdown_Off_AlarmTimerCnt[DET_Alarm_UL3_Shutdown_Index] >= MBIC_OFF_MAINTAIN_SEC){
6522
+            if(DET_UL_Shutdown_Off_AlarmTimerCnt[DET_Alarm_UL3_Shutdown_Index] >= MBIC_OFF_MAINTAIN_SEC
6523
+                && bluecell_Currdatastatus.ULO_Shutdown_Retry_Count3 != RETRYCNT_MAX){
6456 6524
                 bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN &= ~ALARM_ULO_SHUTDOWN_P3;
6457 6525
                 bluecell_Currdatastatus.ULO_Shutdown_Alarm3       = false;            
6458 6526
             }
@@ -6497,7 +6565,8 @@ void ULO_ShutdownAlarmCheck(){
6497 6565
 
6498 6566
         }
6499 6567
         else{
6500
-            if(DET_UL_Shutdown_Off_AlarmTimerCnt[DET_Alarm_UL4_Shutdown_Index] >= MBIC_OFF_MAINTAIN_SEC){
6568
+            if(DET_UL_Shutdown_Off_AlarmTimerCnt[DET_Alarm_UL4_Shutdown_Index] >= MBIC_OFF_MAINTAIN_SEC
6569
+                && bluecell_Currdatastatus.ULO_Shutdown_Retry_Count4 != RETRYCNT_MAX){
6501 6570
                 bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN &= ~ALARM_ULO_SHUTDOWN_P4;
6502 6571
                 bluecell_Currdatastatus.ULO_Shutdown_Alarm4       = false;            
6503 6572
             }

文件差異過大導致無法顯示
+ 1 - 1
STM32F103ZET_JDASMBIC.elf.launch


+ 2 - 2
Src/main.c

@@ -430,7 +430,7 @@ int main(void)  {
430 430
 //  Bluecell_AttenInitialize();
431 431
 #if 1 // PYJ.2020.05.06_BEGIN -- 
432 432
       printf("****************************************\r\n");
433
-      printf("MBIC Project _ COPY _\r\n");
433
+      printf("MBIC Project\r\n");
434 434
       printf("Build at %s %s\r\n", __DATE__, __TIME__);
435 435
       printf("Copyright (c) 2020. BLUECELL\r\n");
436 436
       printf("****************************************\r\n");
@@ -442,9 +442,9 @@ int main(void)  {
442 442
   //   printf("data %d\r\n",LedTimerCnt);
443 443
     Boot_LED_Toggle(); /*LED Check*/
444 444
     Uart_Check();      /*Usart Rx*/
445
-    ADC_Check();       /*Det Calc + DL/UL Alarm Check Function*/
446 445
     ALC_Function();    /*ALC Function*/
447 446
     AGC_Function();    /*AGC Function*/
447
+    ADC_Check();       /*Det Calc + DL/UL Alarm Check Function*/
448 448
     Alarm_Check();     /*Function to check all alarm status variables*/
449 449
 //    Uart1_Data_Send("A",1);
450 450
 //    HAL_Delay(1);