Обсуждаем контроллеры компании Atmel.
Ответить

Подключение библиотеки freemodbus microchip (Atmel) studio

Вт июл 26, 2022 16:29:59

Добрый день. Подскажите, как подключить данную библиотеку к проекту в Microchip Studio (проект для atmega32)?
Данная библиотека поддерживается AVR. В скачаном архиве есть папка demo/avr/port, как я понимаю нужно подключать файлы из этой папки или не только из неё?
Папка AVR содержит: demo.c и excoils.c. Я так понимаю, что это файлы демонстрационной программы. Если я подключаю эти файлы и все файлы содержащиеся в папке port через Add>existing item, при попытке компиляции возникает куча ошибок..
Что я делаю не так?
Вложения
freemodbus.zip
(125.47 KiB) Скачиваний: 73

Re: Подключение библиотеки freemodbus microchip (Atmel) stud

Вт июл 26, 2022 17:25:09

.demo - папка с примерами
.port - папка с функциями, переписанными под AVR
demo.c - пример проекта для работы с регистрами Input
excoils.c - пример проекта для работы с функциями дискретных выходов
.modbus - сама библиотека

Чтобы запустилось, надо подключать к проекту все файлы.

У меня тоже было очень много вопросов по freemodbus из-за малого количества примеров и неважного описания. Возникали ошибки связанные со смещением адресов регистров на единицу. Даже не знаю с чем это было связано.

Re: Подключение библиотеки freemodbus microchip (Atmel) stud

Ср июл 27, 2022 11:19:37

Как мне кажется, почти получилось. Создал новый проект, содержимое demo.c скопировал в main.с.
В настройках Toolchain>AVR/CNY C Compiler добавил пути к папкам modbus\functions, demo\AVR\port, modbus\include.
Добавил к проекту файлы из папки modbus\functions
Осталось несколько ошибок.
3 из них связаны как я понял с тем, что студия не может найти реализацию функций eMBInit, eMBEnable и eMBPoll... На самом деле я тоже прошёлся по всем файлам и не нашёл описания этих функций. Где они могут быть запрятаны?
И 1 ошибка связана с .elf файлом, суть которой мне не очень ясна.
Вложения
2022-07-27_11-16-00.png
(98.11 KiB) Скачиваний: 64
2022-07-27_11-09-03.png
(13.6 KiB) Скачиваний: 49

Re: Подключение библиотеки freemodbus microchip (Atmel) stud

Ср июл 27, 2022 13:31:02

improvingsasha писал(а):eMBInit, eMBEnable и eMBPoll... На самом деле я тоже прошёлся по всем файлам и не нашёл описания этих функций. Где они могут быть запрятаны?
Плоховато прошлись :)
Сами функции сидят в файле mb.c, а описания, как принято, include\mb.h

Re: Подключение библиотеки freemodbus microchip (Atmel) stud

Ср июл 27, 2022 14:02:12

Да, невнимательно прошёлся... Спасибо.
После добавления ошибок стало ещё больше). Часть была связана с тем, что в некоторых файлах была упомянута "F_CPU", добавил строку #define F_CPU 14745600UL во все эти файлы, но от всех ошибок это не избавило.
Суть остальных ошибок мне пока не ясна.
Вложения
2022-07-27_13-58-31.png
(57.15 KiB) Скачиваний: 68

Re: Подключение библиотеки freemodbus microchip (Atmel) stud

Пн авг 08, 2022 08:26:55

То improvingsasha

Выложите сюда свои исходники. С первого взгляда непонятно в чем ошибка(и)...

Re: Подключение библиотеки freemodbus microchip (Atmel) stud

Пн авг 08, 2022 14:52:52

Сейчас удалось скомпилировать проект. Помогло произвести замену
SIG_OUTPUT_COMPARE1A -> TIMER1_COMPA_vect
SIG_UART_RECV -> USART_RXC_vect
SIG_UART_DATA -> USART_UDRE_vect
Что так нужно сделать нашёл здесь: viewtopic.php?f=57&t=147747&hilit=freemodbus
Сейчас не пойму как проверить работу этой демо программы. С помощью qmodbus посылаю команды на контроллер. Логическим анализатором проверяю есть ли хоть какой-то ответ, но его нет.
Я так понимаю, что если я делаю не широковещательный запрос с указанием неверного id, то его и не должно быть, верно?
Не совсем понятно что происходит в строчке: eStatus = eMBInit( MB_RTU, 0x0A, 0, 38400, MB_PAR_EVEN ); Что это за конструкция? eStatus - что это за переменная, которой присваивается значение функции eMBInit. В целом, я так понимаю, что здесь происходит инициализация протокола. Адрес устройства: 10, скорость 38400, именно такие параметры я устанавливал в qmodbus.
Непонятно что происходит здесь: eStatus = eMBSetSlaveID( 0x34, TRUE, ucSlaveID, 3 ); Меняется id устройства на 52? И что это за массив констант: const UCHAR ucSlaveID[] = { 0xAA, 0xBB, 0xCC };?
Вложения
ModBus.zip
(170.19 KiB) Скачиваний: 56

Re: Подключение библиотеки freemodbus microchip (Atmel) stud

Пн авг 08, 2022 19:08:26

Проверять и выполнять отладку программы удобнее в Proteus... Завтра посмотрю Ваши исходники
Ответить