a.binder 5 năm trước cách đây
mục cha
commit
6fb0521913

+ 2 - 2
SE/stuff/P5_Automation_can-dev-res/P5_Automation_can-dev-res.ino

@@ -81,14 +81,14 @@
 //#define HAS_LCD1602 
 //#define HAS_ROTTARY_SW
 
-//#define DEBUG_I2C_driver_Adafruit_PWMServoDriver
+#define DEBUG_I2C_driver_Adafruit_PWMServoDriver
 //#define DEBUG_CAN
 //#define DEBUG_QUEUE
 //#define DEBUG_QUEUE_ASSERT
 //#define DEBUG_QUEUE_WAIT 500
 //#define DEBUG_STRUCT_INIT
 //#define DEBUG_STORAGE_QUEUE_TEST 
-#define DEBUG_ARDUINO_ATTR_ARRAY_S__commit_added_element_QUEUE
+//#define DEBUG_ARDUINO_ATTR_ARRAY_S__commit_added_element_QUEUE
 //#define DEBUG_ARDUINO_ARRAY_INDEX_NEXT_LOCK
 //#define HAS__PCINT_setup //to allow interrupts
 //#define DEBUG_TASK_TYPE_T_Slave_Ports_broadcast____

+ 1 - 3
SE/stuff/P5_Automation_can-dev-res/_PortStates_struct.h

@@ -3,9 +3,7 @@ typedef  byte Exp_state_T ;
 
  const  Exp_state_T Exp_state_OFF          =  B00000001 ; 
  const  Exp_state_T Exp_state_ON           =  B00000010 ;
- const  Exp_state_T Exp_state_ON_LOW       =  B00000100 ; // = pwm 10
- const  Exp_state_T Exp_state_ON_MED       =  B00001000 ; // = pwm * 10
- const  Exp_state_T Exp_state_ON_HI        =  B00010000 ; // = pwm * 2
+ const  Exp_state_T Exp_state_ON_USE_LEVEL =  B00000100 ; // use Exp_state_level 0-255
  const  Exp_state_T Exp_state_BLINK        =  B00100000 ;
  const  Exp_state_T Exp_state_SET          =  B01000000 ; //when was initialized and set output
  const  Exp_state_T Exp_state_ERROR        =  B10000000 ;

+ 31 - 11
SE/stuff/P5_Automation_can-dev-res/_ROTTARY_SW/_ROTTARY_SW_loop.h

@@ -7,17 +7,37 @@
     oldEncPos = encoderPos;
     int pwmVal = encoderPos * 5 ;
     if (pwmVal == 0 ) pwmVal = 1; 
