Неправильный вывод на пинах RS-232

gecheim
Offline
Зарегистрирован: 03.03.2019

Здравствуйте.

Столкнулся с проблемой при разработке под Arduino nano. Передаваемые данные по RS-232 интерфейсу, который открывается через USB, соответствуют написанному в скетче и меня удовлетворяют, но при подключении к пинам входа и выхода на плате получается совсем иной результат.

Мне необходимо работать именно с пинами, так как надо подключаться не к компьютеру, а к другому устройству.

Пробовал использовать другие пины, библиотеками AltSoftSerial и SoftwareSerial, но на указанных им пинах вообще не увидел потока данных.

Подскажите с чем может быть связана такая проблема и в сторону чего надо смотреть для её решения.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Тут без хрустального шара никак, прости Евгений, пошел оттирать его от пыли.

Уважаемый, а Вы пока может Ваши программы опубликуете?

sadman41
Offline
Зарегистрирован: 19.10.2016

Схему соединений в развернутом виде предъявите. Сдаётся мне, что вам нужно прикладывать MAX232 к больному месту. И чем быстрее начнете - тем больше ардуин спасёте.

ВН
Offline
Зарегистрирован: 25.02.2016

gecheim пишет:
но при подключении к пинам входа и выхода на плате получается совсем иной результат.

так что там к пинам ардуины воткнули, линии из усби кабеля напрямую?

gecheim
Offline
Зарегистрирован: 03.03.2019

ВН пишет:

gecheim пишет:
но при подключении к пинам входа и выхода на плате получается совсем иной результат.

так что там к пинам ардуины воткнули, линии из усби кабеля напрямую?

Подключил RS-232 разъём, и открыл его для мониторинга.

gecheim
Offline
Зарегистрирован: 03.03.2019

mykaida пишет:

Тут без хрустального шара никак, прости Евгений, пошел оттирать его от пыли.

Уважаемый, а Вы пока может Ваши программы опубликуете?

Вот основной цикл, который и отправляет данные в интерфейс

01int32_t btn_sost; //32 битное число, каждый бит - состояние кнопки.
02 
03void setup()
04{
05  Serial.begin(115200); // скорость обмена с главным контроллером
06 
07  pinMode(BUT1, INPUT); digitalWrite (BUT1, HIGH); //Внутренний подтягивающий резистор
08  pinMode(BUT2, INPUT); digitalWrite (BUT2, HIGH); //Внутренний подтягивающий резистор
09  pinMode(BUT3, INPUT); digitalWrite (BUT3, HIGH); //Внутренний подтягивающий резистор
10  pinMode(BUT4, INPUT); digitalWrite (BUT4, HIGH); //Внутренний подтягивающий резистор
11  pinMode(BUT5, INPUT); digitalWrite (BUT5, HIGH); //Внутренний подтягивающий резистор
12  pinMode(BUT6, INPUT); digitalWrite (BUT6, HIGH); //Внутренний подтягивающий резистор
13  pinMode(BUT7, INPUT); digitalWrite (BUT7, HIGH); //Внутренний подтягивающий резистор
14  pinMode(BUT8, INPUT); digitalWrite (BUT8, HIGH); //Внутренний подтягивающий резистор
15  pinMode(BUT9, INPUT); digitalWrite (BUT9, HIGH); //Внутренний подтягивающий резистор
16  pinMode(BUT10, INPUT); digitalWrite (BUT10, HIGH); //Внутренний подтягивающий резистор
17 
18  pinMode(BUT11, INPUT); digitalWrite (BUT11, HIGH); //Внутренний подтягивающий резистор
19  pinMode(BUT12, INPUT); digitalWrite (BUT12, HIGH); //Внутренний подтягивающий резистор
20  pinMode(BUT13, INPUT); digitalWrite (BUT13, HIGH); //Внутренний подтягивающий резистор
21  pinMode(BUT14, INPUT); digitalWrite (BUT14, HIGH); //Внутренний подтягивающий резистор
22  pinMode(BUT15, INPUT); digitalWrite (BUT15, HIGH); //Внутренний подтягивающий резистор
23  pinMode(BUT16, INPUT); digitalWrite (BUT16, HIGH); //Внутренний подтягивающий резистор
24  pinMode(BUT17, INPUT); digitalWrite (BUT17, HIGH); //Внутренний подтягивающий резистор
25 
26  delay(500);
27}
28 
29void loop()
30{
31  read_sost_btn(); //Функция; читаем текущее состояние кнопок, записываем значение в btn_sost
32  Serial.write('<');
33  Serial.write((char*)&btn_sost, 4);
34  Serial.write('>');
35  delay(loop_period);
36  Serial.print(btn_sost, HEX);
37  delay(30);
38}

