Не работает RS485 через Serial1 при подключённом Serial

Тема в разделе "Arduino & Shields", создана пользователем YeS, 19 фев 2018.

  1. YeS

    YeS Гик

    Добрый день. Прикупил в Китае такую железку: Mega 2560 PRO (Embded) CH340G/Atmega2560-16AU и модуль на MAX485. Соединил как показано на схеме:

    [​IMG]

    Залил вот такой скетч:
    Код (C++):
    /**
    *  Modbus slave example 1:
    *  The purpose of this example is to link a data array
    *  from the Arduino to an external device.
    *
    *  Recommended Modbus Master: QModbus
    *  http://qmodbus.sourceforge.net/
    */


    #include <ModbusRtu.h>

    // data array for modbus network sharing
    uint16_t au16data[16] = {
      3, 1415, 9265, 4, 2, 7182, 28182, 8, 0, 0, 0, 0, 0, 0, 1, -1 };

    /**
    *  Modbus object declaration
    *  u8id : node id = 0 for master, = 1..247 for slave
    *  u8serno : serial port (use 0 for Serial)
    *  u8txenpin : 0 for RS-232 and USB-FTDI
    *               or any pin number > 1 for RS-485
    */

    Modbus slave(1,1,28); // this is slave @1 and RS-232 or USB-FTDI

    void setup() {
      Serial.begin(9600);
      slave.begin(19200); // baud-rate at 19200
    }

    void loop() {
      au16data[3] = millis()/1000;
      slave.poll( au16data, 16 );
    }
    Однако столкнулся со следующей проблемой. Если выдёргиваю кабель USB из Меги (отключаю Serial), мастер (поднятый на компе через конвертер) видит данный слейв. При подключённом Serial сразу связь пропадает.
    На всякий случай проверил Мегу на предмет одновременной работы Serial и Serial1 путём подключения Serial1 к блютуз модулю. Работает. Почему возникает косяк с RS485 понять не могу. Ткните пожалуйста лицом в косяк кто-нибудь )
     

    Вложения:

    • Схема.jpg
      Схема.jpg
      Размер файла:
      232,4 КБ
      Просмотров:
      2.268
  2. Sencis

    Sencis Гик

    Может проблема в том что slave.begin(19200); использует Serial а не Serial1? Пробовали подключать к другому UART? Также напомню что при подключении к Serial и открытии монитора порта происходит сброс МК.
     
    Последнее редактирование: 19 фев 2018
  3. YeS

    YeS Гик

    Вроде бы это не так. Я задаю параметры Modbus slave(1,1,28); первая 1 это адрес слэйва, вторая 1 это номер Serial'а. 0 - Serial, 1 - Serial1, 2-Serial2, 3 - Serial3 и 4 - программный сериал.
     
  4. Sencis

    Sencis Гик

    Ну если с Serial всё в порядке и монитор порта (или что-то подобное что создаёт DTR или соединение 1200бод ) вы не открываете, может тогда питание?