-    if(not(I2C_INDEX_DRIVER_A > 0)) {
-    //I2C_INDEX_DRIVER_A = Adafruit_PWMServoDriver__get_PRIMARY_KET_T(Adafruit_PWMServoDriver_A,  I2C_ADDRESS_0x40) ;
-     I2C_INDEX_DRIVER_A = Adafruit_PWMServoDriver__get_PRIMARY_KET_T(   Adafruit_PWMServoDriver_A,Adafruit_PWMServoDriver_ATTR_ARRAY_A ,   0x40);
-    }
-     Serial.print("#550 CLK_AAdafruit_PWMServoDriver: #[");  Serial.print(encoderPos);
-     Serial.print("] I2C_INDEX_DRIVER_A [");  Serial.print(I2C_INDEX_DRIVER_A); 
-      Serial.println(" ] ");   
-     //Adafruit_PWMServoDriver_0X40.setPWM(1, 0, map(encoderPos, 0, 180, SERVOMIN, SERVOMAX));
-    // Adafruit_PWMServoDriver_0X40.setPWM(2, encoderPos * 5, encoderPos * 50);
-     if(I2C_INDEX_DRIVER_A>0)  Adafruit_PWMServoDriver_A[I2C_INDEX_DRIVER_A].Adafruit_PWMServoDriver_V.setPWM(2, pwmVal, pwmVal * 10);
-
+   
+   TASK_PORT_ASSOC_T TASK_PORT_ASSOC_A={
+        2,
+        Active_ControllerID_HEX,
+        0
+   };
+   
+   Slave_Ports_action_func(Slave_Ports_Status_QUEUE_A,  Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A, Slave_Ports_Status_A ,
+    Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A , TASK_TYPE_T_request_set_new_Exp_state , //TASK_TYPE_T TASK_TYPE_A,
+    //ARDUINO_ARRAY_ATTR_T Slave_Ports_Status_T_INDEX , //index of port we want to manipulate
+    TASK_PORT_ASSOC_A, //
+    time, 
+    time, //, 
+    ARDUINO_ARRAY_INDEX_NOT_SET , //ARDUINO_ARRAY_INDEX_T DISPLAY_ARDUINO_ARRAY_INDEX_A , 
+    Exp_state_ON_USE_LEVEL ,
+    encoderPos  //Exp_state_level_T Exp_state_level_A 
+   );
+    
+                
+           /*     
+                 if(not(I2C_INDEX_DRIVER_A > 0)) {
+                 //I2C_INDEX_DRIVER_A = Adafruit_PWMServoDriver__get_PRIMARY_KET_T(Adafruit_PWMServoDriver_A,  I2C_ADDRESS_0x40) ;
+                  I2C_INDEX_DRIVER_A = Adafruit_PWMServoDriver__get_PRIMARY_KET_T(   Adafruit_PWMServoDriver_A,Adafruit_PWMServoDriver_ATTR_ARRAY_A ,   0x40);
+                 }
+                  Serial.print("#550 CLK_AAdafruit_PWMServoDriver: #[");  Serial.print(encoderPos);
+                  Serial.print("] I2C_INDEX_DRIVER_A [");  Serial.print(I2C_INDEX_DRIVER_A); 
+                   Serial.println(" ] ");   
+                  //Adafruit_PWMServoDriver_0X40.setPWM(1, 0, map(encoderPos, 0, 180, SERVOMIN, SERVOMAX));
+                 // Adafruit_PWMServoDriver_0X40.setPWM(2, encoderPos * 5, encoderPos * 50);
+                  if(I2C_INDEX_DRIVER_A>0)  Adafruit_PWMServoDriver_A[I2C_INDEX_DRIVER_A].Adafruit_PWMServoDriver_V.setPWM(2, pwmVal, pwmVal * 10);
+        */
 
 //DISPLAY_DEV.print("#550 CLK_AAdafruit_PWMServoD");
 

+ 24 - 11
SE/stuff/P5_Automation_can-dev-res/_Slave_Ports_I2C_func.h

@@ -15,7 +15,7 @@
             time_min_run_T time_min_run_A
         //tasks
         ,TASK_TYPE_T TASK_TYPE_A,