Скорости работы выставлял разные, никакого влияния на проблему не оказывает

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

gecheim пишет:
Подключил RS-232 разъём, и открыл его для мониторинга.

Напрямую?!! Посмотните описание стандарта RS232 особенно обратите внимания на напряжения.

gecheim
Offline
Зарегистрирован: 03.03.2019

asam пишет:

Напрямую?!! Посмотните описание стандарта RS232 особенно обратите внимания на напряжения.

Да, напрямую, выход ко входу, вход к выходу и GND к GND. Всегда устройства по RS232 так подключаются. Что тут может быть не правильно?  Или тут какая особенность ардуины, которую я упустил из виду?

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

gecheim пишет:

asam пишет:

Напрямую?!! Посмотните описание стандарта RS232 особенно обратите внимания на напряжения.

Да, напрямую, выход ко входу, вход к выходу и GND к GND. Всегда устройства по RS232 так подключаются. Что тут может быть не правильно?  Или тут какая особенность ардуины, которую я упустил из виду?

Если вы всегда втыкали настольный вентилятор в розетку, то из это не следует,  что воткнутый туда же компьютерный вентилятор будет нормально работать 

Еще раз - посмторите в стандарте RS232 какие там напряжения.

Подсказка : отрицательное напряжение на вход ардуины подавать нельзя, так же как и больше чем Vcc (обычно это 5В)

Совет: не подключайте ардуино к rs232 напрямую и проверьте работает ли она еще через USB.

gecheim
Offline
Зарегистрирован: 03.03.2019

Возможно изначально не совсем понятно выразился, у меня ардуина ничего не слушает, а только вещает, поэтому пин входа платы никак не используется, подключаю только пин выхода и землю.

И вообще я теперь совсем не понимаю, как это пины входа и выхода не соответствуют стандарту RS232, если в них должно уходить всё, записанное в Serial, который дублируется через USB шнурок в компьютер как RS232? Или ардуина на выходе использует другой протокол? Если да, то какой и как с ним взаимодействовать?

sadman41
Offline
Зарегистрирован: 19.10.2016

COM-порт и стандарт RS-232 - это не одно и то же.

ВН
Offline
Зарегистрирован: 25.02.2016

 gecheim, стандартный RS232 имеет логические уровни ±12В, у ардуины - нестандартный, а 0-5ти вольтовый.

И фиг вас поймешь, куда же цепляется выход ардуины. Если на компе есть стандартный  ком-порт, то он должен иметь стандартные уровни. На крайне редких материнках такие порты сейчас имются. 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

ВН пишет:

 gecheim, стандартный RS232 имеет логические уровни ±12В, у ардуины - нестандартный, а 0-5ти вольтовый.

Ну не обязательно ±12В. ±5В который тоже стандардным считается сейчас можно чаще встретить.

Из описания RS232:

Информация передаётся по проводам двоичным сигналом с двумя уровнями напряжения (код NRZ). Логическому «0» соответствует положительное напряжение (от +5 до +15 В для передатчика), а логической «1» — отрицательное (от −5 до −15 В для передатчика). Для электрического согласования линий RS-232 и стандартной цифровой логики UART выпускается большая номенклатура микросхем драйверов, например, MAX232.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

gecheim пишет:

Возможно изначально не совсем понятно выразился, у меня ардуина ничего не слушает, а только вещает, поэтому пин входа платы никак не используется, подключаю только пин выхода и землю.

И вообще я теперь совсем не понимаю, как это пины входа и выхода не соответствуют стандарту RS232, если в них должно уходить всё, записанное в Serial, который дублируется через USB шнурок в компьютер как RS232? Или ардуина на выходе использует другой протокол? Если да, то какой и как с ним взаимодействовать?

Я так понял, что за несколько дней, в описание стандарта RS232 посмотреть вы так и не удосужились. Ну если вам лень помочь самому себе, почему вы расчитываете что другие будут за вас трудиться?

gecheim
Offline
Зарегистрирован: 03.03.2019

sadman41 пишет:

COM-порт и стандарт RS-232 - это не одно и то же.


