Например TDA7294

Форум РадиоКот :: Просмотр темы - Подключение библиотеки freemodbus microchip (Atmel) studio
Форум РадиоКот
https://radiokot.ru/forum/

Подключение библиотеки freemodbus microchip (Atmel) studio
https://radiokot.ru/forum/viewtopic.php?f=57&t=183860
Страница 1 из 1

Автор:  improvingsasha [ Вт июл 26, 2022 16:29:59 ]
Заголовок сообщения:  Подключение библиотеки freemodbus microchip (Atmel) studio

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

Вложения:
freemodbus.zip [125.47 KiB]
Скачиваний: 116

Автор:  uk8amk [ Вт июл 26, 2022 17:25:09 ]
Заголовок сообщения:  Re: Подключение библиотеки freemodbus microchip (Atmel) stud

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

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

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

Автор:  improvingsasha [ Ср июл 27, 2022 11:19:37 ]
Заголовок сообщения:  Re: Подключение библиотеки freemodbus microchip (Atmel) stud

Как мне кажется, почти получилось. Создал новый проект, содержимое 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]
Скачиваний: 95
2022-07-27_11-09-03.png [13.6 KiB]
Скачиваний: 70

Автор:  metan [ Ср июл 27, 2022 13:31:02 ]
Заголовок сообщения:  Re: Подключение библиотеки freemodbus microchip (Atmel) stud

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

Автор:  improvingsasha [ Ср июл 27, 2022 14:02:12 ]
Заголовок сообщения:  Re: Подключение библиотеки freemodbus microchip (Atmel) stud

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

Вложения:
2022-07-27_13-58-31.png [57.15 KiB]
Скачиваний: 91

Автор:  ua9ssa [ Пн авг 08, 2022 08:26:55 ]
Заголовок сообщения:  Re: Подключение библиотеки freemodbus microchip (Atmel) stud

То improvingsasha

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

Автор:  improvingsasha [ Пн авг 08, 2022 14:52:52 ]
Заголовок сообщения:  Re: Подключение библиотеки freemodbus microchip (Atmel) stud

Сейчас удалось скомпилировать проект. Помогло произвести замену
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]
Скачиваний: 82

Автор:  ua9ssa [ Пн авг 08, 2022 19:08:26 ]
Заголовок сообщения:  Re: Подключение библиотеки freemodbus microchip (Atmel) stud

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

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/