Добрый день. Прикупил в Китае такую железку: Mega 2560 PRO (Embded) CH340G/Atmega2560-16AU и модуль на MAX485. Соединил как показано на схеме: Залил вот такой скетч: Код (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 понять не могу. Ткните пожалуйста лицом в косяк кто-нибудь )
Может проблема в том что slave.begin(19200); использует Serial а не Serial1? Пробовали подключать к другому UART? Также напомню что при подключении к Serial и открытии монитора порта происходит сброс МК.
Вроде бы это не так. Я задаю параметры Modbus slave(1,1,28); первая 1 это адрес слэйва, вторая 1 это номер Serial'а. 0 - Serial, 1 - Serial1, 2-Serial2, 3 - Serial3 и 4 - программный сериал.
Ну если с Serial всё в порядке и монитор порта (или что-то подобное что создаёт DTR или соединение 1200бод ) вы не открываете, может тогда питание?