Неправильный вывод на пинах RS-232
- Войдите на сайт для отправки комментариев
Вс, 03/03/2019 - 20:46
Здравствуйте.
Столкнулся с проблемой при разработке под Arduino nano. Передаваемые данные по RS-232 интерфейсу, который открывается через USB, соответствуют написанному в скетче и меня удовлетворяют, но при подключении к пинам входа и выхода на плате получается совсем иной результат.
Мне необходимо работать именно с пинами, так как надо подключаться не к компьютеру, а к другому устройству.
Пробовал использовать другие пины, библиотеками AltSoftSerial и SoftwareSerial, но на указанных им пинах вообще не увидел потока данных.
Подскажите с чем может быть связана такая проблема и в сторону чего надо смотреть для её решения.
Тут без хрустального шара никак, прости Евгений, пошел оттирать его от пыли.
Уважаемый, а Вы пока может Ваши программы опубликуете?
Схему соединений в развернутом виде предъявите. Сдаётся мне, что вам нужно прикладывать MAX232 к больному месту. И чем быстрее начнете - тем больше ардуин спасёте.
Подключил RS-232 разъём, и открыл его для мониторинга.
Тут без хрустального шара никак, прости Евгений, пошел оттирать его от пыли.
Уважаемый, а Вы пока может Ваши программы опубликуете?
Вот основной цикл, который и отправляет данные в интерфейс
01
int32_t btn_sost;
//32 битное число, каждый бит - состояние кнопки.
02
03
void
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
29
void
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
}
Скорости работы выставлял разные, никакого влияния на проблему не оказывает
Напрямую?!! Посмотните описание стандарта RS232 особенно обратите внимания на напряжения.
Напрямую?!! Посмотните описание стандарта RS232 особенно обратите внимания на напряжения.
Да, напрямую, выход ко входу, вход к выходу и GND к GND. Всегда устройства по RS232 так подключаются. Что тут может быть не правильно? Или тут какая особенность ардуины, которую я упустил из виду?
Напрямую?!! Посмотните описание стандарта RS232 особенно обратите внимания на напряжения.
Да, напрямую, выход ко входу, вход к выходу и GND к GND. Всегда устройства по RS232 так подключаются. Что тут может быть не правильно? Или тут какая особенность ардуины, которую я упустил из виду?
Если вы всегда втыкали настольный вентилятор в розетку, то из это не следует, что воткнутый туда же компьютерный вентилятор будет нормально работать
Еще раз - посмторите в стандарте RS232 какие там напряжения.
Подсказка : отрицательное напряжение на вход ардуины подавать нельзя, так же как и больше чем Vcc (обычно это 5В)
Совет: не подключайте ардуино к rs232 напрямую и проверьте работает ли она еще через USB.
Возможно изначально не совсем понятно выразился, у меня ардуина ничего не слушает, а только вещает, поэтому пин входа платы никак не используется, подключаю только пин выхода и землю.
И вообще я теперь совсем не понимаю, как это пины входа и выхода не соответствуют стандарту RS232, если в них должно уходить всё, записанное в Serial, который дублируется через USB шнурок в компьютер как RS232? Или ардуина на выходе использует другой протокол? Если да, то какой и как с ним взаимодействовать?
COM-порт и стандарт RS-232 - это не одно и то же.
gecheim, стандартный RS232 имеет логические уровни ±12В, у ардуины - нестандартный, а 0-5ти вольтовый.
И фиг вас поймешь, куда же цепляется выход ардуины. Если на компе есть стандартный ком-порт, то он должен иметь стандартные уровни. На крайне редких материнках такие порты сейчас имются.
gecheim, стандартный RS232 имеет логические уровни ±12В, у ардуины - нестандартный, а 0-5ти вольтовый.
Ну не обязательно ±12В. ±5В который тоже стандардным считается сейчас можно чаще встретить.
Из описания RS232:
Информация передаётся по проводам двоичным сигналом с двумя уровнями напряжения (код NRZ). Логическому «0» соответствует положительное напряжение (от +5 до +15 В для передатчика), а логической «1» — отрицательное (от −5 до −15 В для передатчика). Для электрического согласования линий RS-232 и стандартной цифровой логики UART выпускается большая номенклатура микросхем драйверов, например, MAX232.
Возможно изначально не совсем понятно выразился, у меня ардуина ничего не слушает, а только вещает, поэтому пин входа платы никак не используется, подключаю только пин выхода и землю.
И вообще я теперь совсем не понимаю, как это пины входа и выхода не соответствуют стандарту RS232, если в них должно уходить всё, записанное в Serial, который дублируется через USB шнурок в компьютер как RS232? Или ардуина на выходе использует другой протокол? Если да, то какой и как с ним взаимодействовать?
Я так понял, что за несколько дней, в описание стандарта RS232 посмотреть вы так и не удосужились. Ну если вам лень помочь самому себе, почему вы расчитываете что другие будут за вас трудиться?
COM-порт и стандарт RS-232 - это не одно и то же.
Вот с этим я никак не могу согласиться. По работе часто работаю с приборами, которые к компьютеру подключаются в COM-порт, и в описании каждого указан интерфейс RS-232. Другое дело, что разъёмы могут использоваться не только привычные по компьютеру DB-9, например встречался RJ*.
Также могу привести ссылки на вики (русскую и английскую), в которых это говорится прямым текстом.
gecheim, стандартный RS232 имеет логические уровни ±12В, у ардуины - нестандартный, а 0-5ти вольтовый.
И фиг вас поймешь, куда же цепляется выход ардуины. Если на компе есть стандартный ком-порт, то он должен иметь стандартные уровни. На крайне редких материнках такие порты сейчас имются.
Из Вашего сообщения я понял так, что невозможно проверить содержимое на выходе ардуины, при подключении его к компьютеру (я у себя использую переходник USB-COM к ноутбуку). Я правильно понял?
Исходя из этого появился такой вопрос: если выход одной ардуины соединить со входом другой, и обе соединить по GND, то вторая точно получит отправленные первой данные?
Из Вашего сообщения я понял так, что невозможно проверить содержимое на выходе ардуины, при подключении его к компьютеру (я у себя использую переходник USB-COM к ноутбуку). Я правильно понял?
Ну почему же нельзя. Можно, только подключать надо правильно.
Также могу привести ссылки на вики (русскую и английскую), в которых это говорится прямым текстом.
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?
Зависит от многих причин. Например, от того, какие в этих ардуинах прошивки, как именно они соединены, в общем - от IQ подключающего.
Слествие: на основе COM-порта можно сделать недорогой аппаратный IQ-метр.
buetooth Interface: UART and SPP firmware with AT commands.
Спустя много времени и сообщений, я смог придти к выводу, что на этом форуме помощи найти невозможно. Ни одного конструктивного ответа не получил, только множество споров о том как правильно называть стандарт подключения последовательного порта и расплывчато-теоретические ответы, которые можно трактовать в абсолютно любом направлении.
Спасибо за внимание.
Ответ вам был в этом посте дан дважды.
Спустя много времени и сообщений, я смог придти к выводу, что на этом форуме помощи найти невозможно. Ни одного конструктивного ответа не получил, только множество споров о том как правильно называть стандарт подключения последовательного порта и расплывчато-теоретические ответы, которые можно трактовать в абсолютно любом направлении.
Полезные совет вы просто проигнорировали. А именно посмотреть стандарт RS-232 и обратить внимание какими уровнями кодируются логический 0 и 1. Причем выдержка оттуда про это была здесь процитирована.
Так же вы проигнорировали пределожение использовать MAX232 для согласования уровней.
Спустя много времени и сообщений, я смог придти к выводу, что на этом форуме помощи найти невозможно. Ни одного конструктивного ответа не получил, только множество споров о том как правильно называть стандарт подключения последовательного порта и расплывчато-теоретические ответы, которые можно трактовать в абсолютно любом направлении.
Спасибо за внимание.
Вы же сами написали, что нужна микросхема преобразователя уровней MAX232, припаяйте к ардуине и будет Вам счастье
Вы же сами написали, что нужна микросхема преобразователя уровней MAX232, припаяйте к ардуине и будет Вам счастье
Не ТС о MAX232 не писал. Он, похоже, просто читать не умеет.