Procházet zdrojové kódy

[service_sw]1)add ow_test
2) rs485 test invert recieving bites before answer

balbekova před 5 roky
rodič
revize
0391d6b04b

+ 43 - 0
service_hw/Commands/bt_6701_commands.c

@@ -93,6 +93,49 @@ void Test_U232(void)
     TEST_SetTest(TEST_WAIT);
 }
 
+#ifdef DALLAS_SENSOR_ENABLE
+void COM_TestOW(void)
+{
+    uint8_t inputState;
+    uint8_t start_state = 0;
+    uint8_t end_state = 1;
+
+    gpio_hw_config_pin(gpio_pins[WDATA1].port, gpio_pins[WDATA1].pin, GPIO_MODE_IN_CFG | 
+				GPIO_SPEED_HIGH_CFG);
+    gpio_hw_config_pin(gpio_pins[WDATA2].port, gpio_pins[WDATA2].pin, GPIO_MODE_IN_CFG | 
+				GPIO_SPEED_HIGH_CFG);
+
+    for (uint8_t i = 0; i < INPUTS_TOTAL_COUNT; i ++) {
+      vTaskDelay(100);
+    
+      gpio_set((DOUT1 + i), start_state);
+
+      vTaskDelay(100);
+          
+      if (get_state_din_outs((WDATA1 + i)) == start_state) {
+          printf("OW FAIL\r\n");
+          TEST_SetTest(TEST_WAIT);
+          return;
+      }  
+
+      gpio_set((DOUT1 + i), end_state);
+
+      vTaskDelay(100);
+      
+      if (get_state_din_outs((WDATA1 + i)) != end_state) {
+          printf("OW FAIL\r\n");
+          TEST_SetTest(TEST_WAIT);
+          return;
+      }  
+    }
+
+    vTaskDelay(100);
+
+    printf("OW OK\r\n");
+    TEST_SetTest(TEST_WAIT);
+}
+#endif
+
 #ifdef DINS_ENABLE || DOUTS_ENABLE
 /**
   * @brief  

+ 8 - 0
service_hw/Commands/commands_api.c

@@ -141,6 +141,11 @@ void vTestCommands(void *params)
             case TEST_U232 :
                 Test_U232();
             break;
+#ifdef DALLAS_SENSOR_ENABLE
+            case TEST_OW :
+                COM_TestOW();
+            break;
+#endif
 #ifdef DINS_ENABLE || DOUTS_ENABLE
             case TEST_DRY :
                 Test_DRY();
@@ -207,6 +212,9 @@ void TEST_SetTest(TEST_t state)
 void COM_TestRS485(char *str, uint8_t len)
 {
   if (str) {
+    for (uint8_t i = 0; i < len; i ++) {
+      str[i] = ~str[i];
+    }
     uint8_t sent = rs485_send_block((uint8_t *)str, len);
     sprintf(msg, "RS485 sent %d bytes", sent);
     print(msg);

+ 4 - 0
service_hw/Commands/commands_api.h

@@ -22,6 +22,7 @@
 typedef enum
 {
     TEST_WAIT = 0,
+    TEST_OW,
     TEST_DRY,
     TEST_U232,
     TEST_DEF,
@@ -50,6 +51,9 @@ typedef enum
 void TestProcessing(void);
 
 void Test_U232U485(void);
+#ifdef DALLAS_SENSOR_ENABLE
+void COM_TestOW(void);
+#endif
 #ifdef DINS_ENABLE || DOUTS_ENABLE
 void Test_DRY(void);
 #endif

+ 9 - 0
service_hw/Console/port_microrl.c

@@ -313,6 +313,15 @@ int execute (int argc, const char * const * argv)
 		print ("\n\r");
 		return 0;
 	   }
+#ifdef DALLAS_SENSOR_ENABLE
+     	/* Тест линии OW */
+      else if (strcmp (argv[i], _CMD_ONEWIRE) == 0)
+      {
+        TEST_SetTest(TEST_OW);
+        print ("\n\r");
+        return 0;
+      }
+#endif
 #ifdef PORTGW_ENABLE
       /* Отправка данных по интерфейсу RS485 (прием не проверяется) */
       else if (strcmp (argv[i], _CMD_U485) == 0)