Проблема со связью по Modbus на малой скорости

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 12
Зарегистрирован: Вт дек 12, 2023 14:29:05

Сообщение Andrew33 »

Приветствую всех.
Возникла проблема. Сопряжено по Modbus устройство на базе ATMega16 c ПК. Программа на основе freemodbus 1.5 отказывается работать на скорости 1200 бод. Со скоростями выше все в порядке.
К ПК подключено через преобразователь RS485-USB
С чем может быть связана такая проблема? Может кто сталкивался?
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 77
Зарегистрирован: Вт апр 08, 2008 11:15:24

Сообщение bitwood »

А осциллограммы смотрели?
Инженерю.
Реклама
Родился
Сообщения: 12
Зарегистрирован: Вт дек 12, 2023 14:29:05

Сообщение Andrew33 »

Нет, не смотрел. Понять бы в какую сторону смотреть. Вроде скорость 1200 стандартная для модбас, и тут такая проблема на ровном месте
uni
Встал на лапы
Аватара пользователя
Сообщения: 137
Зарегистрирован: Пт дек 07, 2007 11:17:40
Откуда: г. Екатеринбург

Сообщение uni »

Не обязательно осциллографом, можно посмотреть логическим анализатором, подключившись прямо к одной из дифф линий. Землю можно не подключать, т.к. она будет через USB преобразователь скорее всего. Это на свой страх и риск.
Россия навсегда!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3011
Зарегистрирован: Вс окт 02, 2016 07:34:45

Сообщение ART_ME »

Я бы посмотрел осциллом реальную скорость передачи 1200 бод с МК.
Например вот так: https://bravikov.wordpress.com/2014/10/ ... 0%B8-uart/
Реклама
Родился
Сообщения: 12
Зарегистрирован: Вт дек 12, 2023 14:29:05

Сообщение Andrew33 »

Проверил тестовой программой. Через USART на ПК идет сигнал на скорости 1200. Похоже проблема в библиотеке Freemodbus
Реклама
Это не хвост, это антенна
Сообщения: 1330
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Сообщение tonyk »

[uquote="Andrew33",url="/forum/viewtopic.php?p=4517039#p4517039"]Проверил тестовой программой. Через USART на ПК идет сигнал на скорости 1200. Похоже проблема в библиотеке Freemodbus[/uquote]
freemodbus использует аппаратный таймер МК для измерения интервалов. Я бы проверил настройки этого таймера.
Друг Кота
Аватара пользователя
Сообщения: 3011
Зарегистрирован: Вс окт 02, 2016 07:34:45

Сообщение ART_ME »

[uquote="Andrew33",url="/forum/viewtopic.php?p=4517039#p4517039"]Через USART на ПК идет сигнал на скорости 1200.[/uquote]И как Вы об этом узнали? 8)
Родился
Сообщения: 12
Зарегистрирован: Вт дек 12, 2023 14:29:05

Сообщение Andrew33 »

Всё, нашел. Это была единственная скорость из моего списка при которой задействован регистр UBRRH. В библиотеке freemodbus применялся только UBRRL
OKF
Это не хвост, это антенна
Сообщения: 1415
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

А так не?:)

Код: Выделить всё

#define BAUD              1200
#include <util/setbaud.h>

UBRRL = UBRRL_VALUE;
UBRRH = UBRRH_VALUE;
Родился
Сообщения: 12
Зарегистрирован: Вт дек 12, 2023 14:29:05

Сообщение Andrew33 »

[uquote="OKF",url="/forum/viewtopic.php?p=4517189#p4517189"]А так не?:)

Код: Выделить всё

#define BAUD              1200
#include <util/setbaud.h>

UBRRL = UBRRL_VALUE;
UBRRH = UBRRH_VALUE;
[/uquote]

Так не. Скорости меняются в процессе работы путем записи в holding reg . Библиотека пересчитывала присланные значения, но почему то только задействуя UBRRL. Поскольку на других скоростях все работало, то проблема всплыла не сразу. Ну.. может кому пригодится инфа
OKF
Это не хвост, это антенна
Сообщения: 1415
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

Существует и другая беда. Есть куча калькуляторов для вычисления значений UBRR. Задал частоту, скорость и ниочём не думай. А вот какие значения будут для 300 bps на 16 мгц, к примеру?
Родился
Сообщения: 12
Зарегистрирован: Вт дек 12, 2023 14:29:05

Сообщение Andrew33 »

[uquote="OKF",url="/forum/viewtopic.php?p=4517737#p4517737"]Существует и другая беда. Есть куча калькуляторов для вычисления значений UBRR. Задал частоту, скорость и ниочём не думай. А вот какие значения будут для 300 bps на 16 мгц, к примеру?[/uquote]

Ну так 3333 ( D05)
OKF
Это не хвост, это антенна
Сообщения: 1415
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

Ой, ошибся.( Нужно было 110. А тогда получается 9090 или 0x2382, чувствуете?
Ответить

Вернуться в «AVR»