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

Обсуждаем контроллеры компании Atmel.
Ответить
improvingsasha
Родился
Сообщения: 4
Зарегистрирован: Вт июл 26, 2022 16:24:36

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

Сообщение improvingsasha »

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

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

Сообщение uk8amk »

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

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

У меня тоже было очень много вопросов по freemodbus из-за малого количества примеров и неважного описания. Возникали ошибки связанные со смещением адресов регистров на единицу. Даже не знаю с чем это было связано.
improvingsasha
Родился
Сообщения: 4
Зарегистрирован: Вт июл 26, 2022 16:24:36

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

Сообщение improvingsasha »

Как мне кажется, почти получилось. Создал новый проект, содержимое 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 КБ) 113 скачиваний
2022-07-27_11-09-03.png
(13.6 КБ) 88 скачиваний
metan
Вымогатель припоя
Сообщения: 593
Зарегистрирован: Ср янв 06, 2010 10:01:46

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

Сообщение metan »

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

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

Сообщение improvingsasha »

Да, невнимательно прошёлся... Спасибо.
После добавления ошибок стало ещё больше). Часть была связана с тем, что в некоторых файлах была упомянута "F_CPU", добавил строку #define F_CPU 14745600UL во все эти файлы, но от всех ошибок это не избавило.
Суть остальных ошибок мне пока не ясна.
Вложения
2022-07-27_13-58-31.png
(57.15 КБ) 109 скачиваний
Аватара пользователя
ua9ssa
Встал на лапы
Сообщения: 120
Зарегистрирован: Чт ноя 08, 2007 12:12:41
Откуда: г.Оренбург
Контактная информация:

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

Сообщение ua9ssa »

То improvingsasha

Выложите сюда свои исходники. С первого взгляда непонятно в чем ошибка(и)...
Истина где-то рядом...
improvingsasha
Родился
Сообщения: 4
Зарегистрирован: Вт июл 26, 2022 16:24:36

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

Сообщение improvingsasha »

Сейчас удалось скомпилировать проект. Помогло произвести замену
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 КБ) 96 скачиваний
Аватара пользователя
ua9ssa
Встал на лапы
Сообщения: 120
Зарегистрирован: Чт ноя 08, 2007 12:12:41
Откуда: г.Оренбург
Контактная информация:

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

Сообщение ua9ssa »

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

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