-        TASK_PORT_ASSOC_T TASK_PORT_ASSOC_A   , 
+        TASK_PORT_ASSOC_T &TASK_PORT_ASSOC_A   , 
         Adafruit_PWMServoDriver_T* Adafruit_PWMServoDriver_A
     ) {     //{1
     
@@ -65,7 +65,18 @@
                
     int i;
     int res;
-    for(i=ARDUINO_ARRAY_INDEX_FIRST;i <= (ARDUINO_ARRAY_INDEX_FIRST + Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A) ;i++) {
+    int i_first;
+    int i_max ; 
+    if(TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX > 0) {
+        Serial.println("51[ACTION][USE][ASSOC]");
+        i_first = TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX ; 
+        i_max = TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX ;
+    } else {
+        i_first = ARDUINO_ARRAY_INDEX_FIRST;
+        i_max = (ARDUINO_ARRAY_INDEX_FIRST + Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A) ;
+    }
+    
+    for(i=i_first;i <= i_max ;i++) {
      #if defined(DEBUG) || defined(DEBUG_I2C_driver_Adafruit_PWMServoDrive)
                 Serial.print("#69PWC[");  Serial.print(Slave_Ports_Status_A[i].I2C_port);   Serial.print("]TTL[");  Serial.print(Slave_Ports_Status_A[i].Exp_state_ttl);  Serial.println("] "); 
                     if(Slave_Ports_Status_A[i].Exp_state_ttl > 30) Serial.print(" [>30] ");
@@ -188,15 +199,17 @@
                                     #if defined(DEBUG_I2C_driver_Adafruit_PWMServoDrive)
                                      Serial.print("#163   [PortTypes*]   ");
                                      #endif
-                                                    if(Slave_Ports_Status_A[i].Exp_state & Exp_state_ON ) { //TODO BINTEST
-                                                        int PWM_STATE = 1 ;
-                                                        if(Slave_Ports_Status_A[i].Exp_state & Exp_state_ON_LOW) PWM_STATE = PWM_STATE * 10; 
-                                                        if(Slave_Ports_Status_A[i].Exp_state & Exp_state_ON_MED) PWM_STATE = PWM_STATE * 10;
-                                                        if(Slave_Ports_Status_A[i].Exp_state & Exp_state_ON_HI) PWM_STATE = PWM_STATE * 2; 
-                                                        
-                                                        if(PWM_STATE == 1) PWM_STATE = 3000;
-                                                        
-                                                        Adafruit_PWMServoDriver_A[I2C_INDEX_DRIVER_A].Adafruit_PWMServoDriver_V.setPWM(Slave_Ports_Status_A[i].LocalPort, PWM_STATE, PWM_STATE);
+                                                    
+                                                    if(Slave_Ports_Status_A[i].Exp_state & Exp_state_ON_USE_LEVEL ) { //TODO BINTEST
+                                                        Adafruit_PWMServoDriver_A[I2C_INDEX_DRIVER_A].Adafruit_PWMServoDriver_V.setPWM(Slave_Ports_Status_A[i].LocalPort, Slave_Ports_Status_A[i].Exp_state_level_A, Slave_Ports_Status_A[i].Exp_state_level_A); //todo  Exp_state_ON_USE_LEVEL
+                                                        #if defined(DEBUG_I2C_driver_Adafruit_PWMServoDrive)
+                                                        Serial.print("#149 I2C_driver ->Exp_state_ON_USE_LEVEL 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
+                                                        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_ON ) { //TODO BINTEST
+                                                        Adafruit_PWMServoDriver_A[I2C_INDEX_DRIVER_A].Adafruit_PWMServoDriver_V.setPWM(Slave_Ports_Status_A[i].LocalPort, 1000, 1000); //todo  Exp_state_ON_USE_LEVEL
                                                         #if defined(DEBUG_I2C_driver_Adafruit_PWMServoDrive)
                                                         Serial.print("#149 I2C_driver ->ON Exp_state [SET]"); Serial.print(Slave_Ports_Status_A[i].Exp_state); Serial.print("]   after   [");
                                                         #endif 

+ 13 - 0
SE/stuff/P5_Automation_can-dev-res/_Slave_Ports_Status_func.h

@@ -275,6 +275,19 @@
                                      } else {
                                       message2.concat(" ?");//E: 
                             
+                            
+                            
+                                  if(Slave_Ports_Status_A[i].Exp_state & Exp_state_ON_USE_LEVEL ) {
+                                    message2.concat(" ["); message2.concat(Slave_Ports_Status_A[i].Exp_state_level_A); message2.concat("] ");
+                                      /*if(Slave_Ports_Status_A[i].Exp_state_level_A < 10 ) message2.concat(" [___] ");//E:
+                                      else if(Slave_Ports_Status_A[i].Exp_state_level_A < 100 )  message2.concat("  [#___] ");//E:
+                                      else if(Slave_Ports_Status_A[i].Exp_state_level_A < 1000 ) message2.concat("  [##__] ");//E:
+                                      else if(Slave_Ports_Status_A[i].Exp_state_level_A < 2000 ) message2.concat("  [###_] ");//E:
+                                      else if(Slave_Ports_Status_A[i].Exp_state_level_A >= 2000 ) message2.concat(" [####] ");//E:
+                                      */
+                                    }
+                            
+                            
                             }
                             #if defined(DEBUG) > 7
                                 Serial.print("#228 debug BIN  #i["); Serial.print(i);  Serial.print("] Exp_state_s["); Serial.print(Exp_state_s);  Serial.print("]    exp_state["); Serial.print(Slave_Ports_Status_A[i].Exp_state); Serial.print("]    BIN[");  Serial.print(Slave_Ports_Status_A[i].Exp_state, BIN); Serial.print("]    [   ");

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

@@ -15,6 +15,9 @@ const IS_gone_T IS_gone_FALSE = false ;
 
 #define I2C_port_DEFAULT 0x01
 
+
+typedef int Exp_state_level_T ;
+
  struct Slave_Ports_Status_S {
   Port_ID_T  Port_ID ; //global id for device //const char * const _Protocol;
   int  _Slave_ID; //Device which orginated port   //remote id - use FF for broadcast
@@ -56,7 +59,7 @@ const IS_gone_T IS_gone_FALSE = false ;
   I2C_driver_T I2C_driver; //0x00 - not driver, 0x01 Adafruit_PWMServoDriver.h
   IS_Local_T IS_Local_A; // Define if port is local or remote added
   IS_gone_T IS_gone_A; // Define port is gone timoiuted
-  
+  Exp_state_level_T Exp_state_level_A ;
 } ;
 
 typedef struct Slave_Ports_Status_S Slave_Ports_Status_T;

+ 21 - 6
SE/stuff/P5_Automation_can-dev-res/_Slave_Ports_action_func.h

@@ -12,27 +12,35 @@ Slave_Ports_Status_QUEUE_T* Slave_Ports_Status_QUEUE_A,
     long time_seq_id, 
     long time_min_run , //, 
     ARDUINO_ARRAY_INDEX_T DISPLAY_ARDUINO_ARRAY_INDEX_A , 
-    Exp_state_T Exp_state_A 
-    
+    Exp_state_T Exp_state_A ,
+    Exp_state_level_T Exp_state_level_A 
     )  {
     int i;
+    int flag_sent_CAN = 0;
+    int flag_set_LOCAL = 0 ;
     
     if(TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX > 0 ) {
         if(Slave_Ports_Status_A[TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX].Port_ID > 0 ) {
                 Slave_Ports_Status_A[TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX].Exp_state = Exp_state_A ; 
                 Slave_Ports_Status_A[TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX].Exp_state_ttl = Exp_state_ttl_TO_REFRESH ;
-                _Slave_Ports_queue__add(  Slave_Ports_Status_QUEUE_A, Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A ,
-                     TASK_TYPE_T_request_set_new_Exp_state  ,TASK_PORT_ASSOC_A ,time_seq_id, time_min_run  , ARDUINO_ARRAY_INDEX_NOT_SET ) ;    
+                Slave_Ports_Status_A[TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX].Exp_state_level_A = Exp_state_level_A ;
+                if(Slave_Ports_Status_A[TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX].IS_Local_A == IS_Local_TRUE) flag_set_LOCAL ++ ;
+                if(Slave_Ports_Status_A[TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX].IS_Local_A == IS_Local_FALSE) flag_sent_CAN ++ ;
+                //_Slave_Ports_queue__add(  Slave_Ports_Status_QUEUE_A, Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A ,
+                //     TASK_TYPE_T_request_set_new_Exp_state  ,TASK_PORT_ASSOC_A ,time_seq_id, time_min_run  , ARDUINO_ARRAY_INDEX_NOT_SET ) ;    
         }
         
     } else if((TASK_PORT_ASSOC_A.Port_ID > 0) and (TASK_PORT_ASSOC_A._Slave_ID >0)) {
         for(i = ARDUINO_ARRAY_INDEX_FIRST ; i<= Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A ; i++) {
                 if((Slave_Ports_Status_A[i].Port_ID == TASK_PORT_ASSOC_A.Port_ID) and (Slave_Ports_Status_A[i]._Slave_ID == TASK_PORT_ASSOC_A._Slave_ID)) {
                       Slave_Ports_Status_A[i].Exp_state = Exp_state_A ; 
+                      Slave_Ports_Status_A[i].Exp_state_level_A = Exp_state_level_A ;
                      Slave_Ports_Status_A[i].Exp_state_ttl = Exp_state_ttl_TO_REFRESH ;
                      TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX = i ;
-                    _Slave_Ports_queue__add(  Slave_Ports_Status_QUEUE_A, Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A ,
-                     TASK_TYPE_T_request_set_new_Exp_state  ,TASK_PORT_ASSOC_A ,time_seq_id, time_min_run  , ARDUINO_ARRAY_INDEX_NOT_SET ) ; 
+                     if(Slave_Ports_Status_A[i].IS_Local_A == IS_Local_TRUE) flag_set_LOCAL ++ ;
+                      if(Slave_Ports_Status_A[i].IS_Local_A == IS_Local_FALSE) flag_sent_CAN ++ ;
+                   // _Slave_Ports_queue__add(  Slave_Ports_Status_QUEUE_A, Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A ,
+                   //  TASK_TYPE_T_request_set_new_Exp_state  ,TASK_PORT_ASSOC_A ,time_seq_id, time_min_run  , ARDUINO_ARRAY_INDEX_NOT_SET ) ; 
                 }
         }          
     
@@ -41,7 +49,14 @@ Slave_Ports_Status_QUEUE_T* Slave_Ports_Status_QUEUE_A,
       Serial.println("25[ACTION][ERR]");
     }
     
+    if(flag_sent_CAN > 0 ) {
+        Serial.println("51[ACTION][CAN][todo]");
     
+    } else if(flag_set_LOCAL > 0 ) {
+        Serial.println("51[ACTION][LOCAL][ADD][TASK_TYPE_T_Slave_Ports_set_I2C______]");
+         _Slave_Ports_queue__add(  Slave_Ports_Status_QUEUE_A, Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A ,
+                     TASK_TYPE_T_Slave_Ports_set_I2C______  ,TASK_PORT_ASSOC_A ,time_seq_id, time_min_run  , ARDUINO_ARRAY_INDEX_NOT_SET ) ; 
+    }
            
    
     }

+ 2 - 2
SE/stuff/P5_Automation_can-dev-res/___CONFIG/0x101/config_Slave_Ports_LOCAL_0x101_init.h

@@ -24,7 +24,7 @@ ARDUINO_FUNCT_INIT_RESULT_T _Slave_Ports_LOCAL_init(
                                     Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_T_TO_DELETE_A,
                                     Slave_Ports_Status_T_ARDUINO_ARRAY_ASSOC_TABLE_S_Port_ID_A,
                                 1,  // int  Port_ID,
-                                Active_ControllerID ,  //int  _Slave_ID,
+                                Active_ControllerID_HEX ,  //int  _Slave_ID,
                                 PortTypes_PWM_EXP_I2C , //int  PortTypes,
                                 0x40 ,  //int  Address,
                                 1 , //int  LocalPort,
@@ -44,7 +44,7 @@ ARDUINO_FUNCT_INIT_RESULT_T _Slave_Ports_LOCAL_init(
                                     Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_T_TO_DELETE_A,
                                     Slave_Ports_Status_T_ARDUINO_ARRAY_ASSOC_TABLE_S_Port_ID_A,
                                 2,  // int  Port_ID,
-                                Active_ControllerID ,  //int  _Slave_ID,
+                                Active_ControllerID_HEX ,  //int  _Slave_ID,
                                 PortTypes_PWM_EXP_I2C ,// | PortTypes_SERVO //int  PortTypes,
                                 0x40 ,  //int  Address,
                                 2 , //int  LocalPort,