Вот с этим я никак не могу согласиться. По работе часто работаю с приборами, которые к компьютеру подключаются в COM-порт, и в описании каждого указан интерфейс RS-232. Другое дело, что разъёмы могут использоваться не только привычные по компьютеру DB-9, например встречался RJ*.

Также могу привести ссылки на вики (русскую и английскую), в которых это говорится прямым текстом.

gecheim
Offline
Зарегистрирован: 03.03.2019

ВН пишет:

 gecheim, стандартный RS232 имеет логические уровни ±12В, у ардуины - нестандартный, а 0-5ти вольтовый.

И фиг вас поймешь, куда же цепляется выход ардуины. Если на компе есть стандартный  ком-порт, то он должен иметь стандартные уровни. На крайне редких материнках такие порты сейчас имются. 

Из Вашего сообщения я понял так, что невозможно проверить содержимое на выходе ардуины, при подключении его к компьютеру (я у себя использую переходник USB-COM к ноутбуку).  Я правильно понял?

Исходя из этого появился такой вопрос: если выход одной ардуины соединить со входом другой, и обе соединить по GND, то вторая точно получит отправленные первой данные?

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

gecheim пишет:

Из Вашего сообщения я понял так, что невозможно проверить содержимое на выходе ардуины, при подключении его к компьютеру (я у себя использую переходник USB-COM к ноутбуку).  Я правильно понял?

Ну почему же нельзя. Можно, только подключать надо правильно.

 

 

sadman41
Offline
Зарегистрирован: 19.10.2016

gecheim пишет:

Также могу привести ссылки на вики (русскую и английскую), в которых это говорится прямым текстом.

COM (Communication port[1]) is the original, yet still common, name of the serial port interface on IBM PC-compatiblecomputers. It might refer not only to physical ports, but also to virtual ports, such as ports created by Bluetooth or USB-to-serial adapters.

 

Найдёте в bluetooth  RS-232?

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

gecheim пишет:
если выход одной ардуины соединить со входом другой, и обе соединить по GND, то вторая точно получит отправленные первой данные?
Нет, не точно. Зависит от многих причин. Например, от того, какие в этих ардуинах прошивки, как именно они соединены, в общем - от IQ подключающего.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Ворота пишет:

Зависит от многих причин. Например, от того, какие в этих ардуинах прошивки, как именно они соединены, в общем - от IQ подключающего.

Рабочая гипотеза: Число, получаемое по COM-порту, монотонно зависит от IQ подключающего.

 

Слествие: на основе COM-порта можно сделать недорогой аппаратный IQ-метр.

strarbit
Offline
Зарегистрирован: 12.06.2016

buetooth  Interface: UART and SPP firmware with AT commands.

gecheim
Offline
Зарегистрирован: 03.03.2019

Спустя много времени и сообщений, я смог придти к выводу, что на этом форуме помощи найти невозможно. Ни одного конструктивного ответа не получил, только множество споров о том как правильно называть стандарт подключения последовательного порта и расплывчато-теоретические ответы, которые можно трактовать в абсолютно любом направлении.

Спасибо за внимание.

sadman41
Offline
Зарегистрирован: 19.10.2016

Ответ вам был в этом посте дан дважды. 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

gecheim пишет:

Спустя много времени и сообщений, я смог придти к выводу, что на этом форуме помощи найти невозможно. Ни одного конструктивного ответа не получил, только множество споров о том как правильно называть стандарт подключения последовательного порта и расплывчато-теоретические ответы, которые можно трактовать в абсолютно любом направлении.

Полезные совет вы просто проигнорировали. А именно посмотреть стандарт RS-232 и обратить внимание какими уровнями кодируются логический 0 и 1. Причем выдержка оттуда про это была здесь процитирована. 

Так же вы проигнорировали пределожение использовать MAX232 для согласования уровней. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

gecheim пишет:

Спустя много времени и сообщений, я смог придти к выводу, что на этом форуме помощи найти невозможно. Ни одного конструктивного ответа не получил, только множество споров о том как правильно называть стандарт подключения последовательного порта и расплывчато-теоретические ответы, которые можно трактовать в абсолютно любом направлении.

Спасибо за внимание.

Вы же сами написали, что нужна микросхема преобразователя уровней MAX232, припаяйте к ардуине и будет Вам счастье

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

ua6em пишет:

Вы же сами написали, что нужна микросхема преобразователя уровней MAX232, припаяйте к ардуине и будет Вам счастье

 

Не ТС о MAX232 не писал. Он, похоже, просто читать не умеет.