Jelajahi Sumber

no to dzialaja styczniki

a.binder 5 tahun lalu
induk
melakukan
51ee1c2fde

+ 28 - 9
SE/stuff/P5_Automation_can-dev-res-working-1930/_Slave_Ports_I2C_func_PCF8574.h

@@ -4,20 +4,39 @@
                      
        
       // LocalPort
-                       
-                      
-                      byte PCF8574_PORSTATUS = B00000000;
+                      int drvfound = 0;
+                      int drvindex = 0;
+                      int freeindx = -1;
+                      for(int drv = 0 ; drv<2 ; drv++ ) {
+                            
+                            if(PCF8574_PORSTATUS_DRIVER_A[drv].I2C_ADDRESS_A == Slave_Ports_Status_A[i].Address) {
+                                drvfound ++;
+                                drvindex = drv ;
+                                
+                            }
+                            if(PCF8574_PORSTATUS_DRIVER_A[drv].I2C_ADDRESS_A == 0) freeindx = drv ;
+                      }
+                      if(drvfound==0) {
+                        PCF8574_PORSTATUS_DRIVER_A[freeindx].I2C_ADDRESS_A = Slave_Ports_Status_A[i].Address ;
+                        PCF8574_PORSTATUS_DRIVER_A[freeindx].PCF8574_PORSTATUS_A = B00000000 ;
+                        drvindex = freeindx ;
+                      } else {
+                        
+                      }
                       
-                      if(Slave_Ports_Status_A[i].Exp_state_level_A == 0) { //Address
-                        bitWrite(PCF8574_PORSTATUS,Slave_Ports_Status_A[i].LocalPort,0 );
+                       
+                      Serial.print(" PCF8574[ ind");Serial.print(drvindex);Serial.print("] ");  
+                         Serial.print(String(PCF8574_PORSTATUS_DRIVER_A[drvindex].PCF8574_PORSTATUS_A,BIN));  
+                      if(Slave_Ports_Status_A[i].Exp_state_level_A == 0) { //
+                        bitWrite(PCF8574_PORSTATUS_DRIVER_A[drvindex].PCF8574_PORSTATUS_A,Slave_Ports_Status_A[i].LocalPort,0 );
                       } else {
-                        bitWrite(PCF8574_PORSTATUS,Slave_Ports_Status_A[i].LocalPort,1 );
+                        bitWrite(PCF8574_PORSTATUS_DRIVER_A[drvindex].PCF8574_PORSTATUS_A,Slave_Ports_Status_A[i].LocalPort,1 );
                       }
                       
                         Serial.print(" PCF8574[");  
-                         Serial.print(String(PCF8574_PORSTATUS,BIN));  
-                         Wire.beginTransmission(PCF8574_PORSTATUS);
-                          Wire.write(PCF8574_PORSTATUS);
+                         Serial.print(String(PCF8574_PORSTATUS_DRIVER_A[drvindex].PCF8574_PORSTATUS_A,BIN));  
+                         Wire.beginTransmission(Slave_Ports_Status_A[i].Address);
+                          Wire.write(PCF8574_PORSTATUS_DRIVER_A[drvindex].PCF8574_PORSTATUS_A);
                          Wire.endTransmission();
                       //byte write_cmd = PCF8574_PORSTATUS | Slave_Ports_Status_A[i].LocalPort
                       

+ 2 - 2
SE/stuff/P5_Automation_can-dev-res-working-1930/___CONFIG/0x35/config_Active_ControllerID_0x35.h

@@ -5,14 +5,14 @@
 #define HAS_TFT_ILI9163C
 //#define HAS_TFT_ILI9163C__ROTATED
 #define HAS_I2C_driver_Adafruit_PWMServoDriver 
-#define DEBUG_I2C_driver_Adafruit_PWMServoDriver
+//#define DEBUG_I2C_driver_Adafruit_PWMServoDriver
 //#define HAS_CAN
 
 #define HAS__PCINT_setup //to allow interrupts
 
 //#define DISABLE_TASK_TYPE_T_DISPLAY_queue_pop________
 //#error
-#define DEBUG 5 
+//#define DEBUG 5 
 
 //#define DISABLE_LOOP //To debug and disable any output
 

+ 23 - 4
SE/stuff/P5_Automation_can-dev-res-working-1930/___main/__main_I2C_struc.h

@@ -7,7 +7,8 @@ typedef int I2C_ADDRESS_T ;
 typedef ARDUINO_ARRAY_INDEX_DRIVER_T I2C_INDEX_DRIVER_T; 
 
 
-
+const I2C_ADDRESS_T  I2C_ADDRESS_0x20  = 0x20 ; 
+const I2C_ADDRESS_T  I2C_ADDRESS_0x24  = 0x24 ;
 const I2C_ADDRESS_T  I2C_ADDRESS_0x40  = 0x40 ;
 const I2C_ADDRESS_T  I2C_ADDRESS_0x41  = 0x41 ;
 const I2C_ADDRESS_T  I2C_ADDRESS_0x42  = 0x42 ;
@@ -19,6 +20,27 @@ const I2C_ADDRESS_T  I2C_ADDRESS_0x44  = 0x44 ;
 
 
 
+typedef byte PCF8574_PORSTATUS_T ;
+
+struct PCF8574_PORSTATUS_DRIVER_S {
+    I2C_ADDRESS_T  I2C_ADDRESS_A = 0  ;
+    PCF8574_PORSTATUS_T PCF8574_PORSTATUS_A = B00000000;
+};
+
+typedef PCF8574_PORSTATUS_DRIVER_S PCF8574_PORSTATUS_DRIVER_T ;
+
+PCF8574_PORSTATUS_DRIVER_T PCF8574_PORSTATUS_DRIVER_A[2] ;
+// PCF8574_PORSTATUS_DRIVER_A[0].I2C_ADDRESS_A  = 0x20 ;
+// = {
+//    { 0x20, B00000000} ,
+//    { 0x24, B00000000}  
+//};
+
+
+
+
+
+
 struct I2C_ARRAY_DRIVER_S {
     I2C_ADDRESS_T I2C_ADDRESS_A;
    // ARDUINO_ARRAY_DRIVER_T;
@@ -70,6 +92,3 @@ I2C_INDEX_DRIVER_A[1] = { //todo dynamic
         ARDUINO_ARRAY_INDEX_DRIVER_STATUS_TO_INIT_A //ARDUINO_ARRAY_DRIVER_T;
     };
 */
-
-
-