diff --git a/controller/fw/embed/src/main.cpp b/controller/fw/embed/src/main.cpp index 87957b9..1467aef 100644 --- a/controller/fw/embed/src/main.cpp +++ b/controller/fw/embed/src/main.cpp @@ -140,8 +140,7 @@ void send_id() { uint8_t id = *(volatile uint32_t*)ADDR_VAR_ID; FLASH->CR |= FLASH_CR_LOCK; CAN_TX_msg.id = id; - CAN_TX_msg.buf[0] = 0x22; - memcpy(&CAN_TX_msg.buf[1], &id, sizeof(id)); + memcpy(&CAN_TX_msg.buf[0], &id, sizeof(id)); Can.write(CAN_TX_msg); } @@ -205,11 +204,12 @@ void send_data() { void listen_can() { uint8_t reg_id = CAN_inMsg.id; - if (CAN_inMsg.buf[0] == REG_WRITE) { + if (CAN_inMsg.buf[0] == *(volatile uint8_t*)ADDR_VAR_ID) { + if (CAN_inMsg.buf[1] == REG_WRITE) { switch (reg_id) { case REG_ID: /* setup new id */ - setup_id(CAN_inMsg.buf[1]); + setup_id(CAN_inMsg.buf[2]); break; case REG_LED_BLINK: @@ -220,7 +220,7 @@ void listen_can() { break; case MOTOR_ENABLED: - if (CAN_inMsg.buf[1] == 1) { + if (CAN_inMsg.buf[2] == 1) { motor.enable(); motor_control_inputs.motor_enabled = 1; } else { @@ -232,7 +232,7 @@ void listen_can() { default: break; } -} else if (CAN_inMsg.buf[0] == REG_READ) { +} else if (CAN_inMsg.buf[1] == REG_READ) { switch (reg_id) { case REG_ID: send_id(); @@ -242,6 +242,7 @@ void listen_can() { break; } } + } } diff --git a/controller/fw/embed/test/python_test_id.py b/controller/fw/embed/test/python_test_id.py index d59908c..8a8797d 100644 --- a/controller/fw/embed/test/python_test_id.py +++ b/controller/fw/embed/test/python_test_id.py @@ -8,15 +8,15 @@ def send_write_read_requests(): # Конфигурация сообщений (ЗАПОЛНИТЕ ВАШИ ЗНАЧЕНИЯ) write_msg = { 'arbitration_id': 0x01, # CAN ID для записи - 'data': [0xA0, 0x69, 0x00, 0x00], # Данные для записи (4 байта) + 'data': [0x27, 0xA0, 0xFF, 0x00], # Данные для записи (4 байта) 'description': "Установка id устройства" } read_msg = { 'arbitration_id': 0x01, # CAN ID для чтения - 'data': [0x99], # Команда запроса данных + 'data': [0xFF,0x99], # Адрес новый + команда запроса данных 'description': "Запрос id устройства", - 'response_id': 0x69, # Ожидаемый ID ответа + 'response_id': 0xFF, # Ожидаемый ID ответа 'timeout': 1.0 # Таймаут ожидания ответа (сек) } @@ -31,7 +31,7 @@ def send_write_read_requests(): print(f"Запись: ID={hex(msg.arbitration_id)}, Данные={list(msg.data)}") # Ждем обработки команды устройством - time.sleep(1.5) + time.sleep(2.0) # 2. Отправка запроса чтения и ожидание ответа print("\nОтправка запроса чтения...")