arkadiusz binder hace 5 años
padre
commit
d1d316d8a6

+ 12 - 7
SE/stuff/P5_Automation_can-dev-res-working-1930/___SUBMODULES___/P5_automation_arduino_status_submodule/P5_automation_arduino_status_submodule.ino

@@ -52,6 +52,8 @@ int test_pwm_pin = 9;
 #endif
 
  void setup(void) {
+    Serial.begin (115200);
+
     #if defined(HAS_Adafruit_SSD1306)
     //SSD1306
     display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR);
@@ -103,14 +105,14 @@ void status_pin(STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_T pin) {
               u8g2.print (" +");
               u8g2.sendBuffer();         // transfer internal memory to the display
               #endif
-           } else
+           } else {
               // Bad
               #if defined(HAS_u8g2)
           //    u8g2.setCursor (3, 20);
                u8g2.print (" -");
                u8g2.sendBuffer();         // transfer internal memory to the display
              #endif
-            
+            }
 }
 
 
@@ -147,11 +149,12 @@ void loop(void) {
     
     status_pin(out_test_status_p5_bus_1_port_6_red_led_pin);
     
-    status_pin(in_test_status_p5_bus_1_port_7_red_buttopn_pin);
+    STATUS_PHYS_PIN_INPUT_INT_ERROR_F(STATUS_SYSTEM_CONDITION_A,in_test_status_p5_bus_1_port_7_red_buttopn_pin);
+    //status_pin(in_test_status_p5_bus_1_port_7_red_buttopn_pin);
     
     status_pin(out_test_status_p5_bus_1_port_8_green_led_pin);
-    
-    status_pin(in_test_status_p5_bus_1_port_9_black_buttopn_pin);
+    STATUS_PHYS_PIN_INPUT_INT_OK_F(STATUS_SYSTEM_CONDITION_A, in_test_status_p5_bus_1_port_9_black_buttopn_pin);
+    //status_pin(in_test_status_p5_bus_1_port_9_black_buttopn_pin);
       #if defined(HAS_u8g2)
         u8g2.setCursor(0,20);
        //  u8g2.setFont(u8g2_font_m2icon_5_tf);  // choose a suitable font
@@ -168,9 +171,11 @@ void loop(void) {
     STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_OK_F(STATUS_SYSTEM_CONDITION_A, out_test_status_p5_bus_1_port_8_green_led_pin );
     STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_ERROR_F(STATUS_SYSTEM_CONDITION_A, out_test_status_p5_bus_1_port_6_red_led_pin );
        #if defined(HAS_u8g2)
-        u8g2.setCursor(0,40);
+       // u8g2.setCursor(0,40);
         //String STATUS_SYSTEM_CONDITION_A_S  ;
-          u8g2.print(String(STATUS_SYSTEM_CONDITION_A));
+          u8g2.print(String(STATUS_SYSTEM_CONDITION_A, BIN));
           u8g2.sendBuffer(); 
        #endif
+       
+       STATUS_SYSTEM_CONDITION_ERROR_COUNT_A = STATUS_SYSTEM_CONDITION_ERROR_COUNT_INIT_A ;
 }

+ 3 - 1
SE/stuff/P5_Automation_can-dev-res-working-1930/___SUBMODULES___/P5_automation_arduino_status_submodule/___CONFIG/config_status.h

@@ -4,7 +4,9 @@
 STATUS_PHYS_PIN_INPUT_T in_test_status_p5_temp_1 = A0 ;
     STATUS_PHYS_PIN_INPUT_RANGE_T in_test_status_p5_temp_1_RANGE_A = { 0 , 2000 } ;
 STATUS_PHYS_PIN_INPUT_T in_test_status_p5_temp_2 = A1 ;
-    STATUS_PHYS_PIN_INPUT_RANGE_T in_test_status_p5_temp_2_RANGE_A = { 335 , 2000 } ;
+    STATUS_PHYS_PIN_INPUT_RANGE_T in_test_status_p5_temp_2_RANGE_A = { 650 , 2000 } ;
+//    STATUS_PHYS_PIN_INPUT_RANGE_T in_test_status_p5_temp_2_RANGE_A = { 335 , 2000 } ;
+
 STATUS_PHYS_PIN_INPUT_T in_test_status_p5_temp_3 = A2 ;
     STATUS_PHYS_PIN_INPUT_RANGE_T in_test_status_p5_temp_3_RANGE_A = { 335 , 2000 } ;
 STATUS_PHYS_PIN_INPUT_T in_test_status_p5_temp_4 = A3 ;

+ 9 - 4
SE/stuff/P5_Automation_can-dev-res-working-1930/___SUBMODULES___/P5_automation_arduino_status_submodule/___main/__main_struct_status.h

@@ -1,10 +1,15 @@
 #include <Arduino.h>
 
 typedef byte STATUS_SYSTEM_CONDITION_T;  //status of system
-const STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_INIT_A    = B00000001 ; 
-const STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_UNKNOWN_A = B00000010 ; 
-const STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_ERROR_A   = B00000100 ; 
-const STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_OK_A      = B00001000 ; 
+const STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_INIT_A                     = B00000001 ; 
+const STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_UNKNOWN_A                  = B00000010 ; 
+const STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_ERROR_A                    = B00000100 ; 
+const STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_OK_A                       = B00001000 ; 
+const STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_ERROR_SET_INT_REQ_A        = B00010000 ; //interrupt requested ERROR
+const STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_ERROR_CLEAR_INT_REQ_A      = B00100000 ; //interrupt requested OK
+const STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_ERROR_TO_CLEAR_A           = B01000000 ; //interrupt requested OK
+
+
 
 typedef int STATUS_SYSTEM_CONDITION_ERROR_COUNT_T;  //status of system 
 const STATUS_SYSTEM_CONDITION_ERROR_COUNT_T STATUS_SYSTEM_CONDITION_ERROR_COUNT_INIT_A = 0 ;

+ 116 - 7
SE/stuff/P5_Automation_can-dev-res-working-1930/___SUBMODULES___/P5_automation_arduino_status_submodule/___main/__main_struct_status_func.h

@@ -41,17 +41,45 @@ void STATUS_SYSTEM_CONDITION_F(STATUS_SYSTEM_CONDITION_T &STATUS_SYSTEM_CONDITIO
              STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_ERROR_A ;
         }
         */
-        if(STATUS_SYSTEM_CONDITION_ERROR_COUNT_A == STATUS_SYSTEM_CONDITION_ERROR_COUNT_INIT_A) {
-            STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_OK_A ;
+        if(STATUS_SYSTEM_CONDITION_A & STATUS_SYSTEM_CONDITION_ERROR_A) {
+           if(STATUS_SYSTEM_CONDITION_A &   STATUS_SYSTEM_CONDITION_ERROR_CLEAR_INT_REQ_A) {
+              if(STATUS_SYSTEM_CONDITION_ERROR_COUNT_A == STATUS_SYSTEM_CONDITION_ERROR_COUNT_INIT_A) {
+                STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_A - STATUS_SYSTEM_CONDITION_ERROR_CLEAR_INT_REQ_A ;
+                STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_A - STATUS_SYSTEM_CONDITION_ERROR_A ;
+                STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_A | STATUS_SYSTEM_CONDITION_OK_A ;
+                Serial.println("E-[RQ]");
+              } 
+           }//if(STATUS_SYSTEM_CONDITION_A | STATUS_SYSTEM_CONDITION_ERROR_CLEAR_INT_REQ_A) 
+            else if(STATUS_SYSTEM_CONDITION_ERROR_COUNT_A == STATUS_SYSTEM_CONDITION_ERROR_COUNT_INIT_A) { //just flag not error but not OK
+                 STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_A - STATUS_SYSTEM_CONDITION_ERROR_A ;
+                  Serial.println("E-[#]");
+           } else {
+             Serial.println("E[n1]");
+           }
+        }// if(STATUS_SYSTEM_CONDITION_A | STATUS_SYSTEM_CONDITION_ERROR_A)
+        else if(STATUS_SYSTEM_CONDITION_A & STATUS_SYSTEM_CONDITION_ERROR_TO_CLEAR_A) {
+              Serial.println("E[c2]");
+        }
+        else if(STATUS_SYSTEM_CONDITION_ERROR_COUNT_A == STATUS_SYSTEM_CONDITION_ERROR_COUNT_INIT_A) {
+            STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_A | STATUS_SYSTEM_CONDITION_OK_A ;
+            if(STATUS_SYSTEM_CONDITION_A & STATUS_SYSTEM_CONDITION_INIT_A) {
+                STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_A - STATUS_SYSTEM_CONDITION_INIT_A ;
+            }
+            Serial.println("E-[#2]");
         } else {
-            STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_ERROR_A ;
+            STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_A | STATUS_SYSTEM_CONDITION_ERROR_A ;
+            STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_A | STATUS_SYSTEM_CONDITION_ERROR_TO_CLEAR_A ;
+            if(STATUS_SYSTEM_CONDITION_A & STATUS_SYSTEM_CONDITION_OK_A) {
+                STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_A - STATUS_SYSTEM_CONDITION_OK_A ;
+            }
+             Serial.println("E+[#3]");
         }
 }
 
 
-void STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_OK_F(STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_A, 
+void STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_OK_F(STATUS_SYSTEM_CONDITION_T &STATUS_SYSTEM_CONDITION_A, 
    STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_OK_T STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_OK_A) {
-   if(STATUS_SYSTEM_CONDITION_A == STATUS_SYSTEM_CONDITION_OK_A) {
+   if(STATUS_SYSTEM_CONDITION_A & STATUS_SYSTEM_CONDITION_OK_A) {
       digitalWrite(STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_OK_A, HIGH);
    } else {
       digitalWrite(STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_OK_A, LOW);
@@ -61,12 +89,93 @@ void STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_OK_F(STATUS_SYSTEM_CONDITION_T STAT
 
 
 
-void STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_ERROR_F(STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_A, 
+void STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_ERROR_F(STATUS_SYSTEM_CONDITION_T &STATUS_SYSTEM_CONDITION_A, 
    STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_ERROR_T STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_ERROR_A) {
-   if(STATUS_SYSTEM_CONDITION_A == STATUS_SYSTEM_CONDITION_ERROR_A) {
+   if(STATUS_SYSTEM_CONDITION_A & STATUS_SYSTEM_CONDITION_ERROR_A) {
       digitalWrite(STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_ERROR_A, HIGH);
+   } else if(STATUS_SYSTEM_CONDITION_A & STATUS_SYSTEM_CONDITION_ERROR_SET_INT_REQ_A) {
+      digitalWrite(STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_ERROR_A, HIGH);   
    } else {
       digitalWrite(STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_ERROR_A, LOW);
    }
 
+}
+
+void STATUS_PHYS_PIN_INPUT_INT_OK_F(STATUS_SYSTEM_CONDITION_T &STATUS_SYSTEM_CONDITION_A,
+    STATUS_PHYS_PIN_INPUT_INT_OK_T STATUS_PHYS_PIN_INPUT_INT_OK_A ) {
+     int state = digitalRead(STATUS_PHYS_PIN_INPUT_INT_OK_A );
+           if(state == HIGH) {
+              // Good
+              #if defined(HAS_u8g2)
+             // u8g2.setCursor (3, 20);
+              u8g2.print (" +");
+              u8g2.sendBuffer();         // transfer internal memory to the display
+              #endif
+           } else {
+              // Bad
+              if(STATUS_SYSTEM_CONDITION_A & STATUS_SYSTEM_CONDITION_ERROR_TO_CLEAR_A) {
+                #if defined(HAS_u8g2)
+                 u8g2.print (" !");
+               #endif
+               STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_A - STATUS_SYSTEM_CONDITION_ERROR_TO_CLEAR_A; 
+              }
+              
+              if(STATUS_SYSTEM_CONDITION_A & STATUS_SYSTEM_CONDITION_ERROR_SET_INT_REQ_A) {
+                #if defined(HAS_u8g2)
+                 u8g2.print (" #");
+               #endif
+               STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_A - STATUS_SYSTEM_CONDITION_ERROR_SET_INT_REQ_A; 
+              }
+              
+              
+              #if defined(HAS_u8g2)
+          //    u8g2.setCursor (3, 20);
+               u8g2.print (" -");
+               u8g2.sendBuffer();         // transfer internal memory to the display
+             #endif
+            }
+}
+
+
+
+void STATUS_PHYS_PIN_INPUT_INT_ERROR_F(STATUS_SYSTEM_CONDITION_T &STATUS_SYSTEM_CONDITION_A,
+    STATUS_PHYS_PIN_INPUT_INT_ERROR_T STATUS_PHYS_PIN_INPUT_INT_ERROR_A ) {
+     int state = digitalRead(STATUS_PHYS_PIN_INPUT_INT_ERROR_A );
+           if(state == HIGH) {
+              // Good
+              #if defined(HAS_u8g2)
+             // u8g2.setCursor (3, 20);
+              u8g2.print (" +");
+              u8g2.sendBuffer();         // transfer internal memory to the display
+              #endif
+           } else {
+              // Bad
+              if(STATUS_SYSTEM_CONDITION_A & STATUS_SYSTEM_CONDITION_ERROR_TO_CLEAR_A) {
+               
+              } else {
+               #if defined(HAS_u8g2)
+                 u8g2.print (" !");
+               #endif
+               STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_A | STATUS_SYSTEM_CONDITION_ERROR_TO_CLEAR_A; 
+              }
+              
+               if(STATUS_SYSTEM_CONDITION_A & STATUS_SYSTEM_CONDITION_ERROR_SET_INT_REQ_A) {
+               
+              } else {
+               #if defined(HAS_u8g2)
+                 u8g2.print ("#");
+               #endif
+               STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_A | STATUS_SYSTEM_CONDITION_ERROR_SET_INT_REQ_A; 
+              }
+              
+                if(STATUS_SYSTEM_CONDITION_A & STATUS_SYSTEM_CONDITION_OK_A) {
+                    STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_A - STATUS_SYSTEM_CONDITION_OK_A ;
+                } 
+              
+              #if defined(HAS_u8g2)
+          //    u8g2.setCursor (3, 20);
+               u8g2.print (" -");
+               u8g2.sendBuffer();         // transfer internal memory to the display
+             #endif
+            }
 }