Страница 1 из 1

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

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

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

Добавлено: Вт июл 26, 2022 17:25:09
uk8amk
.demo - папка с примерами
.port - папка с функциями, переписанными под AVR
demo.c - пример проекта для работы с регистрами Input
excoils.c - пример проекта для работы с функциями дискретных выходов
.modbus - сама библиотека

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

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

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

Добавлено: Ср июл 27, 2022 11:19:37
improvingsasha
Как мне кажется, почти получилось. Создал новый проект, содержимое demo.c скопировал в main.с.
В настройках Toolchain>AVR/CNY C Compiler добавил пути к папкам modbus\functions, demo\AVR\port, modbus\include.
Добавил к проекту файлы из папки modbus\functions
Осталось несколько ошибок.
3 из них связаны как я понял с тем, что студия не может найти реализацию функций eMBInit, eMBEnable и eMBPoll... На самом деле я тоже прошёлся по всем файлам и не нашёл описания этих функций. Где они могут быть запрятаны?
И 1 ошибка связана с .elf файлом, суть которой мне не очень ясна.

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

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

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

Добавлено: Ср июл 27, 2022 14:02:12
improvingsasha
Да, невнимательно прошёлся... Спасибо.
После добавления ошибок стало ещё больше). Часть была связана с тем, что в некоторых файлах была упомянута "F_CPU", добавил строку #define F_CPU 14745600UL во все эти файлы, но от всех ошибок это не избавило.
Суть остальных ошибок мне пока не ясна.

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

Добавлено: Пн авг 08, 2022 08:26:55
ua9ssa
То improvingsasha

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

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

Добавлено: Пн авг 08, 2022 14:52:52
improvingsasha
Сейчас удалось скомпилировать проект. Помогло произвести замену
SIG_OUTPUT_COMPARE1A -> TIMER1_COMPA_vect
SIG_UART_RECV -> USART_RXC_vect
SIG_UART_DATA -> USART_UDRE_vect
Что так нужно сделать нашёл здесь: https://radiokot.ru/forum/viewtopic.php ... 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 };?

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

Добавлено: Пн авг 08, 2022 19:08:26
ua9ssa
Проверять и выполнять отладку программы удобнее в Proteus... Завтра посмотрю Ваши исходники