dtelenkov 4 days ago
parent
commit
26d6f7f6f7
2 changed files with 91 additions and 37 deletions
  1. 8 36
      .obsidian/workspace.json
  2. 83 1
      Greenstar/ksig.md

+ 8 - 36
.obsidian/workspace.json

@@ -7,46 +7,18 @@
         "id": "d9d8ae22780abcff",
         "id": "d9d8ae22780abcff",
         "type": "tabs",
         "type": "tabs",
         "children": [
         "children": [
-          {
-            "id": "51b99fe28a96fa77",
-            "type": "leaf",
-            "state": {
-              "type": "markdown",
-              "state": {
-                "file": "English/Homework/Homework 14.md",
-                "mode": "source",
-                "source": false
-              },
-              "icon": "lucide-file",
-              "title": "Homework 14"
-            }
-          },
-          {
-            "id": "3c8a385581a9a17a",
-            "type": "leaf",
-            "state": {
-              "type": "markdown",
-              "state": {
-                "file": "English/Homework/Homework 14.md",
-                "mode": "source",
-                "source": false
-              },
-              "icon": "lucide-file",
-              "title": "Homework 14"
-            }
-          },
           {
           {
             "id": "d91200382c29e428",
             "id": "d91200382c29e428",
             "type": "leaf",
             "type": "leaf",
             "state": {
             "state": {
               "type": "markdown",
               "type": "markdown",
               "state": {
               "state": {
-                "file": "ROTEK/RT-701/fix.md",
+                "file": "linux/server.md",
                 "mode": "source",
                 "mode": "source",
                 "source": false
                 "source": false
               },
               },
               "icon": "lucide-file",
               "icon": "lucide-file",
-              "title": "fix"
+              "title": "server"
             }
             }
           },
           },
           {
           {
@@ -180,8 +152,13 @@
       "bases:Создать новую базу": false
       "bases:Создать новую базу": false
     }
     }
   },
   },
-  "active": "51b99fe28a96fa77",
+  "active": "d91200382c29e428",
   "lastOpenFiles": [
   "lastOpenFiles": [
+    "ROTEK/RT-701/common.md",
+    "linux/server.md",
+    "Greenstar/ksig.md",
+    "ROTEK/RT-701/fix.md",
+    "English/Homework/Homework 14.md",
     "ROTEK/allwinner 069 070.md",
     "ROTEK/allwinner 069 070.md",
     "ROTEK/Artery testing.md",
     "ROTEK/Artery testing.md",
     "ROTEK/Arbiter, artery.md",
     "ROTEK/Arbiter, artery.md",
@@ -192,9 +169,6 @@
     "todo/common.md",
     "todo/common.md",
     "Кодинг.md",
     "Кодинг.md",
     "proGit.md",
     "proGit.md",
-    "English/Homework/Homework 14.md",
-    "ROTEK/RT-701/fix.md",
-    "ROTEK/RT-701/common.md",
     "ROTEK/bt67xx/common.md",
     "ROTEK/bt67xx/common.md",
     "English/img/65-2.jpg.~tmp",
     "English/img/65-2.jpg.~tmp",
     "English/img/65-1.jpg.~tmp",
     "English/img/65-1.jpg.~tmp",
@@ -220,8 +194,6 @@
     "English/img/61-6.jpg.~tmp",
     "English/img/61-6.jpg.~tmp",
     "English/Homework/Homework 1.md",
     "English/Homework/Homework 1.md",
     "English/Texts/Text 14.md",
     "English/Texts/Text 14.md",
-    "English/Texts/Text 13.md",
-    "linux/server.md",
     "English/img/58-4.jpg.~tmp",
     "English/img/58-4.jpg.~tmp",
     "English/img/58-3.jpg.~tmp",
     "English/img/58-3.jpg.~tmp",
     "English/img/58-2.jpg.~tmp"
     "English/img/58-2.jpg.~tmp"

+ 83 - 1
Greenstar/ksig.md

@@ -11,4 +11,86 @@
 
 
 ~={yellow}Остальное=~
 ~={yellow}Остальное=~
 - USART_3 - терминал
 - USART_3 - терминал
-- 
+- 
+### Опрос датчиков. Протокол обмена.
+
+Фиксация значений счетчиков и дискретных входов происходит с интервалом 1мс. 
+В этот момент заполняется следующая структура данных:
+
+```c
+typedef struct
+{
+    uint32_t    pack_counter; 
+    uint16_t    vertical;
+    uint16_t    horizontal;
+    uint32_t    dpl_1;
+    uint32_t    dpl_2;
+    uint8_t     flag;
+      
+} signals_t;
+
+/*
+pack_counter - увеличивается на 1 каждый раз при заполнении новой структуры
+vertical - вертикальный детектор (значения не накапливаются)
+horizontal - горизонтальный детектор (значения не накапливаются)
+dpl_1 - первый инкрементальный датчик (значения накапливаются)
+dpl_2 - второй инкрементальный датчик (значения накапливаются)
+flag - байт дискретных датчиков
+	0-ой бит - датчик начала измерения (НИ)
+	1-ый бит - датчик конца измерения (КИ)
+	2-ой бит - датчик Д1000
+*/
+```
+
+Для передачи данных используется протокол Wake.
+Структуры упаковываются в пакеты. Пакет может содержать одну или более целых структур. Частично структуры не передаются.
+
+Пакет состоит из заголовка, полезных данных и контрольной суммы.
+
+Заголовок пакета:
+|------ Байт 1 ------|------ Байт 2 ------|------ Байт 3 ------|------ Байт 4 ------|------ Байт 5 ------|
+|--- WAKE_FEND ---|------- Адрес -----|-- Номер пакета--|------Размер данных в байтах--------| 
+
+WAKE_FEND - признак начала пакета - 0x0C,
+Адрес - адрес устройства - 0x81
+Байты 4 и 5 содержат длину только полезных данных без учета заголовка и контрольной суммы.
+Номер пакета увеличивается на 1 с каждым новым пакетом.
+Контрольная сумма располагается в конце пакета и занимает один байт. Контрольная сумма рассчитывается для всего пакета, включая заголовок и блок полезных данных.
+
+```c
+uint8_t Wake::crc_8(uint8_t *data, int length)
+{
+    uint8_t crc = 0x00;
+    uint8_t extract;
+    uint8_t sum;
+    
+    for (int i = 0; i < length; i++) {
+        extract = *data;
+        for (uint8_t tmp = 8; tmp; tmp--) {
+            sum = (crc ^ extract) & 0x01;
+            crc >>= 1;
+            if (sum)
+                crc ^= 0x8C;
+            extract >>= 1;
+        }
+        data++;
+    }
+    return crc;
+}
+```
+
+Для передачи пакетов по USB используется буфер размером 512 байт. В буфер такого размера помещается порядка 29 структур, завернутых в пакет в один протокола Wake.
+
+Пример чтения данных из тестового скрипта:
+
+```python 
+def receiver_test(self):
+	while True:
+	    msg = self.serial.read(512)
+	    if msg:
+			self.recv_chank(msg)
+		else:
+			print("USB receive timeout")
+```
+
+Скрипт usb_receiver.py находится tools/