a.binder 5 年之前
父节点
当前提交
9131ca6198

+ 3 - 31
SE/stuff/P5_Automation_can-dev-res/P5_Automation_can-dev-res.ino

@@ -469,35 +469,7 @@ void setup() {  //REMEMBER NOT INITIALIZE ANY VARIABLES OR ARRAYS
   unsigned long time;
   
                 
-                ARDUINO_LOOP_LATENCY_T ARDUINO_LOOP_LATENCY_COUNTER__MAIN_END( ARDUINO_LOOP_LATENCY_T 
-                        ARDUINO_LOOP_LATENCY__MAIN_END_A)  {
-                    static ARDUINO_LOOP_LATENCY_COUNTER_T  ARDUINO_LOOP_LATENCY_COUNTER__MAIN_END_A = ARDUINO_LOOP_LATENCY__MAIN_END_A;
-                    
-                    if(ARDUINO_LOOP_LATENCY_COUNTER__MAIN_END_A == 0 ) {
-                        ARDUINO_LOOP_LATENCY_COUNTER__MAIN_END_A = ARDUINO_LOOP_LATENCY__MAIN_END_A;
-                          #if defined(DEBUG)
-                          Serial.print("] COUNTER__MAIN_END_A["); Serial.print(ARDUINO_LOOP_LATENCY_COUNTER__MAIN_END_A); Serial.print("] C["); Serial.print(ARDUINO_LOOP_LATENCY__MAIN_END_A); Serial.println("] ");
-                          #endif
-                    } else {
-                        return ARDUINO_LOOP_LATENCY_COUNTER__MAIN_END_A-- ;
-                    }
-                }
-                
-                                
-                ARDUINO_LOOP_LATENCY_T ARDUINO_LOOP_LATENCY_COUNTER__MAIN( ARDUINO_LOOP_LATENCY_T 
-                        ARDUINO_LOOP_LATENCY__MAIN_A)  {
-                    static ARDUINO_LOOP_LATENCY_COUNTER_T  ARDUINO_LOOP_LATENCY_COUNTER__MAIN_A = ARDUINO_LOOP_LATENCY__MAIN_A;
-                    
-                    if(ARDUINO_LOOP_LATENCY_COUNTER__MAIN_A == 0 ) {
-                         #if defined(DEBUG)
-                         Serial.print("] COUNTER__MAIN_A["); Serial.print(ARDUINO_LOOP_LATENCY_COUNTER__MAIN_A); Serial.print("] C["); Serial.print(ARDUINO_LOOP_LATENCY__MAIN_A); Serial.println("] ");
-                         #endif 
-                        ARDUINO_LOOP_LATENCY_COUNTER__MAIN_A = ARDUINO_LOOP_LATENCY__MAIN_A;
-                    } else {
-                        return ARDUINO_LOOP_LATENCY_COUNTER__MAIN_A-- ;
-                    }
-                }
-
+   #include "___loop/_LOOP_LATENCY_COUNTER.h"
 
 
 
@@ -529,7 +501,7 @@ register long time;
     
     
     
-    if(ARDUINO_LOOP_LATENCY_COUNTER__MAIN_END(ARDUINO_LOOP_LATENCY__MAIN_END_A) <= ARDUINO_LOOP_LATENCY_COUNTER_INIT ) {
+    if(ARDUINO_LOOP_LATENCY_COUNTER__MAIN_END(ARDUINO_LOOP_LATENCY__MAIN_END_A, ARDUINO_LOOP_LATENCY_CONTROL_FLAG_NONE) <= ARDUINO_LOOP_LATENCY_COUNTER_INIT ) {
         #if defined(DEBUG)
             #ifndef DISABLE_LOOP            
                 if(DEBUG_ACTION_TRIG == 1)                            Serial.print("] Time: " );   Serial.println(time);
@@ -596,7 +568,7 @@ register long time;
                     "123456789012345678901234567890" 
         );     */
         
-  delay(10);
+  //delay(10);
   if(DEBUG_ACTION_TRIG != DEBUG_LAST_ACTION_TRIG)   {
         Serial.print("#534   DEBUG_ACTION_TRIG[");Serial.print(DEBUG_ACTION_TRIG);Serial.print("] "); Serial.print("]  LAST_DEBUG_ACTION_TRIG[");Serial.print(DEBUG_LAST_ACTION_TRIG);Serial.println("] ");
      //   Serial.print("] COUNTER__MAIN_A["); Serial.print(ARDUINO_LOOP_LATENCY_COUNTER__MAIN_A);

+ 1 - 2
SE/stuff/P5_Automation_can-dev-res/_CAN/_CAN_func.h

@@ -4,8 +4,7 @@ void CAN_READ(
                  Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_TABLE_T*            Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_TABLE_A,
                  Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_T_TO_DELETE_T*      Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_T_TO_DELETE_A,
                  Slave_Ports_Status_T_ARDUINO_ARRAY_ASSOC_TABLE_S_Port_ID_T*  Slave_Ports_Status_T_ARDUINO_ARRAY_ASSOC_TABLE_S_Port_ID_A,
-                
-                DISPLAY_T*  DISPLAY_A ,  DISPLAY_T_ARDUINO_ATTR_ARRAY_T &DISPLAY_T_ARDUINO_ATTR_ARRAY_A
+                DISPLAY_T*  DISPLAY_A ,  DISPLAY_T_ARDUINO_ATTR_ARRAY_T &DISPLAY_T_ARDUINO_ATTR_ARRAY_A, long time
 ) {
           // If pin 2 is low, read receive buffer
             {

+ 2 - 0
SE/stuff/P5_Automation_can-dev-res/_ROTTARY_SW/_ROTTARY_SW_loop.h

@@ -30,6 +30,8 @@
     Exp_state_ON_USE_LEVEL ,
     encoderPos  //Exp_state_level_T Exp_state_level_A 
    );
+   
+   ARDUINO_LOOP_LATENCY_COUNTER__MAIN_END(ARDUINO_LOOP_LATENCY__MAIN_END_A, ARDUINO_LOOP_LATENCY_CONTROL_FLAG_BYPASS );
     
                 
            /*     

+ 3 - 3
SE/stuff/P5_Automation_can-dev-res/_Slave_Ports_I2C_func.h

@@ -204,7 +204,7 @@
                                                         //Serial.print("[I2C_INDEX_DRIVER_A[");Serial.print(I2C_INDEX_DRIVER_A);Serial.print("] [LocalPort["); Serial.print(Slave_Ports_Status_A[i].LocalPort); Serial.print("]  "); 
                                                         //Serial.print("[D209]Bef[");Serial.print(Slave_Ports_Status_A[i].Exp_state, BIN);Serial.print("]");
                                                         Slave_Ports_Status_A[i].Exp_state = Slave_Ports_Status_A[i].Exp_state | Exp_state_SET; //TODO BITTEST
-                                                        Slave_Ports_Status_A[i].Exp_state = Slave_Ports_Status_A[i].Exp_state ^ Exp_state_SET_REQ_SEND; //TODO BITTEST
+                                                        Slave_Ports_Status_A[i].Exp_state = ~ Exp_state_SET_REQ_SEND; //TODO BITTEST
                                                         //Serial.print("[D209]Aft[");Serial.print(Slave_Ports_Status_A[i].Exp_state , BIN);Serial.print("]");
                                                         Slave_Ports_Status_A[i].Exp_state_ttl = Exp_state_ttl_IS_ACTIVE ;
                                                     } else if(Slave_Ports_Status_A[i].Exp_state & Exp_state_ON ) { //TODO BINTEST
@@ -213,7 +213,7 @@
                                                         Serial.print("#149 I2C_driver ->ON Exp_state [SET]"); Serial.print(Slave_Ports_Status_A[i].Exp_state); Serial.print("]   after   [");
                                                         #endif 
                                                         Slave_Ports_Status_A[i].Exp_state = Slave_Ports_Status_A[i].Exp_state | Exp_state_SET; //TODO BITTEST
-                                                        Slave_Ports_Status_A[i].Exp_state = Slave_Ports_Status_A[i].Exp_state ^ Exp_state_SET_REQ_SEND; //TODO BITTEST
+                                                        Slave_Ports_Status_A[i].Exp_state =  ~ Exp_state_SET_REQ_SEND; //TODO BITTEST
                                                         Serial.print(BIN8_to_STRING(Slave_Ports_Status_A[i].Exp_state)); Serial.println("]  ");
                                                         Slave_Ports_Status_A[i].Exp_state_ttl = Exp_state_ttl_IS_ACTIVE ;
                                                     } else if(Slave_Ports_Status_A[i].Exp_state & Exp_state_OFF ){ //TODO BINTEST
@@ -222,7 +222,7 @@
                                                         Serial.print("#149 I2C_driver ->OFF Exp_state [SET]"); Serial.print(Slave_Ports_Status_A[i].Exp_state); Serial.print("]   after   [");
                                                         #endif 
                                                         Slave_Ports_Status_A[i].Exp_state = Slave_Ports_Status_A[i].Exp_state | Exp_state_SET; //TODO BITTEST
-                                                        Slave_Ports_Status_A[i].Exp_state = Slave_Ports_Status_A[i].Exp_state ^ Exp_state_SET_REQ_SEND; //TODO BITTEST
+                                                        Slave_Ports_Status_A[i].Exp_state =  ~ Exp_state_SET_REQ_SEND; //TODO BITTEST
                                                         Serial.print(BIN8_to_STRING(Slave_Ports_Status_A[i].Exp_state)); Serial.println("]  ");
                                                         Slave_Ports_Status_A[i].Exp_state_ttl = Exp_state_ttl_IS_ACTIVE ;
                                                     } else if(Slave_Ports_Status_A[i].Exp_state & Exp_state_BLINK ){ //TODO BINTEST

+ 1 - 1
SE/stuff/P5_Automation_can-dev-res/_Slave_Ports_Status_func.h

@@ -329,7 +329,7 @@
                                 Serial.print(" ]  #248     OFF+SET["); Serial.print(BIN8_to_STRING( Exp_state_OFF + Exp_state_SET  )); 
                                 Serial.print(" ]  #251     OFF || SET["); Serial.print(BIN8_to_STRING( Exp_state_OFF | Exp_state_SET  ));    Serial.println(" ]   ");
                             #else
-                              Serial.print("#255 will message2  Exp_state[");  Serial.print(Slave_Ports_Status_A[i].Exp_state, BIN); Serial.println("]  "); 
+                           //   Serial.print("#255 will message2  Exp_state[");  Serial.print(Slave_Ports_Status_A[i].Exp_state, BIN); Serial.println("]  "); 
                             #endif
                             }
                      

+ 42 - 0
SE/stuff/P5_Automation_can-dev-res/___loop/_LOOP_LATENCY_COUNTER.h

@@ -0,0 +1,42 @@
+  ARDUINO_LOOP_LATENCY_T ARDUINO_LOOP_LATENCY_COUNTER__MAIN_END( ARDUINO_LOOP_LATENCY_T 
+                        ARDUINO_LOOP_LATENCY__MAIN_END_A, 
+                    ARDUINO_LOOP_LATENCY_CONTROL_FLAG_T ARDUINO_LOOP_LATENCY_CONTROL_FLAG_A
+                        )  {
+                    static ARDUINO_LOOP_LATENCY_COUNTER_T  ARDUINO_LOOP_LATENCY_COUNTER__MAIN_END_A = ARDUINO_LOOP_LATENCY__MAIN_END_A;
+                    if(ARDUINO_LOOP_LATENCY_CONTROL_FLAG_A == ARDUINO_LOOP_LATENCY_CONTROL_FLAG_BYPASS) {
+                       ARDUINO_LOOP_LATENCY_COUNTER__MAIN_END_A =  ARDUINO_LOOP_LATENCY_COUNTER_INIT ;
+                       #if defined(DEBUG)
+                                  Serial.print("] ARDUINO_LOOP_LATENCY_CONTROL_FLAG_BYPASS["); 
+                          #endif
+                    } else {
+                            if(ARDUINO_LOOP_LATENCY_COUNTER__MAIN_END_A == 0 ) {
+                                ARDUINO_LOOP_LATENCY_COUNTER__MAIN_END_A = ARDUINO_LOOP_LATENCY__MAIN_END_A;
+                                  #if defined(DEBUG)
+                                  Serial.print("] COUNTER__MAIN_END_A["); Serial.print(ARDUINO_LOOP_LATENCY_COUNTER__MAIN_END_A); Serial.print("] C["); Serial.print(ARDUINO_LOOP_LATENCY__MAIN_END_A); Serial.println("] ");
+                                  #endif
+                            } else {
+                                return ARDUINO_LOOP_LATENCY_COUNTER__MAIN_END_A-- ;
+                            }
+                    }
+                }
+                
+                                
+                                
+                                
+                                
+                                
+                                
+                                
+                ARDUINO_LOOP_LATENCY_T ARDUINO_LOOP_LATENCY_COUNTER__MAIN( ARDUINO_LOOP_LATENCY_T 
+                        ARDUINO_LOOP_LATENCY__MAIN_A)  {
+                    static ARDUINO_LOOP_LATENCY_COUNTER_T  ARDUINO_LOOP_LATENCY_COUNTER__MAIN_A = ARDUINO_LOOP_LATENCY__MAIN_A;
+                    
+                    if(ARDUINO_LOOP_LATENCY_COUNTER__MAIN_A == 0 ) {
+                         #if defined(DEBUG)
+                         Serial.print("] COUNTER__MAIN_A["); Serial.print(ARDUINO_LOOP_LATENCY_COUNTER__MAIN_A); Serial.print("] C["); Serial.print(ARDUINO_LOOP_LATENCY__MAIN_A); Serial.println("] ");
+                         #endif 
+                        ARDUINO_LOOP_LATENCY_COUNTER__MAIN_A = ARDUINO_LOOP_LATENCY__MAIN_A;
+                    } else {
+                        return ARDUINO_LOOP_LATENCY_COUNTER__MAIN_A-- ;
+                    }
+                }

+ 2 - 1
SE/stuff/P5_Automation_can-dev-res/___loop/_SlaveID_loop1.h

@@ -6,7 +6,8 @@ if(!digitalRead(CAN_INTpin))                    // If pin 2 is low, read receive
                   Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_TABLE_A,
                    Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_T_TO_DELETE_A,
                   Slave_Ports_Status_T_ARDUINO_ARRAY_ASSOC_TABLE_S_Port_ID_A,
-               DISPLAY_A , DISPLAY_T_ARDUINO_ATTR_ARRAY_A
+               DISPLAY_A , DISPLAY_T_ARDUINO_ATTR_ARRAY_A, 
+               time
          );
        /*  
          

+ 3 - 2
SE/stuff/P5_Automation_can-dev-res/___loop/__main_loop_end.h

@@ -2,7 +2,7 @@
 //static ARDUINO_LOOP_LATENCY_T     ARDUINO_LOOP_LATENCY__MAIN_END_A = 10000 ; //EVERY 10 LOOPS INIT THIS LATENCY
 
 
-if(ARDUINO_LOOP_LATENCY_COUNTER__MAIN_END(ARDUINO_LOOP_LATENCY__MAIN_END_A) <= ARDUINO_LOOP_LATENCY_COUNTER_INIT )  {
+if(ARDUINO_LOOP_LATENCY_COUNTER__MAIN_END(ARDUINO_LOOP_LATENCY__MAIN_END_A, ARDUINO_LOOP_LATENCY_CONTROL_FLAG_NONE ) <= ARDUINO_LOOP_LATENCY_COUNTER_INIT )  {
            
              #if defined(DISABLE_LOOP) ||  defined(DEBUG)
                 if(DEBUG_ACTION_TRIG != DEBUG_LAST_ACTION_TRIG) { 
@@ -14,8 +14,9 @@ if(ARDUINO_LOOP_LATENCY_COUNTER__MAIN_END(ARDUINO_LOOP_LATENCY__MAIN_END_A) <= A
                Serial.print("#11534   DEBUG_ACTION_TRIG[");Serial.print(DEBUG_ACTION_TRIG);
       //  Serial.print("] COUNTER__MAIN_A["); Serial.print(ARDUINO_LOOP_LATENCY_COUNTER__MAIN_A);
        
-            
+            #if defined(DEBUG_QUEUE)
              _Slave_Ports_queue__list(Slave_Ports_Status_QUEUE_A,Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A) ;
+             #endif 
             /*  int _Slave_Ports_queue_count = _Slave_Ports_queue.count();
               int _Slave_Ports_queue_front = _Slave_Ports_queue.front();
               int _Slave_Ports_queue_back =  _Slave_Ports_queue.back();

+ 5 - 0
SE/stuff/P5_Automation_can-dev-res/___main/__main_struct.h

@@ -50,6 +50,11 @@ const ARDUINO_FUNC_STATIC_ID_COUNTER_T ARDUINO_FUNC_STATIC_ID_COUNTER_INIT = 0 ;
 typedef int ARDUINO_LOOP_LATENCY_T;
 typedef int ARDUINO_LOOP_LATENCY_COUNTER_T; //WILL increment
 const ARDUINO_LOOP_LATENCY_COUNTER_T ARDUINO_LOOP_LATENCY_COUNTER_INIT = 1 ; //
+typedef ARDUINO_LOOP_LATENCY_T  ARDUINO_LOOP_LATENCY_TASK_T; //to limit e.g. rottary button rapid transactions
+
+typedef byte ARDUINO_LOOP_LATENCY_CONTROL_FLAG_T ;
+const ARDUINO_LOOP_LATENCY_CONTROL_FLAG_T ARDUINO_LOOP_LATENCY_CONTROL_FLAG_NONE   = B00000000 ;
+const ARDUINO_LOOP_LATENCY_CONTROL_FLAG_T ARDUINO_LOOP_LATENCY_CONTROL_FLAG_BYPASS = B00000001 ;
 
 typedef bool ARDUINO_FUNCT_INIT_RESULT_T ;
 

+ 4 - 1
SE/stuff/P5_Automation_can-dev-res/___main/__main_struct_limits.h

@@ -19,4 +19,7 @@ const  ARDUINO_SIZE_MAX_T ARDUINO_SIZE_MAX_encoderPos = 256 ; //for display etc
 
 
 ARDUINO_ARRAY_time_min_run_MIN_T TASK_TYPE_T_Slave_Ports_broadcast____time_min_run_MIN_A_INCREMENT_A = 30000 ;
-ARDUINO_ARRAY_time_min_run_MIN_T TASK_TYPE_T_Slave_Ports_set_I2C______time_min_run_MIN_A_INCREMENT_A = 20000 ;
+ARDUINO_ARRAY_time_min_run_MIN_T TASK_TYPE_T_Slave_Ports_set_I2C______time_min_run_MIN_A_INCREMENT_A = 20000 ;
+
+
+const ARDUINO_LOOP_LATENCY_TASK_T ARDUINO_LOOP_LATENCY_TASK_ROTTARY_SW_loop_A = 500 ; //how to implement?