I am new at ESP32 and I am trying to setup modbus. When the codes come on error = master_interface_ptr->start(); inside the mbc_master_start(); I cant see the printf("master_init() !\n"); section. All codes below.
1. I created an new project.
2. I got the example from the esp-idf about modbus and applied it. That is it?
I dont know should I perform any extra steps.
- #include <stdio.h>
- #include <string.h>
- #include "sdkconfig.h"
- #include "freertos/FreeRTOS.h"
- #include "freertos/task.h"
- #include "esp_system.h"
- #include "esp_spi_flash.h"
- #include "mbcontroller.h"
- #include "modbus_params.h"
- #include "esp_log.h"
- void app_main(void)
- {
- printf("master_init() !\n");
- ESP_ERROR_CHECK(master_init());
- }
- static esp_err_t master_init(void)
- {
- mb_communication_info_t comm =
- {
- .port = MB_PORT_NUM, // Serial port number
- .mode = MB_MODE_RTU, // Modbus mode of communication (MB_MODE_RTU or MB_MODE_ASCII)
- .baudrate = 9600, // Modbus communication baud rate
- .parity = MB_PARITY_NONE // parity option for serial port
- };
- void* master_handler = NULL;
- esp_err_t err = mbc_master_init(MB_PORT_SERIAL_MASTER, &master_handler);
- MB_RETURN_ON_FALSE((master_handler != NULL), ESP_ERR_INVALID_STATE, TAG,
- "mb controller initialization fail.");
- MB_RETURN_ON_FALSE((err == ESP_OK), ESP_ERR_INVALID_STATE, TAG,
- "mb controller initialization fail, returns(0x%x).",
- (uint32_t)err);
- err = mbc_master_setup((void*)&comm);
- MB_RETURN_ON_FALSE((err == ESP_OK), ESP_ERR_INVALID_STATE, TAG,
- "mb controller setup fail, returns(0x%x).",
- (uint32_t)err);
- // Set UART pin numbers
- err = uart_set_pin(MB_PORT_NUM, 1, 3, 22, UART_PIN_NO_CHANGE);
- err = mbc_master_start();
- // MB_RETURN_ON_FALSE((err == ESP_OK), ESP_ERR_INVALID_STATE, TAG,
- // "mb controller start fail, returns(0x%x).",
- // (uint32_t)err);
- // MB_RETURN_ON_FALSE((err == ESP_OK), ESP_ERR_INVALID_STATE, TAG,
- // "mb serial set pin failure, uart_set_pin() returned (0x%x).", (uint32_t)err);
- //
- // // Set driver mode to Half Duplex
- // err = uart_set_mode(MB_PORT_NUM, UART_MODE_RS485_HALF_DUPLEX);
- // MB_RETURN_ON_FALSE((err == ESP_OK), ESP_ERR_INVALID_STATE, TAG,
- // "mb serial set mode failure, uart_set_mode() returned (0x%x).", (uint32_t)err);
- //
- // vTaskDelay(5);
- // err = mbc_master_set_descriptor(&device_parameters, 1);
- // MB_RETURN_ON_FALSE((err == ESP_OK), ESP_ERR_INVALID_STATE, TAG,
- // "mb controller set descriptor fail, returns(0x%x).",
- // (uint32_t)err);
- // ESP_LOGI(TAG, "Modbus master stack initialized...");
- return err;
- }